Ich habe die letzten Tage versucht, meine erste In-App-iPhone-Anwendung zu testen. Leider kann ich den Weg nicht finden, mit iTunes Server zu sprechen, um das transactionReceipt zu überprüfen.Erzeuge JSON-Objekt mit transactionReceipt
Da es mein erster Versuch mit dieser Technologie ist, entschied ich mich, den Empfang direkt vom iPhone zu überprüfen, anstatt Server-Unterstützung zu verwenden. Aber nachdem ich versucht habe, die POST-Anfrage mit einem JSON-Objekt zu senden, das mit der JSON-API aus dem Google-Code erstellt wurde, gibt itunes immer eine seltsame Antwort zurück (stattdessen die "status = 0" -Zeichenkette, auf die ich warte).
Hier ist der Code, den ich die Quittung überprüfen verwenden:
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSString *receiptStr = [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"algo mas",@"receipt-data",nil];
NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog(@"string to send: %@",jsonString);
NSLog(@"JSON Created");
urlData = [[NSMutableData data] retain];
//NSURL *sandboxStoreURL = [[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"will create connection");
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
vielleicht etwas in der Anfrage des Header Ich vergesse aber ich denke, dass das Problem bei dem Verfahren, das ich das JSON-Objekt erstellen verwenden.
Hier sind, wie das JSON-Objekt aussieht, bevor ich es den HTTPBody hinzufügen:
string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY
...........
D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
Die Antworten, die ich habe:
vollständige Antwort { Ausnahme = „java.lang. IllegalArgumentException: Das Parsen der Eigenschaftenliste ist fehlgeschlagen, als versucht wurde, eine nicht angeführte Zeichenfolge zu lesen. Es wurden keine zulässigen Zeichen gefunden. Bei Zeilennummer: 1, Spalte: 0. "; Status = 21002; }
Vielen Dank für Ihre Führung.
Nirgendwo in der Dokumentation heißt es, dass das 'transactionReceipt' als UTF-8-codierte Zeichenfolge interpretiert werden kann – user102008