[РЕДАКТИРОВАНИЕ]
Попытка, удаляющая модули джойстика
sudo apt-get purge xserver-xorg-input-joystick
Затем чистый, любые загруженные файлы пакета
sudo apt-get clean
Затем обновляют Ваш список хранилищ
sudo apt-get update
, Затем пытаются переустановить пакет
sudo apt-get install xserver-xorg-input-joystick
Я только что исправил это после 2 дней борьбы. Вы должны закодировать квитанцию с использованием Base64 перед вставкой в объект json. Вот так (Ruby):
dataForVerification = {"receipt-data" => Base64.encode64(receipt)}.to_json
Base64 нигде не упоминается в официальных документах (по крайней мере, для SDK 3.0), только в паре блогов.
Например, здесь парень кодирует получение в Base64 перед передачей на сервер PHP, но не декодирует его обратно в PHP, таким образом отправляя строку в кодировке Base64 в iTunes.
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}
Удачи!