【Google】アプリ内課金の購入ライフサイクルと通知(RTDN)
GooglePlay のアプリ内課金には、大きく以下の機能があります。
- 1回限りの購入(消費型、非消費型などの都度課金)
- 定期購入(サブスクリプション)
また、上記ライフサイクルサービスの他に、ユーザの購入状態の変化をリアルタイムタイムデベロッパー通知(RTDN)で知らせてくれる機能も提供されています。
ここでは、ライフサイクルの処理とリアルタイムタイムデベロッパー通知の概要について紹介します。
購入ライフサイクルの処理
「1回限りの購入」と「定期購入」は、それらに影響を与える可能性のあるさまざまな状態とイベントに基づいて、異なるライフサイクルを持ちます。
特に定期購入では、常にユーザの購読状態を管理する必要がありましたが、RTDN のおかげで、状態遷移を確認するためのロジックを構築する必要がなくなりました。
よって、バックエンドが通知を受信した時に、通知タイプを見てどうすれば良いのかのハンドリングを定義するだけで済みます。
具体的な購入のシナリオついては、以下の記事を参照してください。

リアルタイムタイムデベロッパー通知(RTDN)とは
リアルタイムデベロッパー通知(以降、RTDN)は、ユーザーの購入状態が変化したときにバックエンドに即時に通知を送信する「Google Cloud Pub/Sub」を使用して構築された機能です。
Pub/Sub システムは、通知を送信するパブリッシャーと、それらの通知を購読するクライアントで構成されています。
RTDN を実装することで、ユーザーの権利状態のすべての変更をリアルタイムで追跡し、迅速に対応できます。
RTDN パブリッシャーの設定
アプリの RTDN を設定するには、セットアップガイドの手順を確認してください。
この設定により、Google Play の課金システムがアプリの RTDN のパブリッシャーとして機能できるようになります。
この設定を完了するには、Google Cloud Platform Console の基本的な Pub/Sub 構成を設定する必要があります。
RTDN サブスクライバーの実装
パブリッシャーを設定したら、RTDN を消費するようにバックエンドの準備をします。
これを行うには、Google Cloud Pub/Sub メッセージを受信するクライアントの構築が必要です。
RTDN クライアントの基本的な機能は、登録されたエンドポイントでの HTTPS リクエストを介して、または Cloud Pub/Sub クライアントライブラリを使用して、PubSubMessage のインスタンスを受信することです。
プッシュまたはプル、どちらの方式を選択かについては、Pub/Sub のドキュメントを参照してください。
バックエンド側の実装
受信した各メッセージに対して、バックエンドは以下を実行する必要があります。
- RTDN オブジェクトを含む base-64 エンコードされたデータフィールドを解凍
- RTDN イベントによって通知された権利変更に関連する必要なバックエンドプロセスをトリガーする
Pub/Sub からのメッセージを https で受信でき、そのメッセージの解析ができれば問題ありません。
Web アプリで構築してもいいですし、AWS のようなクラウドサービスで受けたい場合は API Gateway を経由させてバックエンド側の Lambda に処理させてもいいですね。