Frage Gibt viele Transaktionen für die Bestätigung von iOS-In-App-Einkäufen zurück


Meine App enthält IAP-Verbrauchsartikel, gibt mehr als eine Transaktion zurück, wenn ich den Bestätigungsbeleg mit diesem Code anrufe:

[[NSBundle mainBundle] appStoreReceiptURL];

Gibt es eine Möglichkeit, zurückzukehren? nur letzte Transaktion?

Geht es um das Wiederherstellen von Transaktionen?

Ich habe das überprüft Mehrere Quittungen für den RestoreCompletedTransaction inapp Kauf und das Die iOS In-App-Kaufwiederherstellung gibt viele Transaktionen zurück.

Ich habe versucht, alle Einkäufe wiederherzustellen, aber es hat nicht funktioniert.

Ich benutze diese Zeilen zum Aufruf der Quittung:

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


                           }
                       }];

}

Hinweis: Diese App unterstützt iOS 8+.


6
2017-11-11 20:44


Ursprung


Antworten:


Es steht nicht mit dem Wiederherstellen von Transaktionen in Zusammenhang, weil Apple mit einem Array aller In-App-Transaktionen reagiert, die vom Benutzer bei einer Validierungsanforderung vorgenommen wurden. Die gleichen Informationen sind in der Quittung enthalten, wenn Sie sie lokal dekodieren.

Wenn Sie nach der letzten durchgeführten Transaktion suchen, können Sie das Array in aufsteigender Reihenfolge sortieren purchase_date_ms und nimm den letzten.

Mein Ziel-c ist nicht so heiß, deshalb kann ich Ihnen beim Sortieren nicht helfen, aber dieses Dokument kann helfen: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html


1
2017-11-20 11:38