サーバー側の受信確認を使用しています。
クライアントの
- (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で何も見つかりませんでした