Od dawna próbuję przetestować moją pierwszą aplikację iPhone na zakupy w aplikacji. Niestety nie mogę znaleźć sposobu, aby porozmawiać z serwerem iTunes, aby zweryfikować transactionReceipt.Wygeneruj obiekt JSON z transakcjąReceipt
Ponieważ jest to moja pierwsza próba z tą technologią, zdecydowałem się zweryfikować potwierdzenie bezpośrednio z iPhone'a, zamiast korzystać z obsługi serwera. Ale po próbie wysłania żądania POST z onsystemem JSON utworzonym za pomocą api JSON z kodu google, itunes zawsze zwraca dziwną odpowiedź (zamiast tego oczekuję na ciąg "status = 0").
Oto kod, który używam do sprawdzenia otrzymania:
- (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];
}
może jestem zapominając coś w nagłówkach wniosek, ale myślę, że problem jest w metodzie używać do utworzenia obiektu JSON.
Oto jak wygląda obiekt JSON, zanim go dodać do HTTPBody:
string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY
...........
D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
Odpowiedzi ja mam:
pełna odpowiedź { wyjątek = „java.lang. IllegalArgumentException: Parsowanie listy właściwości nie powiodło się podczas próby odczytania niecytowanego ciągu znaków Nie znaleziono dozwolonych znaków W wierszu numer: 1, kolumna: 0. "; status = 21002; }
Wielkie dzięki za wskazówki.
Nigdzie w dokumentacji nie jest napisane, że 'transactionReceipt' może być interpretowane jako kodowany w UTF-8 – user102008