Tôi đã là những ngày qua cố gắng thử nghiệm ứng dụng iphone mua hàng trong ứng dụng đầu tiên của mình. Thật không may, tôi không thể tìm thấy cách để nói chuyện với máy chủ iTunes để xác minh transactionReceipt.Tạo đối tượng JSON với transactionReceipt
Vì đây là lần đầu tiên tôi thử với công nghệ này, tôi đã chọn xác minh biên nhận trực tiếp từ iPhone thay vì sử dụng hỗ trợ máy chủ. Nhưng sau khi cố gắng gửi yêu cầu POST bằng JSON onbject được tạo bằng cách sử dụng api JSON từ mã google, itunes luôn trả về một phản hồi lạ (thay vì chuỗi "status = 0" mà tôi đợi).
Dưới đây là đoạn code mà tôi sử dụng để xác minh nhận:
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSString *receiptStr = [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"algo mas",@"receipt-data",nil];
NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog(@"string to send: %@",jsonString);
NSLog(@"JSON Created");
urlData = [[NSMutableData data] retain];
//NSURL *sandboxStoreURL = [[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"will create connection");
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
có lẽ tôi đang quên một cái gì đó trong tiêu đề của yêu cầu nhưng tôi nghĩ rằng vấn đề là trong phương pháp tôi sử dụng để tạo ra các đối tượng JSON.
dưới đây là cách đối tượng JSON trông giống như trước khi tôi thêm nó vào HTTPBody:
string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY
...........
D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
Các câu trả lời tôi đã có:
đáp ứng hoàn toàn { ngoại lệ = "java.lang. IllegalArgumentException: Phân tích danh sách thuộc tính thất bại trong khi cố gắng đọc chuỗi không được trích dẫn. Không tìm thấy ký tự cho phép. Tại số dòng: 1, cột: 0. "; trạng thái = 21002; }
Cảm ơn bạn đã hướng dẫn.
Không có tài liệu nào nói rằng 'transactionReceipt' có thể được hiểu là chuỗi được mã hóa UTF-8 – user102008