開発者コンソール

リアルタイム通知(RTN)について

リアルタイム通知(RTN)について

リアルタイム通知(RTN)は、アプリ内課金(IAP)に関する包括的なデータをリアルタイムで提供するサーバー間プッシュ通知です。この情報を使用して、ユーザーのIAPアイテムに関連する購入ステータスの変更をモニタリングできます。

RTNのしくみ

Amazonアプリストアでは、ユーザーのIAPアイテムの購入ステータスをレシートによって開発者に通知します。レシートには、アプリ申請時に開発者が定義したIAPに関する情報と、注文ステータスが含まれています。現在最新のレシートステータスを取得するには、プルモデルに従い、定期的にレシート検証サービス(RVS)を呼び出して、Amazonのサービスに問い合わせる必要があります。

Amazonアプリストアでは、RTNを使用してリアルタイムのサーバープッシュ通知を提供しています。AmazonのRTNサーバーは、ユーザーの購入に関する情報が含まれる通知を、開発者のバックエンドサーバーに送信します。この情報は、RVSを使用して検証できます。

RTNは、既存のRVSインフラストラクチャに加えて使用可能です。次の図は、RVSとRTNのプロセスがどのようにやり取りするかを示しています。プロセスの詳細については、下の手順の説明を参照してください。

手順1~5: これらの手順は、アプリ内課金(IAP)アプリのレシート検証の「RVSの概要」セクションに記載されているリクエストフローに従います。

手順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)をセットアップします。

  1. ライブアプリテストでIAPの購入を実行します。
  2. 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は開発者のサーバーと通信できるようになります。このリストの変更を定期的に確認してください。