Генерируйте объект JSON с transactionReceipt

[РЕДАКТИРОВАНИЕ]

Попытка, удаляющая модули джойстика

sudo apt-get purge xserver-xorg-input-joystick

Затем чистый, любые загруженные файлы пакета

sudo apt-get clean

Затем обновляют Ваш список хранилищ

sudo apt-get update

, Затем пытаются переустановить пакет

sudo apt-get install xserver-xorg-input-joystick
8
задан Leo 20 January 2017 в 09:22
поделиться

2 ответа

Я только что исправил это после 2 дней борьбы. Вы должны закодировать квитанцию ​​с использованием Base64 перед вставкой в ​​объект json. Вот так (Ruby):

dataForVerification = {"receipt-data" => Base64.encode64(receipt)}.to_json

Base64 нигде не упоминается в официальных документах (по крайней мере, для SDK 3.0), только в паре блогов.

Например, здесь парень кодирует получение в Base64 перед передачей на сервер PHP, но не декодирует его обратно в PHP, таким образом отправляя строку в кодировке Base64 в iTunes.

20
ответ дан 5 December 2019 в 07:36
поделиться

Re: "21002: java.lang.IllegalArgumentException: propertyListFromString разобрал объект, но в строке еще есть текст.:"

Я исправил подобную проблему в своем коде, обернув данные квитанции в {} перед кодированием.

Полученный чек выглядит так:

{
    "signature" = "A[...]OSzQ==";
    "purchase-info" = "ew[...]fQ==";
    "pod" = "100";
    "signing-status" = "0";
}

Вот код, который я использую:

receipt = "{%s}" % receipt    // This step was not specified - trial and error
encoded = base64.b64encode(receipt)
fullpost = '{ "receipt-data" : "%s" }' % encoded
req = urllib2.Request(url, fullpost)
response = urllib2.urlopen(req)

Ответ Apple:

{"receipt":{"item_id":"371235", "original_transaction_id":"1012307", "bvrs":"1.0", "product_id":"com.foo.cup", "purchase_date":"2010-05-25 21:05:36 Etc/GMT", "quantity":"1", "bid":"com.foo.messenger", "original_purchase_date":"2010-05-25 21:05:36 Etc/GMT", "transaction_id":"11237"}, "status":0}

Удачи!

2
ответ дан 5 December 2019 в 07:36
поделиться