在iOS应用内购买收据验证中返回多个交易

7

我的应用程序包含可消耗的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个回答

1
这与恢复交易无关,而是因为苹果在进行验证请求时会回复用户进行的所有应用内交易的数组。如果您在本地解码收据,则相同的信息包含在收据中。
如果您正在寻找最后一笔交易,可以按purchase_date_ms升序对数组进行排序并选择最后一笔。
我的Objective-C不是很好,所以我无法帮助您进行排序,但是这个文档可能会有所帮助:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接