Как проверить покупки с помощью Amazon IAP API

В приложении IOS я обычно проверяю, что покупки были успешными и были обработаны моим приложением, сравнивая список квитанций Apple со списком, который я добавляю локально, когда я сам обрабатывал покупку. Это защищает от таких вещей, как сбои приложения во время покупки, ошибки и т. д., которые могут привести к рассинхронизации. Я пытаюсь сделать что-то подобное с Amazon. Я неоднократно сталкивался с подобными заявлениями в документации Amazon о проверке/восстановлении покупки:

It is possible for a purchase transaction to have more than one Purchase Token representation, so they should not be used as transaction IDs.

Это было огромной помощью, так как я думал с точностью до наоборот. Остальную часть мысли, к сожалению, не нашел: "Идентификатор транзакции можно посмотреть здесь:...". Я начинаю думать, что их транзакции не предлагают стабильный идентификатор...! Скажите, пожалуйста, чего мне не хватает или, если этого действительно не существует, как я могу защититься от проблем, о которых я упоминал выше?


person Dave    schedule 14.06.2013    source источник


Ответы (2)


Вызов инициироватьPurchaseUpdatesRequest в Amazon IAP принимает параметр смещения, который является постоянным идентификатором точки восстановления. Каждый раз, когда вы запускаете, вы отправляете инициациюPurchaseUpdatesRequest, начиная с последнего смещения, которое вы видели (или Offset.BEGINNING в первый раз). Когда приходит ответ, вы сохраняете смещение от ответа для следующего запуска. Таким образом, любые новые, но незарегистрированные продажи (из-за ошибок или проблем с несколькими устройствами) будут зафиксированы при следующем запуске. Одним из незначительных последствий этого является то, что вы фактически можете получить уведомление о покупке дважды — один раз, когда она происходит, и один раз при следующем отклике onPurchaseUpdatesResponse.

Как обычно, у пользователя также есть возможность вручную запросить «восстановление покупок», которое выдает инициироватьPurchaseUpdatesRequest с параметром Offset.BEGINNING в случае, если ничего не помогает.

Пс. Фактическая проверка квитанции должна выполняться путем вызова веб-службы Amazon с вашего собственного сервера с использованием значений квитанции либо из ответов на восстановление, либо из ответов на покупку.

person DrC    schedule 15.06.2013

С текущим API-интерфейсом Amazon IAP отслеживайте, выполнили ли вы элемент IAP с помощью «requestId» в объекте PurchaseResponse. Этот «requestId» можно использовать как своего рода идентификатор псевдотранзакции. Вы должны сохранить этот requestId на сервере или в локальном хранилище устройства.

Для получения дополнительной информации см. ссылку быстрого запуска ниже: https://developer.amazon.com/appsandservices/apis/earn/in-app-purchasing/docs/quick-start#7

person shunkana    schedule 30.05.2014