In-App-Kauf-Quittung, Verifikation innerhalb der app
Ich will, um zu überprüfen, die Transaktion Empfang innerhalb meiner app,
Hier ist mein code,
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSData *receiptData = [NSData dataWithData:transaction.transactionReceipt];
NSString *encodedString = [Base64 encode:receiptData];
NSURL *url = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
[request setPostValue:encodedString forKey:@"receipt-data"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startAsynchronous];
}
Erhalte ich die Ausgabe:
{"status":21002, "exception":"java".lang.NullPointerException"}
Kann mir jemand helfen, um die ordnungsgemäße Empfang Verifizierung?
InformationsquelleAutor der Frage SST | 2011-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur für diejenigen, die finden es vielleicht hilfreich. Ich bemerkte, dass die apple aktualisiert hat, der In-App-Kauf-Guide mit einigen status-Codes, die für den auto-erneuerbare-Abonnement-Käufe scheinen jedoch gelten auch hier.
sandbox-Dienst für die überprüfung.
Wichtig: Die nicht-null-status-codes hier gelten nur bei der Wiederherstellung von Daten über eine auto-erneuerbare-Abonnement. Verwenden Sie nicht diese status-codes beim testen von Reaktionen, die für andere Arten von Produkten. (Wirklich?)
Ich hoffe, das hilft als Referenz. Ich bekam genagelt mit 21007.
Liste der status-codes auf der website von Apple: https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html
InformationsquelleAutor der Antwort Chase
Nach Anzahl der versuche, habe ich beschlossen, die Eingang Prüfung von server-Seite. Eigentlich ist dies der empfohlene Weg.
Hier ist mein code,
Fand ich Hilfe form,
http://gamesfromwithin.com/in-app-purchases-part-3
InformationsquelleAutor der Antwort SST
...sind Sie nicht feuern Ihre Anfrage. Also deine Antwort ist null, weil Sie nicht den Antrag gestellt hat, noch nicht!
Entweder fügen Sie eine
[request startSynchronous]
nennen (was generell eine schlechte Idee, Sie sollten immer führen Sie Ihre Netzwerk-Aufrufe asynchron), oder noch besser: schreib dein code zur Unterstützung einer asynchronen Netzwerk aufrufen und benutzen[request startAsynchronous]
statt.Ich würde vorschlagen, die überprüfung der ASI-Dokumentation, wenn Sie weitere Informationen benötigen:
http://allseeing-i.com/ASIHTTPRequest/How-to-use
InformationsquelleAutor der Antwort lxt
Aus den folgenden Hinweis, den ich verstehen, dass Ihre Anwendung benötigen, verwenden Sie separate server für "Überprüfen Store Receipts". Ich denke, für Quittungen Verifizierung brauchen wir eine Anfrage von der statischen ip.
Dank,
Referenz
InformationsquelleAutor der Antwort Naveen Shan