在调用restoreCompletedTransactions之后,对于非消耗品,正在返回的SKPaymentTransactions似乎在其originalTransaction.transactionReceipt属性中具有nil。这是文档说我们应该找到原始transactionReceipt:
的地方有没有人真的认为这不是零 - 如果是的话,怎么样?
在返回的SKPaymentTransactions中,看起来实际上正确的transactionReceipt在其transactionReceipt属性中(而不是它们的originalTransaction.transactionReceipt属性)。
答案 0 :(得分:3)
这也发生在我身上。
这很奇怪,但即使Apple在其文档中指出在transactionReceipt
中找到了originalTransaction
,我在原始transactionReceipt
类中找到了SKPaymentTransaction
。
所以,在选择要传递的事务之前,我已经设置了一点检查:
SKPaymentTransaction *passedTransaction = nil;
if (transaction.transactionReceipt) {
passedTransaction = transaction;
} else if (transaction.originalTransaction.transactionReceipt) {
passedTransaction = transaction.originalTransaction;
}
答案 1 :(得分:2)
我也遇到了同样的问题。在恢复购买时,transactionReceipt
上的originalTransaction
似乎总是会返回nil。来自transactionReceipt
的Apple文档中的讨论:
Discussion
除非transactionState
设置为SKPaymentTransactionStateRestored
,否则此属性的内容是未定义的。
由于(消耗品项目)的恢复期间transactionState
始终设为SKPaymentTransactionStatePurchased
,因此originalTransaction.transactionReceipt
属性始终为零。