Mam zakup w aplikacji, dla którego chcę zweryfikować pokwitowanie sklepu. Chciałbym to sprawdzić na losowej maszynie w Internecie za pomocą interfejsu API iTunes firmy Apple. Paragon jest przechowywany w Parse po zakończeniu transakcji. Podążam za przewodnikiem po numerze Apple developer website. Po pierwsze mam transakcję z Parse:IllegalStateException podczas używania Curl do sprawdzenia odbioru App Store?
curl -X GET \
-H "X-Parse-Application-Id: [...]" \
-H "X-Parse-REST-API-Key: [...]" \
https://api.parse.com/1/classes/Transactions/123456789
który wygląda następująco:
{
"transactionReceipt":{"__type":"Bytes","base64":"asdfqwertyASDFQWERTY="},
"transactionType":"Purchased",
"transactionIdentifier":"[...]",
"transactionDate":{"__type":"Date","iso":"2012-09-10T06:58:44.071Z"},
"createdAt":"2012-09-10T06:58:37.234Z",
"updatedAt":"2012-09-10T06:58:37.234Z",
"objectId":"HyPWJBlWzt"
}
I wtedy przyjąć wartość base64 wewnątrz transactionReceipt i zwijać go przed końcowym Apple, aby uzyskać pokwitowanie:
curl -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST
-d '{"receipt-data":"asdfqwertyASDFQWERTY="}' \
https://buy.itunes.apple.com/verifyReceipt
Wszystko, co otrzymuję, to niezbyt pomocna pomoc:
{"status":21002, "exception":"java.lang.IllegalStateException"}
co według mnie oznacza "Dane w własności danych pokwitowań były zniekształcone.". Skomplikowanie zwinięcia całej operacji za pomocą --trace-ascii nie ujawniło niczego, co uważałem za istotne, jestem pewien, że problem nie dotyczy samego połączenia.
Nieco zakłopotany tutaj. Wygląda na to, że transakcja została znaleziona na końcu (podkręcenie kilku bajtów w danych-paragonach powoduje wyrzucenie java.lang.IllegalArgumentException), więc domyślam się, że ma to coś wspólnego z samą transakcją. Czy ktoś to wcześniej widział?
Dzięki!
Odpowiedź "21007" nie jest bezużyteczny, mówi dokładnie, co było nie tak: kwit piaskownicy był wysyłany do środowiska produkcyjnego na żywo żelazne. Dlatego sprawdzanie piaskownicy zadziałało. –