我从客户收到收据并通过苹果服务器验证后,我在此收据中获得了新购买的交易ID(这是自动订购购买)。几天后,我从同一客户获得新收据并验证,发生了奇怪的事情:旧购买的交易ID发生了变化。
我将旧收据中此次购买的数据与新收据中的数据进行比较,唯一的变化是transaction_id字段,original_transaction_id,purchase_date,expires_date, web_order_line_item_id 等字段是完全相同。
比我检查数据库,我发现大约1%的交易记录具有相同的情况。并且有一个特点,他们的大部分交易ID 增加或减少1-2 。
我曾经认为交易ID是购买的标识符。有没有人遇到同样的问题或者知道原因?
答案 0 :(得分:4)
是的,我们也看到了这种情况。我们认为这是由“恢复购买”引发的。按钮点击。
如果您正在恢复购买'按钮使用restoreCompletedTransactions
API,这会导致您的交易ID发生变化。我们已经通过Apple开发人员的支持证实了这一点。
显然你可以打电话给SKReceiptRefreshRequest
而不是重播所有交易。我的理解是,这不会导致交易ID发生变化。
有传闻说,我们已经看到web_order_line_item_id
值在restoreCompletedTransactions
的调用中没有变化。但是,当我们要求确认时,我们只收到了来自Apple开发人员支持的模糊答案:
关于web_order_line_item_id字段,该值将在每次续订时更改。
只要您在续订订阅事件进入时继续存储新值,就可以使用此功能。
我们认为这意味着每次续订购买web_order_line_item_id
都是唯一的。对于restoreCompletedTransactions
此外,我发现此次会议录音在Apple / Google / Amazon重复计费上非常有用(但不是针对这种特殊情况):
Rosa Gutierrez - The recurring nightmare. Implementing cross platform in-app subscription purchases
答案 1 :(得分:1)
基于最新的Apple开发人员文档,
web_order_line_item_id -跨设备购买事件(包括订阅续订事件)的唯一标识符。 此值是识别订阅购买的主要键。
transaction_id -您可以使用此值执行以下操作: