1

在 IOS 应用程序中,我通常通过将 Apple 的收据列表与我自己处理购买时添加到本地的收据列表进行比较来验证购买是否成功并由我的应用程序处理。这可以防止购买期间应用程序崩溃、错误等可能导致事情不同步的事情。我正在尝试对亚马逊做类似的事情。我在亚马逊文档中反复遇到过这样的关于购买验证/恢复的声明:

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

这是一个巨大的帮助,因为我认为正好相反。不幸的是,我还没有找到其余的想法:“可以在此处找到事务ID:...”。我开始认为他们的交易不提供稳定的 ID...!请告诉我我缺少什么,或者,如果它真的不存在,我该如何防范我上面提到的问题?

4

2 回答 2

0

使用当前的 Amazon IAP api,跟踪您是否通过 PurchaseResponse 对象中的“requestId”履行了 IAP 项目。这个“requestId”可以用作一种伪事务ID。您应该将此 requestId 保存到服务器或设备的本地存储中。

有关更多详细信息,请参阅下面的快速启动链接: https ://developer.amazon.com/appsandservices/apis/earn/in-app-purchasing/docs/quick-start#7

于 2014-05-30T04:57:43.720 回答
0

Amazon IAP 下的initiatePurchaseUpdatesRequest 调用采用偏移参数,该参数是还原点的永久标识符。每次启动时,您都会从您看到的最后一个偏移量(或 Offset.BEGINNING 第一次)开始发出initialPurchaseUpdatesRequest。当响应到来时,您将保存响应的偏移量以供下次启动。这样,任何新的但未记录的销售(由于错误或多个设备问题)都将在下一次启动时被捕获。一个很小的影响是,您实际上可以收到两次购买通知 - 一次是在发生时,一次是在下一次 onPurchaseUpdatesResponse 上。

像往常一样,您还可以让用户手动请求“恢复购买”,该请求会发出带有 Offset.BEGINNING 参数的initialPurchaseUpdatesRequest,以防其他所有操作都失败。

附言。实际的收据验证应该通过使用来自恢复或购买响应的收据值从您自己的服务器调用 Amazon Web 服务来执行。

于 2013-06-15T05:46:02.210 回答