在调用 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;
}