在调用 restoreCompletedTransactions 之后,对于非消耗品,返回的 SKPaymentTransactions 在它们的 originalTransaction.transactionReceipt 属性中似乎为零。这是文档说我们应该找到原始交易收据的地方:

https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/MakingaPurchase/MakingaPurchase.html#//apple_ref/doc/uid/TP40008267-CH3-SW2

有没有人真的让这不是零 - 如果是这样,如何?

在返回的 SKPaymentTransactions 中,看起来实际正确的 transactionReceipt 位于它们的 transactionReceipt 属性中(而不是它们的 originalTransaction.transactionReceipt 属性)。

最佳答案

它也发生在我身上。

这很奇怪,但即使 Apple 在其文档中声明 transactionReceipt 位于 originalTransaction 中,我还是在原始 transactionReceipt 类中找到了 SKPaymentTransaction

所以,我在选择要传递的交易之前设置了一个小检查:

SKPaymentTransaction *passedTransaction = nil;
if (transaction.transactionReceipt) {
    passedTransaction = transaction;
} else if (transaction.originalTransaction.transactionReceipt) {
    passedTransaction = transaction.originalTransaction;
}

10-08 16:21