Gok*_*kin 6 storekit in-app-purchase ios receipt-validation
我的应用程序包含可消耗的IAP产品,当我使用以下代码调用验证收据时返回多个事务:
[[NSBundle mainBundle] appStoreReceiptURL];
Run Code Online (Sandbox Code Playgroud)
有没有办法只返回最后一笔交易?
它与恢复交易有关吗?
我检查了restoreCompletedTransaction inapp purchase的多次收据计数,这个iOS应用内购买恢复返回了许多交易.
我试图恢复所有购买但它没有用.
我正在使用这些线路来拨打收据:
- (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 {
}
}];
Run Code Online (Sandbox Code Playgroud)
}
注意:此应用程序支持iOS 8+.
它与恢复交易无关,这是因为苹果在发出验证请求时响应用户进行的所有应用内交易的数组。如果您在本地对其进行解码,收据中也会包含相同的信息。
如果您正在查找最后一笔交易,您可以按升序对数组进行排序purchase_date_ms并获取最后一笔交易。
我的 Objective-c 不太热,所以我无法帮助您排序,但此文档可能会有所帮助:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html