【Google】アプリ内課金の保留決済の通知と状態について
Google Play Billing Library 2.0 と言えば、もう 1 つ重要な機能追加があります。
Google Play Billing Library のバージョン 2.0 では、取引が有効になる前に追加のアクションが必須の購入をサポートします。たとえば、ユーザーは実店舗でアプリ内アイテムを現金で購入するよう選択したとします。その場合は、トランザクションがアプリの外部で完了することになります。このシナリオでは、ユーザーがトランザクションを完了した後にのみ利用権を付与する必要があります。
Pending transactions
Google の都度課金と言えば、Android アプリ上で決済が完了してからレシート検証を行い、内容に問題がなければポイントやアイテムの付与を行います。
しかし購入が保留状態の場合は、その時点では決済が完了しないため、アプリを運営するサイト上ではすぐにポイントやアイテム付与を行わないようにしないといけないということです。
保留状態の管理と検知
この場合は保留状態として管理し、外部での購入後、アプリ起動時やデベロッパー通知を通じて購入したことを検知する必要が出てきます。
デベロッパー通知にも「OneTimeProductNotification」が追加されています。
{
"version": string,
"packageName": string
"eventTimeMillis": long
"oneTimeProductNotification": OneTimeProductNotification
"subscriptionNotification": SubscriptionNotification
"testNotification": TestNotification
}
デベロッパー通知については、その後、無効な購入の通知も追加されたので、詳しくは下記の記事をご覧ください。
まとめ
サブスクリプションのデベロッパー通知と混在してくるので、この辺は最初に設計しておきたいところですね。
このフィールドが存在する場合、この通知は 1 回限りのアイテムに関連しています。1 回限りのアイテムに関連する追加情報が格納されます。このフィールドは、testNotification および subscriptionNotification と相互に排他的です。
OneTimeProductNotification