3.3.7
0.59.8
アンドロイド
購入をリクエストするとき、サーバーでレシートを検証します。検証に失敗した場合は、acknowledgepurchaseまたはconsumepurchaseを呼び出さない場合、毎回トリガーされる関数purchaseUpdatedListenerの代わりに、手動で購入をキャンセルできるようにします。
購入が完了していない場合、保留中の購入をキャンセルすることはできません。 アンドロイドでは、自動的にキャンセルされるのを待つ必要があります。
実際のデバイス
購入を行い、acknowledgepurchaseまたはconsumepurchaseを呼び出さないでください。
失敗した場合でも、トランザクションが終了するまでacknowledgePurchase
とconsumePurchase
を呼び出す必要があります。 自分のデータベースに報酬を与えないなどのロジックを進めないだけです。 また、アプリに残らないようにconsmePurchase
使用する必要があります。
@hyochanそうすると、支払いが承認され、ユーザーアカウントに報酬が支払われることなく請求されます。
@tmjordanああ、あなたの言っていることがわかります。 報酬を与えて論理を進めるとどうなりますか?
@hyochanユーザーが商品を購入すると、指定された領収書がGoogleサーバーに送信され、領収書が検証され、購入のステータスが取得されます(支払いが承認された場合、保留中の場合、キャンセルされた場合)。
検証プロセス中にGoogleサーバー(たとえばバックエンド)から来ていないエラーが発生したため、領収書を検証できず、Googleによってキャンセルされるのを待つのではなく、手動で購入をキャンセルしたいとします(その間、私は別の購入をすることはできません)私がaknowledgepurchaseまたはconsumepurchaseを呼び出さない場合。
それが可能かどうかわからない、多分それはグーグルで購入プロセスがどのように機能するかです。
まだ承認または消費されていない購入を手動でキャンセルできると便利です。 そのシナリオでは、支払いが承認された場合、ユーザーは返金されます。
グーグルによってキャンセルされるまで、毎回同じ購入がトリガーされる代わりに。
@tmjordan良い視点をありがとう。 非常に合理的に聞こえますが、 pending
購入が実際に請求されるかどうかはよくわかりません。 pending
購入は、 acknowledged
場合でも請求されるべきではなく、むしろ削除されるべきだと思います。 他の経験についてさらに詳しく説明できることを願っています。
@hyochan 、 finishTransactionIOS
を呼び出して購入履歴から削除することで完了していない購入をキャンセルするために、iOSにそのような機能はありますか? サブスクリプションがまだアクティブであるかどうかを確認する別の方法があるかどうかはわかりませんが、今私がしていることは、受信履歴の最後のトランザクションの有効期限を確認することです。 したがって、購入が完了していない場合は、購入履歴に記録されたくありません。 残念ながら、現時点では、まさにそれが起こっているのです。 また、Androidとは異なり、未完了の購入はしばらく経ってもキャンセルされず、 purchaseUpdateListener
によってトリガーされるのを止めることはありません。
だから私はiOSとAndroidで同じ問題を抱えています、私は完了していない購入をキャンセルする必要があります。 特にiOSでは、サブスクリプションの有効性を確認するためのより効率的な方法がない限り、その購入が履歴に記録されません。
同様のシナリオを処理したい
purchaseUpdateListener
は、finishTransactionIOSが呼び出されるまで何度もトリガーされますが、これは望ましい結果ではありません。 この段階でトランザクションをキャンセルする必要があります。取引をキャンセルする方法はありますか?
最も参考になるコメント
@hyochan 、
finishTransactionIOS
を呼び出して購入履歴から削除することで完了していない購入をキャンセルするために、iOSにそのような機能はありますか? サブスクリプションがまだアクティブであるかどうかを確認する別の方法があるかどうかはわかりませんが、今私がしていることは、受信履歴の最後のトランザクションの有効期限を確認することです。 したがって、購入が完了していない場合は、購入履歴に記録されたくありません。 残念ながら、現時点では、まさにそれが起こっているのです。 また、Androidとは異なり、未完了の購入はしばらく経ってもキャンセルされず、purchaseUpdateListener
によってトリガーされるのを止めることはありません。だから私はiOSとAndroidで同じ問題を抱えています、私は完了していない購入をキャンセルする必要があります。 特にiOSでは、サブスクリプションの有効性を確認するためのより効率的な方法がない限り、その購入が履歴に記録されません。