ウェブアプリ向けアプリ内課金(IAP)APIについて
ウェブアプリにはアプリ内課金(IAP)機能を追加できます。Amazon ServicesライブラリによってシンプルなAPIがアプリに提供され、ネイティブのIAP APIとのやり取りが管理されます。
IAP APIの概要
ウェブアプリ向けのIAPは、主に3つの要素で構成されています。
- Amazon Servicesライブラリ - AmazonのネイティブなIAP APIとウェブアプリとのやり取りを管理するJavaScriptクラスです。
- 購入ハンドラー - Amazon Servicesライブラリからのコールバックに応答するため、開発者がウェブアプリにメソッドを実装します。
- レシート検証サービス - ユーザーの購入レシートを検証するために使用できるAmazonのサービスです。
IAP APIをアプリに組み込むには、以下を実行します。
- 購入ハンドラーをAmazon Servicesライブラリに登録する。
- アプリ内の適切な場所でIAP APIのメソッドを呼び出す。
- コールバックメソッドに応答する。
コールバックは、アプリによってトリガーされる場合もあれば、非同期に呼び出される場合もあります。アプリでは、どちらの場合も適切に処理する必要があります。アプリはステートレスになるように構成し、特定の実行状態に依存しないようにしてください。たとえば、アプリの前回のセッションで購入リクエストが開始されたものの、アプリが終了されたためにリクエストが配信されなかったとします。アプリが再起動して購入ハンドラーを登録すると、キューに入っていた購入が新しいセッションに配信されます。
APIフロー
次のリストは、Amazon Servicesライブラリを使用するウェブアプリのフローをまとめたものです。リストの項目番号は、後に示す図の引き出し線の番号に対応しています。
- 購入ハンドラーのメソッドを実装する。
- 購入ハンドラーをAmazon Servicesライブラリに登録する。
- アプリでIAPを開始する。
-
購入ハンドラーのメソッドでレスポンス通知が処理される。
ここまでが必要最小限の手順になります。実際の実装には、次の手順を追加することをお勧めします。
- アプリでレシートを保持する。
- アプリからアプリサーバーにレシートを送信する。
- アプリサーバーが、検証のためにレシートをAmazonレシート検証サービス(RVS)に送信し、レスポンスを受信する。
- アプリサーバーからアプリにレスポンスを送信する。
- アプリで結果を保持する。
Amazon Servicesライブラリ
Amazon Servicesライブラリは、IAP APIに不可欠な要素です。IAP APIを使用して購入プロセスを開始すると、トランザクションを実行するためのAmazonユーザーインターフェイスが、このライブラリによって表示されます。
アプリにJavaScriptライブラリを組み込むには、ウェブアプリのメインHTMLファイルに次の<script>
タグを追加します。
<script src="https://resources.amazonwebapps.com/v1/latest/Amazon-Web-App-API.min.js">
</script>
Amazon IAP APIを使用するコードでは、Amazon HTML5フレームワークによって生成されるamazonPlatformReadyイベントを待機する必要があります。
document.addEventListener('amazonPlatformReady', function () {
if(amzn_wa.IAP) {
//APIを使用するコードをここに記述します
}
});
アプリからIAP APIが呼び出されたとき、ユーザーがAmazonで認証されていなければ、Amazon Servicesライブラリによってユーザー認証が行われます。優れたユーザーエクスペリエンスを確実に提供するために、また、Amazonサービスへのユーザーのログインを確認するために、アプリが起動したらすぐにユーザー認証を行うようにしてください。
ライブラリとAmazonのサービスには、購入ワークフローのあらゆる要素に対応するユーザーインターフェイスが用意されています。購入可能アイテムの表示、1-Click購入そのものの実行、前提条件やエラー状況の処理を行うロジックが含まれています。
購入に失敗した場合は、Amazonクライアントからユーザーにメッセージが表示されます。このため、アプリではメッセージを表示しないでください。たとえば、有効なクレジットカードが登録されていない場合、ユーザーは、ライブラリの処理により支払い情報の更新ページにリダイレクトされます。購入フローに関するユーザーへの確認画面やそのほかのインタースティシャルダイアログを開発者が用意する必要はありません。