4

在调用 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 属性)。

4

2 回答 2

3

它也发生在我身上。

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

因此,在选择要继续传递的交易之前,我设置了一个小检查:

SKPaymentTransaction *passedTransaction = nil;
if (transaction.transactionReceipt) {
    passedTransaction = transaction;
} else if (transaction.originalTransaction.transactionReceipt) {
    passedTransaction = transaction.originalTransaction;
}
于 2013-06-17T15:45:06.547 回答
2

我也遇到了同样的问题。似乎transactionReceipton theoriginalTransaction将在恢复购买时始终返回 nil。从苹果文档中的讨论中transactionReceipt

讨论
此属性的内容是未定义的,除非transactionState设置为SKPaymentTransactionStateRestored

由于在恢复(消耗品)期间,transactionState总是设置为SKPaymentTransactionStatePurchased,所以该originalTransaction.transactionReceipt属性将始终为零。

于 2013-09-17T18:26:51.253 回答