Получение чека от текущей покупки в приложении после успешной проверки?

Мне нужна помощь с парсингом ответа проверки чека Apple (песочница). Таким образом, пользователь совершает внутриигровую покупку с помощью приложения для iPhone и отправляет мне квитанцию, которую я проверяю с помощью Apple Services () по PHP. Проверка в порядке, я получил ответ, поэтому теперь мне нужно извлечь идентификатор транзакции, чтобы я мог сохранить его в БД, но я не знаю, какую квитанцию ​​мне следует извлечь из ключа in_app. Там просто нет ни одной квитанции, но есть массив, содержащий также все предыдущие квитанции. Этот ответ получен после того, как в приложении были сделаны «Расходные материалы» и «Невозобновляющаяся подписка».

Я нашел несколько статей, посвященных этому, но КАЖДЫЙ ссылался на квитанцию ​​напрямую, так как это было единственное свойство, которое содержит все данные, но не здесь.

Например. https://github.com/chrismaddern/iOS-Receipt-Validator-PHP выглядит многообещающе, но в итоге он открывает квитанцию ​​следующим образом:

return $decoded_response->receipt;

Не работает для моего ответа. Я думаю, это старый ответ или что-то в этом роде.

Этот также https://gist.github.com/jamesstout/5073237.

Я занимаюсь этим впервые, любая помощь будет признательна, пожалуйста, скажите мне, если вам нужна дополнительная информация, я буду рад указать на это.

Ответ Apple после подтверждения получения
ОБНОВИТЬ:

Обратите внимание на элементы в массиве in_app, которые являются квитанциями, но не отсортированы никаким образом, например, original_purchase_date_pst для первых 4 элементов:

[0] 2015-01-12 10:33:13 Etc/GMT
[1] 2015-01-12 11:35:53 Etc/GMT
[2] 2015-01-12 11:12:36 Etc/GMT
[3] 2015-01-12 11:15:57 Etc/GMT

Я имею в виду, что мог бы перебирать весь массив, но кажется немного странным, что нет более простого способа получить последнюю квитанцию. И могу ли я быть уверен, что в списке будет самая последняя квитанция? Мне нужно получить идентификатор транзакции с него, поэтому я должен быть уверен!

Спасибо!

1

Решение

Поэтому я хочу ответить на этот вопрос, потому что это может кому-то помочь, особенно, если он впервые сталкивается с этим.

То, что вызвало такую ​​структуру ответа, было не на стороне PHP, а на стороне кода iPhone. Я не уверен, что там произошло, но я попросил разработчика прислать мне его описание проблемы, вот оно (цитата):

Проблема была в кодировании квитанции, это была ошибка документации Apple:

введите описание изображения здесь

Apple говорит, что должен использовать стандартный метод base64encoding — после этого мы получаем этот странный ответ с этим массивом in_app receives.

Я нашел на GitHub класс, который делает проверки, которые делают много тестов:

1) отправляет квитанцию ​​в Apple
2) проверяет уникальность ID транзакции
3) проверяет, являются ли объекты квитанции или транзакции действительными

И я видел, что они не использовали стандартный метод кодирования перед отправкой, но они используют пользовательскую категорию NSData + Base64. Я добавил эту категорию в проект и закодировал квитанцию ​​методом из этой категории. После этого я начал получать ответы с новой структурой — той, которая нам нужна — без чеков в массиве, а с одним чеком со всеми необходимыми данными.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]