在app中的App Purchase Receipt验证中 [英] In App Purchase Receipt verification within app
本文介绍了在app中的App Purchase Receipt验证中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在我的应用中验证交易收据,
I want to verify the transaction receipt within my app,
这是我的代码,
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSData *receiptData = [NSData dataWithData:transaction.transactionReceipt];
NSString *encodedString = [Base64 encode:receiptData];
NSURL *url = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
[request setPostValue:encodedString forKey:@"receipt-data"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startAsynchronous];
}
我收到输出:
{status:21002,exception:java.lang.NullPointerException}
{"status":21002, "exception":"java.lang.NullPointerException"}
有人可以帮我收到正确的收据验证吗?
Can someone help me to get proper receipt verification?
推荐答案
经过多次尝试,我决定从服务器端进行收据验证。实际上这是推荐的方式。
After number of tries, I decided to do the receipt verification from server side. Actually this is the recommended way.
这是我的代码,
-(void)recordTransaction:(SKPaymentTransaction *)transaction {
NSString* receiptString = [[[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding] autorelease];
// POST this string to your server
// I used ASIFormDataRequest
}
// server side
$url = 'https://sandbox.itunes.apple.com/verifyReceipt';
// encode the receipt data received from application
$purchase_encoded = base64_encode( $purchase_receipt );
//Create JSON
$encodedData = json_encode( Array(
'receipt-data' => $purchase_encoded
) );
// POST data
//Open a Connection using POST method, as it is required to use POST method.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encodedData);
$encodedResponse = curl_exec($ch);
curl_close($ch);
//Decode response data using json_decode method to get an object.
$response = json_decode( $encodedResponse );
// check response
if ($response->{'status'} != 0)
// Invalid receipt
else
// valid reciept
我找到了帮助表格,
http://gamesfromwithin.com/in-app-purchases-part-3
这篇关于在app中的App Purchase Receipt验证中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文