技術系TIPS
PR

【Google】リアルタイムデベロッパー通知(RTDN)

saratogax
記事内に商品プロモーションを含む場合があります

下記で Google のアプリ内課金について紹介しました。

あわせて読みたい
【Google】アプリ内課金の購入ライフサイクルと通知(RTDN)
【Google】アプリ内課金の購入ライフサイクルと通知(RTDN)

Google Play には、リアルタイムデベロッパー通知(Real-time developer notifications: RTDN)が用意されていて、定期購入の更新やキャンセル、商品購入などのイベント発生時に、開発者のサーバーにリアルタイムで通知を送信してくれます。

通知には、イベントの種類や購入トークン、商品IDなどの情報が含まれており、開発者はこの情報を利用して、アプリ内の購入状況を管理できます。

ここでは、Google Play の課金システムにおける​ RTDN について紹介していきます。

RTDNの概要

RTDN は、定期購入の更新、キャンセル、商品購入など、様々なイベントが発生した際に、開発者のサーバーに通知を送信します。

通知は Google の Cloud Pub/Sub を介して配信され、JSON 形式のデータが含まれています。

開発者はこのデータを利用して、サーバー側の購入情報を更新したり、ユーザーへのサービス提供を調整したりできます。

通知データの構造

RTDN の通知データは base64 でエンコードされており、デコードすると DeveloperNotification オブジェクトが得られます。

このオブジェクトには、以下のフィールドが含まれています。

項目内容
version通知のバージョン
packageNameアプリのパッケージ名
eventTimeMillisイベント発生日時(ミリ秒)
subscriptionNotification定期購入に関する通知の場合に含まれるオブジェクト
oneTimeProductNotification一回限りの商品購入に関する通知の場合に含まれるオブジェクト
voidedPurchaseNotification無効化された購入に関する通知の場合に含まれるオブジェクト
testNotificationテスト通知の場合に含まれるオブジェクト

これらのフィールドのうち、以下の項目は相互排他的で、いずれか 1 つだけが存在します。

  • subscriptionNotification
  • oneTimeProductNotification
  • voidedPurchaseNotification
  • testNotification

SubscriptionNotification

定期購入に関する通知で、以下のフィールドを含みます。

項目内容
version通知のバージョン
notificationType通知の種類
purchaseToken購入トークン
subscriptionId定期購入のID(商品ID)

2022 年に subscriptionId は通知から除外されるという説明がドキュメントに追加されましたが、3 年以上経過した今も、この項目は通知に含まれます。

プラン変更(アップグレード・ダウングレード)で、ReplacementMode.DEFERRED を利用した際の通知について、プランが切り替わる前にキャンセルや猶予になる際に subscriptionId が含まれないことを確認しました。
(2025年1月現在、Google が仕様変更をしていなければ)

OneTimeProductNotification

一回限りの商品購入に関する通知で、以下のフィールドを含みます。

項目内容
version通知のバージョン
notificationType通知の種類
purchaseToken購入トークン
sku商品ID

VoidedPurchaseNotification

無効化された購入に関する通知で、以下のフィールドを含みます。

項目内容
purchaseToken購入トークン
orderId注文ID
productType商品タイプ(定期購入or1回限り)
refundType返金タイプ

TestNotification

テスト通知で、以下のフィールドを含みます。

項目内容
version通知のバージョン

RTDNの活用方法

RTDN を利用することで、サーバー側の購入情報をリアルタイムで更新し、ユーザーに適切なサービスを提供できます。

例えば、定期購入の更新通知を受け取ったら、サーバー側でユーザーの有効期限を延長する処理を実行できます。

また、購入の無効化通知を受け取ったら、ユーザーへのアクセス制限などの対応を行うことができます。

RTDNの注意点

RTDN は購入状態の変更を通知するだけで、購入の詳細情報は提供しません。

そのため、通知を受け取った後に、Google Play Developer API を使用して購入の詳細情報を取得し、サーバー側の情報を更新する必要があります。

まとめ

Google の RTDN について紹介してきました。

Google の Cloud Pub/Sub を利用する必要があるので手間ですが、特にサブスクリプション運用には欠かせません。

なお、通知を Pub/Sub に送信するかどうかの設定は、Google Play Console 側で行います。

ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました