在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可以在这里找到:......”。我开始认为他们的交易不能提供稳定的身份证......请告诉我我缺少什么,或者如果它确实不存在,我如何能够防范上面提到的问题?
答案 0 :(得分:0)
Amazon IAP下的initiatePurchaseUpdatesRequest调用采用offset参数,该参数是还原点的永久标识符。每次启动时,从您看到的最后一个偏移量开始发出一个initiatePurchaseUpdatesRequest(或第一次Offset.BEGINNING)。当响应进入时,您将保存下次启动时响应的偏移量。通过这种方式,任何新的但未记录的销售(由于错误或多个设备问题)都会在下次启动时被捕获。其中一个很小的影响是,您实际上可以获得两次购买通知 - 一次发生时,一次发送到下一次onPurchaseUpdatesResponse。
与往常一样,您还可以让用户手动请求“恢复购买”,使用Offset.BEGINNING参数发出initiatePurchaseUpdatesRequest,以防所有其他方法都失败。
聚苯乙烯。应通过使用还原或购买回复中的收据值从您自己的服务器调用Amazon Web服务来执行实际收据验证。
答案 1 :(得分:0)
使用当前的Amazon IAP api,通过" requestId"跟踪您是否已完成IAP项目。在PurchaseResponse对象中。这个" requestId"可以用作一种伪事务id。您应该将此requestId保存到服务器或设备的本地存储。
有关详细信息,请参阅下面的快速入门链接: https://developer.amazon.com/appsandservices/apis/earn/in-app-purchasing/docs/quick-start#7