在应用程序购买自动新收据格式问题

时间:2013-08-21 21:34:00

标签: in-app-purchase auto-renewing

我有一个可自动更新的应用内购买。当用户第一次注册时,应用程序会收到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

1 个答案:

答案 0 :(得分:0)

将代码更改为

NSString *jsonObjectString = [self encodeBase64:(uint8_t *)transaction.transactionReceipt.bytes
                                         length:transaction.transactionReceipt.length];