リアルタイム通知(RTN)について
リアルタイム通知(RTN)は、アプリ内課金(IAP)に関する包括的なデータをリアルタイムで提供するサーバー間プッシュ通知です。この情報を使用して、ユーザーのIAPアイテムに関連する購入ステータスの変更をモニタリングできます。
RTNのしくみ
Amazonアプリストアでは、ユーザーのIAPアイテムの購入ステータスをレシートによって開発者に通知します。レシートには、アプリ申請時に開発者が定義したIAPに関する情報と、注文ステータスが含まれています。現在、最新のレシートステータスを取得するには、プルモデルに従い、定期的にレシート検証サービス(RVS)を呼び出して、Amazonのサービスに問い合わせる必要があります。
Amazonアプリストアでは、RTNを使用してリアルタイムのサーバープッシュ通知を提供しています。AmazonのRTNサーバーは、ユーザーの購入に関する情報が含まれる通知を、開発者のバックエンドサーバーに送信します。この情報は、RVSを使用して検証できます。
RTNは、既存のRVSインフラストラクチャに加えて使用可能です。次の図は、RVSとRTNのプロセスがどのようにやり取りするかを示しています。プロセスの詳細については、下の手順の説明を参照してください。
手順1~5: これらの手順は、レシート検証サービスの概要に記載されているリクエストフローに従います。
手順6: Amazon RTNが、ユーザーのIAPに関する通知メッセージをアプリサーバー(開発者のバックエンドサーバー)に送信します。
手順7: アプリサーバーが、レシートの検証リクエストをRVSサーバーに送信し、レシートに関するすべての情報を取得します。
手順8: RVSサーバーが、レシートの有効性を確認し、レシートに関連付けられた情報を返します。
RTNフロー(手順6~8)は、RVSフローの完了(手順1~5)を待たずにトリガーされます。両方のフローを並行してトリガーできます。
前提条件
RTNを使用する前に、RTNレスポンスを受信するように環境がセットアップされていることを確認する必要があります。次の要件を満たすセキュアバックエンドサーバーがあることを確認します。
- バックエンドサーバーでRTNレスポンスを受信するには、HTTPSエンドポイントが必要です。
- バックエンドサーバーは、Amazonから送信されたHTTPS POSTリクエストを処理できる必要があります。
- バックエンドサーバーは、信頼された証明書プロバイダーから発行された有効なSSL証明書を使用する必要があります。
RTNのライブアプリテスト
以下の手順に従って、RTNのライブアプリテスト(LAT)をセットアップします。
- ライブアプリテストでIAPの購入を実行します。
- Amazonサーバーは、属性
betaProductTransaction=true
を持つRTNペイロードを返します。
RTNメッセージの詳細
RTNは、JSONメッセージを介してHTTPSエンドポイントに配信されます。各通知には、次のJSONペイロードが含まれています。詳細については、Amazon Simple Notification Service(SNS)開発者ガイドを参照してください。
Message
属性のRTNには、次のフィールドを含む、エスケープされたJSONが格納されています。
フィールド | データ型 | 説明 | レスポンスの例 |
receiptId
|
文字列 | 購入の一意の識別子。文字列の最大長は200文字で、英数字と句読点を使用できます。 | kyplB1fdRX1m6/GNAVW0l6jv9Nl1V/GemSopKBHM84w=
|
relatedReceipts
|
マップ | 送信された通知に関連付けられた追加のレシート。 | cancelledReceiptId (SUBSCRIPTION_MODIFIED_IMMEDIATE通知の場合は、その前にキャンセルされたレシートの一意の識別子)
|
appUserId
|
文字列 | Amazonアプリストアで公開したアプリを使用する個々のAmazonユーザーを表す識別子。文字列の最大長は128文字で、英数字と句読点を使用できます。 | wE1EG1gsEZI9q9UnI5YoZ2OxeoVKPdR5bvPMqyKQq5Y=:1:11
|
notificationType
|
文字列 | 通知タイプ。 | 詳細と例については、次のセクションのサポートされている通知の表を参照してください。 |
appPackageName
|
文字列 | アプリを識別するアプリパッケージ名。 | com.myapp.sample.android
|
timestamp
|
長整数 | エポック時間。 | 1402008634018 |
betaProductTransaction
|
ブール型 | トランザクションの対象がライブアプリテスト商品かどうかを示します。 | true /false
|
サポートされている通知タイプ
RTNメッセージには、IAP(定期購入型アイテム、非消費型アイテム、消費型アイテム)に関する情報や課金タイプが含まれます。次の表に、現在利用可能な通知を示します。
通知タイプは、随時追加または変更される場合があります。新しい通知タイプが追加された際は、開発者向けにお知らせします。通常、Amazonでは、該当しない通知タイプはすべて無視することを推奨しています。
通知タイプ | 説明 |
CONSUMABLE_CANCELLED | 消費型アイテムが自発的または意図せずにキャンセルされました。 |
CONSUMABLE_PURCHASED | 消費型アイテムが購入されました。 |
ENTITLEMENT_CANCELLED | 非消費型アイテムが自発的または意図せずにキャンセルされました。 |
ENTITLEMENT_PURCHASED | 非消費型アイテムが購入されました。 |
SUBSCRIPTION_PURCHASED | 定期購入型アイテムが購入されました。 |
SUBSCRIPTION_AUTO_RENEWAL_OFF | 定期購入の自動更新機能がオフになりました。 |
SUBSCRIPTION_CANCELLED | 定期購入型アイテムが自発的または意図せずにキャンセルされました。 |
SUBSCRIPTION_EXPIRED | 定期購入型アイテムの期限が切れました。 |
SUBSCRIPTION_SCHEDULED_TO_END | 自動更新機能がオフになったため、定期購入の終了が予定されています。ユーザーの定期購入が1か月ごとの場合は、終了予定日の10日前に送信されます。ユーザーの定期購入が半年または1年ごとの場合は、終了予定日の30日前に送信されます。 |
SUBSCRIPTION_AUTO_RENEWAL_ON | 定期購入の自動更新機能がオンになりました。 |
SUBSCRIPTION_RENEWED | アクティブな定期購入型アイテムが更新されました。 |
SUBSCRIPTION_CONVERTED_FREE_TRIAL_TO_PAID | アクティブな無料トライアルの定期購入型アイテムが有料の定期購入型アイテムに変換されました。 |
SUBSCRIPTION_IN_GRACE_PERIOD | 定期購入型アイテムの猶予期間が開始されました(有効の場合)。 |
SUBSCRIPTION_OUT_OF_GRACE_PERIOD | 以前猶予期間にあった定期購入型アイテムの支払いに関する問題/エラーをユーザーが修正しました。 |
よくある質問(FAQ)
RTNに関するよくある質問(FAQ)への回答をまとめています。
- Q1:RTNメッセージの形式を教えてください。
- RTNは、指定されたHTTPSエンドポイントにJSONメッセージで配信されます。詳細については、上記の「RTNメッセージの詳細」を参照してください。
- Q2:通知は発行されたとおりの順序で配信されますか?
-
Amazon SNSサービスは、発行者からのメッセージを発行順に配信します。ただし、ネットワークの問題により、HTTPSエンドポイントでメッセージが順序どおりにならない可能性があります。ペイロードのタイムスタンプ属性を確認して、順序どおりになっていないメッセージがないか確認することをお勧めします。
- Q3:どのような配信メカニズムに対応していますか?
-
現時点では、通知の配信方法としてHTTPSエンドポイントのみがサポートされています。HTTPSエンドポイントのセットアップに必要な手順については、Amazon SNS開発者ガイドを参照してください。
- Q4:通知トラフィックの発信範囲はどのようになっていますか?
-
AWSは、トラフィックの発信元となるAmazon IPアドレスのリストを提供します。IPアドレス空間が変更されるたびに、AWSは受信登録者に通知するメカニズムを提供しています。IPアドレス範囲の最新リストについては、AWS IPアドレスの範囲を参照してください。
- Q5:テストトランザクションでHTTPSエンドポイントをテストする方法を教えてください。
-
HTTPSエンドポイントは、ライブアプリテスト(LAT)を使用してテスト可能です。詳細については、前述の「RTNのライブアプリテスト」を参照してください。
- Q6:すべての通知メッセージについてRVS APIを呼び出す必要がありますか?
-
はい。レシート検証サービス(RVS)APIを呼び出して、レシートに関する最新情報を取得することをお勧めします。
- Q7:通知メッセージにはどのようなSLAが関連付けられていますか?
-
RTNサービスでは、レイテンシに関する公式のSLAは提供されません。ただし、ほとんどの通知は、イベント発生から数秒以内に発行される必要があります。
- Q8:AmazonのIPアドレスの許可リストを作成できますか?
-
はい。ただし、これは任意です。開発者がAmazonのIPアドレスを許可すると、Amazonは開発者のサーバーと通信できるようになります。このリストの変更を定期的に確認してください。
Last updated: 2024年5月22日