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

问题描述 投票:0回答:1

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

每笔交易都有一个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字段中查找,对吗?

我希望我现在就明白了。我真的认为苹果的文档在这方面相当令人困惑。。

subscription storekit receipt-validation
1个回答
0
投票

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

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.