一次购买的Apple In-app购买transaction_id有时会发生变化
一旦我从客户那里得到一个收据并通过苹果服务器validation它,那么我在这个收据中得到了一个新购买的交易ID(这是一个自动订购购买)。 几天之后,我从同一个客户那里得到一个新的收据并进行validation,奇怪的事情发生了:那个旧购买的交易ID改变了。
我将旧收据中的购买数据与新收据中的数据进行比较,唯一改变的是transaction_id字段,original_transaction_id,purchase_date,expires_date, web_order_line_item_id和其他字段完全相同。
比我检查数据库,我发现约1%的交易logging有相同的情况。 而且还有一个特点,他们的交易ID大部分是增加或减less了1-2 。
我曾经认为交易ID是购买的标识符。 有没有人遇到同样的问题或知道原因?
是的,我们也看到了这种情况。 我们看到这由'恢复购买'button点击触发。
如果您的“恢复购买”button使用restoreCompletedTransactions
API,则会导致您的交易ID发生更改。 我们已经证实,这与苹果开发者的支持。
显然你可以调用SKReceiptRefreshRequest
来代替重播所有的事务。 这是我的理解,这不会导致交易id改变。
我们已经看到, web_order_line_item_id
值不会在调用restoreCompletedTransactions
发生变化。 但是,当我们要求确认时,我们只得到了苹果开发人员支持部门的一个模糊的答案:
对于web_order_line_item_id字段,值将在每次后续更新时更改。
只要您在更新订阅事件进来时继续存储新值,就可以使用此function。
我们认为这意味着web_order_line_item_id
每个续订购买都是唯一的。 这既不能确认也不能否认在对restoreCompletedTransactions
调用中保持不变
另外,我发现在苹果/谷歌/亚马逊(Amazon)周期性计费上这个会议logging非常有用(虽然不是这种特殊情况):
罗莎古铁雷斯 – 经常性的恶梦。 实施跨平台的应用内订阅购买