在 iOS In-App-Purchases 收据验证上返回许多交易
Posted
技术标签:
【中文标题】在 iOS In-App-Purchases 收据验证上返回许多交易【英文标题】:Returns many transactions on iOS In-App-Purchases receipt validation 【发布时间】:2016-02-13 01:43:47 【问题描述】:我的应用包含消耗性 IAP 产品,当我使用此代码调用验证收据时返回多个交易:
[[NSBundle mainBundle] appStoreReceiptURL];
有没有办法返回只返回最后一笔交易?
它与恢复交易有关吗?
我检查了这个Multiple receipt count for restoreCompletedTransaction inapp purchasing 和这个ios in-app-purchase restore returns many transactions。
我尝试恢复所有购买,但没有成功。
我正在使用这些线路来电回执:
- (void) checkReceipt
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if(!receipt)
NSError *error;
NSDictionary *requestContents = @@"receipt-data": [receipt base64EncodedStringWithOptions:0];
NSLog(@"requestContents:%@", requestContents);
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents
options:0
error:&error];
if (!requestData)
NSURL *storeURL = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:storeURL];
[storeRequest setHTTPMethod:@"POST"];
[storeRequest setHTTPBody:requestData];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:storeRequest queue:queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
if (connectionError)
else
];
注意:此应用支持 iOS 8+。
【问题讨论】:
【参考方案1】:这与恢复交易无关,这是因为苹果在发出验证请求时以用户进行的所有应用内交易的数组进行响应。如果您在本地解码,收据中包含相同的信息。
如果您正在寻找最后一笔交易,您可以按purchase_date_ms
对数组进行升序排序并取最后一笔。
我的 Objective-c 不是很热,所以我无法帮助您进行排序,但此文档可能会有所帮助:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html
【讨论】:
以上是关于在 iOS In-App-Purchases 收据验证上返回许多交易的主要内容,如果未能解决你的问题,请参考以下文章