StoreKit:交易ID和原始交易ID混乱

时间:2020-05-11 13:01:10

标签: subscription storekit receipt-validation

我已经为此苦苦挣扎了几天。我希望我现在就知道了,但是我想和你一起检查。

每笔交易都有一个SKPaymentTransaction。在常规购买中,原始交易属性为空。在还原或自动续订中,原始交易是原始交易SKPaymentTransaction。

我认为最棘手的部分是收到的收据。因此,收据中的每笔交易都包含一个transaction_id和一个original_transaction_id。在一次购买中,它们是相同的;在订阅中,original_transaction_id是用户订阅的第一笔交易的transaction_id。

所以我的第一个问题是:如果我想检查收据中购买的有效性-> SKPayment交易的transactionID仅在收据中显示(如果它不是还原或续签)。否则,SKPaymentTransaction transactionID不在收据中。但是由于在这些情况下,SKPaymentTransaction具有属性originalTransaction,因此原始Transaction.transactionID出现在收据中。正确吗?

现在我一直在苦苦挣扎的第二个问题:因此,SKPaymentTransaction的originalTransaction属性与收据中的original_transaction_id不一定有关系,对吗?我的意思是订阅具有多个续订-如果还原它们,我将获得带有交易ID的SKPaymentTransaction,该ID不在收据中。然后,我取而代之的是此SKPaymentTransaction的originalTransaction.transactionID,并在收据中查找它,但不在收据的original_transaction_id字段中查找,而是在收据的transaction_id字段中查找,对吗?

我希望我现在明白了。.我真的认为Apple的文档非常混乱。

2 个答案:

答案 0 :(得分:0)

是的,在您的sudo npm install imagemin imagemin-cli中有一个属性SKPaymentTransaction。您可以在收据中找到您的original_transaction_id。但是,这不是验证收货的好方法,因为应该使用服务器来完成收货,以避免中间人受到攻击。 我建议您按照Apple的建议通过服务器验证收据。 有一些现成的解决方案,例如我们的Apphud或RevenueCat。

我也建议您阅读有关什么是收据验证以及为何需要它的文章:https://blog.apphud.com/receipt-validation/

答案 1 :(得分:0)

还原设备上的交易将生成唯一的transaction_id。因此,执行此操作后将找不到original_transaction_id。同样的情况发生在不同的设备上,例如iPad,iPhone。如果您需要稳定的标识符,则这些交易的web_order_line_item_id不会更改。