StoreKIt verification error: 21002

匿名 (未验证) 提交于 2019-12-03 02:34:02

问题:

On a iPhone 4/iOS 4 device, sandbox App Store is reporting this error during verification.

21002: The data in the receipt-data property was malformed.

On a iPhone 5/iOS 6 device, the same code works (status == 0, receipt returned) without any problems.

I've restarted the device, made sure the Apple ID is logged out, even made a new test user account. Same result.

Any ideas?

回答1:

This Error means the JSON Object that you have created to send for verification is not in correct format.

{ "receipt-data" : "(receipt bytes here)" }

So My suggestion is to Debug the same on iPhone 4/iOS 4. In case, you are Using Json Framework to create JSON object (for receipt validation) it will work only with iOS 5.0 & above.

Adding Code I had Implemented a few months I Used SBJson to write N parse.

`

NSString *base64TxReceiptStr=[NSData Base64Encode:transaction.transactionReceipt];  SBJsonWriter *writer = [[SBJsonWriter alloc] init]; NSDictionary *command = [NSDictionary dictionaryWithObjectsAndKeys:                          base64TxReceiptStr, @"receipt-data",                          nil]; NSString *jsonString = [writer stringWithObject:command]; NSData *requestBody=[jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSMutableURLRequest *txReceiptVerificationRequest=[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]]; [txReceiptVerificationRequest setHTTPBody:requestBody]; [txReceiptVerificationRequest setHTTPMethod:@"POST"];  NSURLResponse *response=nil; NSError *error=nil; NSData *responseData=[NSURLConnection sendSynchronousRequest:txReceiptVerificationRequest returningResponse:&response error:&error]; NSString * receivedString=[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];   SBJsonParser *parser = [[SBJsonParser alloc] init]; NSDictionary *aobject =[parser objectWithString:receivedString];` 


回答2:

For your sandbox environment use: https://sandbox.itunes.apple.com/verifyReceipt

For actual verification use: https://buy.itunes.apple.com/verifyReceipt

You can check this at Apple's official page.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!