開発者コンソール

RVS Cloud Sandbox環境のセットアップ

RVS Cloud Sandbox環境のセットアップ

RVS Cloud Sandboxは、RVS(レシート検証サービス)用のサンドボックス環境です。この環境を使用して、App Testerで生成されたレシートを検証できます。アプリをAmazonアプリストアで公開する前に、アプリの開発段階でRVS Cloud Sandboxを使用してください。

環境要件

RVS Cloud Sandboxを使用する前に、環境が次の要件を満たしていることを確認してください。

App Tester

RVS Cloud Sandboxは、App Testerで生成されたレシートを検証するために使用されます。RVS Cloud Sandboxを使用する前に、Androidモバイルデバイス/タブレット/Fire TVにAmazon App Testerツールをインストールしておく必要があります。詳細については、App Testerをインストールして構成する方法を参照してください。

App Testerは、アプリでの購入が完了するごとにレシートを送信します。App Testerのレシートをアプリサーバーに渡してから、RVS Cloud Sandboxを呼び出してレシートを検証する必要があります。

セキュアプロトコル

サーバーとRVS Cloud Sandboxとの通信は、HTTPSなどのセキュリティで保護されたプロトコルを使用して安全に行う必要があります。サーバーでは、RVS Cloud Sandboxに検証リクエストを送信し、レスポンスを処理します。

RVSレスポンスオブジェクト

RVS Cloud Sandboxリクエストでは、PurchaseResponseオブジェクトまたはPurchaseUpdatesResponseオブジェクトのデータを使用します。これらのレスポンスオブジェクトから、ユーザーを一意に識別するUserIdを抽出できます。PurchaseResponseオブジェクトにはReceiptIdが含まれています。これをUserIdと共に使用して、サーバー側で購入のアウトオブバンド検証を実行します。

RVS Cloud Sandboxリクエストの送信

RVS Cloud Sandboxを使用するには、HTTPS経由でRVS Cloud Sandboxエンドポイント(https://appstore-sdk.amazon.com/sandbox)にリクエストを送信する必要があります。

リクエストには次の形式を使用します。山かっこで囲まれた用語は下表の値に置き換えてください。

https://appstore-sdk.amazon.com/sandbox/version/{operation-version-number}/verifyReceiptId/developer/{shared-secret}/user/{user-id}/receiptId/{receipt-id}
パラメーター 説明
operation-version-number verifyReceiptIdオペレーションのバージョン番号。このバージョン番号は、IAPのバージョン番号とは関係ありません。現在のverifyReceiptIdバージョン番号は「1.0」です。
shared-secret リクエストを発行した開発者を識別するための共有シークレット。共有シークレットは、開発者コンソールの [共有キー] ページ(https://developer.amazon.com/sdk/shared-key.html)で確認できます。RVS Cloud Sandboxの場合は、空でない任意の文字列を共有シークレットとして使用できます。共有シークレットは本番サーバーに対してのみ検証されるため、RVS Cloud Sandboxサーバーでは共有シークレットは検証されません。
user-id Amazonアプリストアで公開したアプリを使用する個々のAmazonユーザーを表すID。ユーザーIDは、PurchaseResponse.getUserData().getUserId()から取得します。
receipt-id 購入を一意に識別するID。レシートIDは、PurchaseResponse.getReceipt().getReceiptId()またはPurchaseUpdatesResponse.getReceipts()Receipt.getReceiptId()から取得します。

RVS Cloud Sandboxの例

次のリクエストは、RVS Cloud Sandboxでレシートを検証します。

https://appstore-sdk.amazon.com/sandbox/version/1.0/verifyReceiptId/developer/developerSecret/user/l3HL7XppEMhrOGDnur9-ulvqomrSg6qyODKmah76lJU=/receiptId/q1YqVbJSyjH28DGPKChw9c0o8nd3ySststQtzSkrzM8tCk43K6z0d_HOTcwwN8vxCrVV0lEqBmpJzs_VS8xNrMrP0ysuTSo2BAqXKFkZ6SilACUNzQxMzAyNjYyNDQ3MgDKJSlZpiTnFqTpK6UpWJUWlQEYahFELAA

この呼び出しでは、RVS Cloud SandboxサーバーからJSONレスポンスを受け取ります。

{
  "autoRenewing": false,
  "betaProduct": false,
  "cancelDate": null,
  "cancelReason": null,
  "deferredDate": null,
  "deferredSku": null,
  "freeTrialEndDate": 1606985788979,
  "gracePeriodEndDate": 1606985788979,
  "parentProductId": null,
  "productId": "com.amazon.subs1",
  "productType": "SUBSCRIPTION",
  "promotions": null,
  "purchaseDate": 1604613233106,
  "quantity": 1,
  "receiptId": "q1YqVbJSyjH28DGPKChw9c0o8nd3ySststQtzSkrzM8tCk43K6z0d_HOTcwwN8vxCrVV0lEqBmpJzs_VS8xNrMrP0ysuTSo2BAqXKFkZ6SilACUNzQxMzAyNjYyNDQ3MgDKJSlZpiTnFqTpK6UpWJUWlQEYahFELAA",
  "renewalDate": 1606985788979,
  "term": "1 Month",
  "termSku": "com.amazon.subs1_term",
  "testTransaction": true
}

レスポンスのフィールドの説明については、成功したトランザクションのRVSレスポンスフィールドを参照してください。アプリサーバーのセットアップ方法の例については、Appstore SDK IAP用RVS本番環境のセットアップを参照してください。

RVS Cloud Sandboxでのテストレシート

Amazonアプリストアは、RVSの本番環境とサンドボックス環境で別々のフローを管理しています。サンドボックスフローでは、App Testerによってレシートが生成されます。これはテストレシートになります。RVS Cloud Sandboxを使用すると、App Testerによって生成されたレシートを検証できますが、すべての本番シナリオがサポートされているわけではありません。RVS Cloud Sandboxを使用してテストレシートを検証すると、termSkuプロパティの末尾に_termというサフィックスが追加されます。本番RVSでは、termSkuプロパティに_termサフィックスが追加されることはありません。

App Testerのセットアップ時にデバイスにプッシュしたJSONファイルでは、すべての定期購入型アイテムエントリに、その定期購入型アイテムの親とは異なるSKUが割り当てられています。App Testerを通じていずれかのSKUを購入すると、RVS Cloud Sandboxのレスポンスでは、termSkuプロパティの値が次のように生成されます。

  • 定期購入型アイテムのベースSKUがある場合:<subscriptionBase>_term
  • 定期購入型アイテムのベースSKUがない場合:<subscriptionParent>_term

App Testerで使用する定期購入型アイテムのJSONファイルの詳細については、ファイル形式と例: IAPの定期購入型アイテムを参照してください。

ここで例を考えてみましょう。JSONファイル内の条件SKUがCOMMERCE_AMAZONIAP_MOONBUG_001であるとします。定期購入型アイテムのベースSKUはなく、定期購入型アイテムの親SKUはMoonbug_TESTです。この場合、RVS Cloud Sandboxは、レスポンスのtermSkuプロパティにMoonbug_TEST_termという値を返します。


Last updated: 2024年11月6日