17

サーバー側の受信確認を使用しています。

クライアントの

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

が呼び出され、transactionStateクライアントSKPaymentTransactionStatePurchasedがレシートをサーバーに送信し、サーバーがそれを検証します。

サーバー側の受信検証が成功すると、クライアントは明らかに を呼び出しますがfinishTransaction、問題ありません。

サーバー側の受信検証が失敗した場合、Apple 一時が非 json を返した、またはクライアントが無効な受信を送信したなどの理由で、サーバーはその情報をクライアントに返します。

次に、クライアントは何をすべきでしょうか。電話するべきfinishTransactionですか?

これにより、無効なトランザクションがキューに永久に残りますか? この質問で述べたように: iPhone アプリ内購入: 領収書の確認

ただし、領収書が無効であることがわかった場合は、関連する取引を終了する必要があります。そうでない場合、余分なトランザクションがトランザクション キューに永久に残っている可能性があります。つまり、アプリが実行されるたびに、 paymentQueue:updatedTransaction: がトランザクションごとに 1 回呼び出されます...

しかしfinishTransaction、そうすると、貴重なユーザーはこの領収書 (検証に失敗しました) によって請求されますよね?

または、verify-failed-transaction は一定期間で期限切れになりますか?

これはアップルのドキュメントのどこかに記載されていますか? http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.htmlで何も見つかりませんでした

4

2 に答える 2

3

トランザクションを終了してキューからクリアしますが、検証が失敗した場合は余分なコンテンツを提供しません。無効な領収書である場合、Apple から請求されたものではありません。Apple の検証サーバーが一時的にダウンしているなど、別の原因であることが判明した場合、ユーザーは課金され、ユーザーが購入を復元 (または再度追加) しようとしても、再度課金されることはありません。領収書を確認する別のショット。

Apple のサーバーがダウンしているなどの技術的な理由で検証が失敗した場合は厄介ですが、誰かがあなたのコンテンツを盗むのを防ぐ方法は他にありません。良いニュースは、Apple のサーバーがダウンした場合にポップアップでユーザーに知らせることができ、後で再試行する必要があること、そして最も重要なこととして、再度課金されないことです.

于 2016-02-29T14:46:05.473 に答える