2015-11-11 13 views
6

私のアプリは、私はこのコードで検証領収書を呼び出すときに、複数のトランザクションを返し、消耗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

これはトランザクションを復元することとは関係ありません。これは、Appleが検証要求を行う際にユーザーが行ったすべてのアプリ内トランザクションの配列で応答するためです。ローカルでデコードすると、領収書に同じ情報が含まれます。

最後に行われたトランザクションを探している場合は、配列を昇順に並べ替えて、purchase_date_msで最後のものを取ることができます。

私の目的は - cではないので、私はソートを手伝ってはいけませんが、この文書は役に立ちます:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html

関連する問題