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日