当前位置:首页 > 编程开发

AppStore 内购验证的方法

webgou10年前 (2017-02-28)编程开发453

 

 

AppStore增加了验证内购(In App Purchasement)的方法, 就是苹果提供一个url地址, 开发测试用:

https://sandbox.itunes.apple.com/verifyReceipt

产品用:

https://buy.itunes.apple.com/verifyReceipt

当购买成功时, 会得到苹果返回的一个收据(receipt), 苹果推荐的方法是将收据发给开发者的server, 由server像上述地址post http消息, 进行验证, 苹果将结果返回.到底是真正的购买还是虚假的购买.

没有自己server的小伙伴可以用app进行发送, 代码如下.

复制代码
#define ITMS_SANDBOX_VERIFY_RECEIPT_URL     @"https://sandbox.itunes.apple.com/verifyReceipt"#pragma mark - VerifyFinishedTransaction-(void)verifyFinishedTransaction:(SKPaymentTransaction *)transaction{     if(transaction.transactionState == SKPaymentTransactionStatePurchased){         NSString *transactionIdentifier =  transaction.transactionIdentifier;         NSData *transactionReceipt  = transaction.transactionReceipt;         //将transactionIdentifer和加密后的transactionReceipt数据发送给server端                 NSString* receipent = [NSString stringWithFormat:@"%s", transactionReceipt.bytes];                  NSLog(@"receipent = %@", receipent);                  // 在app上做验证, 仅用于测试        NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\", \"password\" : \"%@\"}",                              receipent, transactionIdentifier];         NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];         NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:ITMS_SANDBOX_VERIFY_RECEIPT_URL]];         [request setHTTPMethod:@"POST"];         [request setHTTPBody:payloadData];         NSError* err;         NSURLResponse *theResponse = nil;         NSData *data=[NSURLConnection sendSynchronousRequest:request                                            returningResponse:&theResponse                                                        error:&err];         NSError *jsonParsingError = nil;         NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonParsingError];         NSLog(@"%@", dict);         NSLog(@"done");         } }

 

附:苹果支付错误目录

Status Code Description
21000 The App Store could not read the JSON object you provided.
21002 The data in the receipt-data property was malformed or missing.
21003 The receipt could not be authenticated.
21004 The shared secret you provided does not match the shared secret on file for your account.Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.
21005 The receipt server is not currently available.
21006 This receipt is valid but the subscription has expired. When this status code is returned to your server, the receipt data is also decoded and returned as part of the response.Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.
21007 This receipt is from the test environment, but it was sent to the production environment for verification. Send it to the test environment instead.
21008 This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead.
 

苹果官方文档:https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=603

标签: App Store
分享给朋友:

“AppStore 内购验证的方法” 的相关文章

TCPMP编译方法

 tcpmp是目前支持最多可以用在嵌入式设备中多媒体…

Amplify Shader Editor Beginner – 入門篇

 過往在編寫著色器效果時,都必須要透過大量的電腦圖學、數學計算、渲染流程…等知識來輔佐我們,也因為需要這麼多的事前準備,導致學習著色器的門檻相對較高,讓許多程式、非程式人員不敢輕易的轉動這扇門的把手。而在前些日子中,偶然注意到 Unity 官方所推薦的這一套可視化著色器編輯器…

Linux下修改PATH的方法

比如要把/etc/apache/bin目录添加到PATH中…

打印出:2,3,5,9,17,33,65

打印出:2,3,5,9,17,33,65…

预处理器-编译器-汇编器-链接器

这篇文章主要介绍内部链接与外部链接.…

Windows 中不规则窗体的编程实现

一、序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我 们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣。但在某些娱乐游戏 程序中使用…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。