简体   繁体   English

在iOS In-App-Purchases收据验证中返回许多交易

[英]Returns many transactions on iOS In-App-Purchases receipt validation

My app contains consumable IAP products, returns more than one transactions when I call validation receipt with this code: 我的应用程序包含可消耗的IAP产品,当我使用以下代码调用验证收据时返回多个事务:

[[NSBundle mainBundle] appStoreReceiptURL];

Is there any way to return only last transaction ? 有没有办法返回最后一笔交易

Is it related about restoring transactions? 它与恢复交易有关吗?

I checked this Multiple receipt count for restoreCompletedTransaction inapp purchasing and this iOS in-app-purchase restore returns many transactions . 我检查了restoreCompletedTransaction inapp purchase的多次收据计数 ,这个iOS应用内购买恢复返回了许多交易

I tried to restore all purchases but it didn't work. 我试图恢复所有购买但它没有用。

I'm using these lines for calling receipt: 我正在使用这些线路来拨打收据:

- (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 {


                           }
                       }];

} }

Note: This app supports iOS 8+. 注意:此应用程序支持iOS 8+。

It's not related to restoring transactions, it is because apple responds with array of all in-app transactions made by the user when making a validation request. 这与恢复交易无关,这是因为苹果在做出验证请求时会响应用户所做的所有应用内交易。 The same information is contained in the receipt if you decode it locally. 如果您在本地解码,则收据中包含相同的信息。

If you are looking for the last transaction made you can sort the array ascending by the purchase_date_ms and take the last one. 如果您正在查找最后一个事务,您可以按purchase_date_ms对数组进行排序,然后选择最后一个。

My objective-c is not so hot so I can't help you with sorting but this document may help: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html 我的目标-c不是很热,所以我无法帮助您进行排序,但本文档可能有所帮助: https//developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM