我有一个可自动更新的应用内购买。当用户第一次注册时,应用程序会收到 NSDATA 形式的收据。我把它编码成一个字符串:
[NSString stringWithUTF8String:[receiptData bytes]]];
然后我把它作为一个blob发布到我的服务器上。
然后当用户登录应用程序时,我从服务器获取收据,将其更改为 NSDATA:
[receipt dataUsingEncoding:NSUTF8StringEncoding]
然后我在上面运行一个方法来验证收据是否有效。从我的阅读中,我收集到响应将是更新的收据,或者是某种状态代码,表明其有效与否。
NSString *jsonObjectString = [self encodeBase64:(uint8_t *)receipt.bytes
length:receipt.length];
NSString *itunescombo = @"xxxxxxxxxxxxxxxxxxxxxx";
// Create the POST request payload.
NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\", \"password\" : \"%@\"}",
jsonObjectString, itunescombo];
NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];
NSString *serverURL = ITMS_SANDBOX_VERIFY_RECEIPT_URL;
// Create the POST request to the server.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverURL]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:payloadData];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn start];
然后作为回应,我不断得到:
{"status":21002, "exception":"java.lang.IllegalArgumentException"}
要不就
{"status":21002}
有人可以告诉我哪里出错了吗?该错误意味着收据的格式不正确,但我不确定在所有格式操作之间发生这种情况。
谢谢!R