簡體   English   中英

SKPaymentTransaction 的 originalTransaction.transactionReceipt nil 用於恢復非消耗品

[英]SKPaymentTransaction's originalTransaction.transactionReceipt nil for restore on non-consumable

在調用 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 屬性)。

它也發生在我身上。

這很奇怪,但即使是,它的文檔在蘋果美國transactionReceipt被發現originalTransaction ,我發現transactionReceiptSKPaymentTransaction類。

所以,在選擇要傳遞的事務之前,我已經設置了一點檢查:

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

我也遇到了同樣的問題。 在恢復購買時,似乎originalTransaction上的transactionReceipt將始終返回nil。 來自針對transactionReceipt的apple docs中的討論:

討論
除非將transactionState設置為SKPaymentTransactionStateRestored否則此屬性的內容是未定義的。

由於在(消耗品項目)的恢復期間, transactionState始終設置為SKPaymentTransactionStatePurchased ,因此originalTransaction.transactionReceipt屬性將始終為nil。

我發現original transactionID的 transactionID 是隨機的。 對於不同的交易可以是相同的原始交易,如果這不是恢復購買,您不應該依賴原始交易

來自沙箱https://file.io/ReprC88b2K8Q的示例。 檢查原始交易的 transactionID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM