FAQ: アプリ内課金(IAP)に関するよくある質問

FAQ: IAPに関するよくある質問

アプリ内課金 (IAP) API v2.0に関してよくある質問にお答えします。

IAP全般に関する質問

Q: 「IAP」とは何ですか。

A: 「IAP」は、Amazonのアプリ内課金 (In-App Purchasing) 機能の略語です。

Q: ユーザーがアプリ内課金を利用するには、何が必要ですか。

A: ユーザーがアプリ内課金を利用するための要件は、次のとおりです。これは、Amazonクライアントアプリの要件と同じです。

  • Amazonクライアントアプリがユーザーの端末にインストールされていること。
  • ユーザーのアカウントで1-Click注文が有効になっていること。
  • 1-Click注文がサポート対象国のクレジットカードに紐付けられていること。
  • 1-Click注文のお届け先住所が、サポート対象国内にある有効な住所であること。

詳しくは、1-Click設定を変更するを参照してください。

Q: アプリ内課金APIには、ユーザーが誤って二重に購入してしまうのを防ぐ手段は用意されていますか。

A: いいえ。Amazonのポリシーでは、デジタル商品は返金の対象になりません。返金を求める妥当な理由がある場合 (利用端末と互換性のないアプリを購入した場合など)、ユーザーはAmazon.co.jpの「ヘルプとカスタマーサービス」ページにある「カスタマーサービスに連絡」リンクからAmazonカスタマーサービスに問い合わせる必要があります。

Q: アプリ内からAmazonクライアントに直接リンクすることはできますか。

A: はい。アプリ内からAmazonクライアントにリンクする方法については、こちらをご覧ください。

Q: アプリ内課金APIを使うことで、何ができるのですか。

A: アプリ内課金APIを使用すると、ユーザーが有料のデジタルコンテンツや定期購入型アイテムをアプリ内で購入できるようになります。たとえば、ゲーム内通貨、拡張パック、アップグレード、雑誌などをアプリ内課金アイテムとして提供できます。

Q: Amazon端末向けにアプリ内課金を提供するにはどうすれば良いですか。

A: Amazonのアプリ内課金APIは、Amazon端末対応です。

Q: アプリ内課金を提供したい場合、Amazonのアプリ内課金APIを使用しなければなりませんか。

A: はい。アプリをAmazon端末で利用するには、すべての購入においてAmazonのアプリ内課金APIを使用している必要があります。

Q: 現在、自社のアプリでGoogleのアプリ内課金テクノロジーを使用しています。これをこのままAmazon端末で機能させることはできますか。

A: いいえ。Googleのアプリ内課金テクノロジーにはGoogle Mobile Servicesへのアクセスが必要ですが、このサービスはAmazon端末では使用できません。Amazonは、独自のアプリ内課金APIを提供しています。このAPIを通じて、デジタルコンテンツや定期購入型アイテムを簡単に提供することができます。

Q: Amazonでアプリ内課金が発生した場合、収益配分はどうなりますか。

A: Amazonは、App Distribution and Services Agreement (アプリ配信およびサービス契約) に記載されているロイヤルティを開発者にお支払いします。

Q: アプリ内課金アイテムをすべての国で購入可能にするには、どうすればよいですか。

A: アプリ内課金アイテムは、アプリが現在利用できるすべての場所で購入可能です。また、利用できる場所が新しく追加された場合も、自動的に購入できるようになります。デフォルトの設定では、IAPアイテムの基本価格は各マーケットプレイスの現地通貨に自動的に変換され、ユーザーにはIAPアイテムが英語で表示されます。

Q: 一部のマーケットプレイスでアプリ内課金アイテムを販売したくない場合は、どうすればよいですか。

A: そのマーケットプレイスで、アプリ自体を入手できないようにする必要があります。開発者ポータルにサインインし、[マイアプリ] タブを選択します。変更を加えたいアプリを選択し、[配信地域・価格等] タブをクリックします。このタブ上で、アプリを提供したくないマーケットプレイスを見つけ、横にあるチェックボックスをオフにします。

Q: IAPアイテムの価格をマーケットプレイスごとに変更する方法を教えてください。

A: 開発者ポータルにサインインして、[マイアプリ] に移動します。アプリを選択し、[アプリ内アイテム] をクリックし、[配信地域・価格等] タブをクリックします。このタブで、[標準価格を自分で設定します] というラジオボタンをクリックします。すると、通貨とマーケットプレイスごとに価格を編集するためのオプションが表示されます。

Q: アプリ内課金ではペアレンタルコントロールはサポートされていますか。

A: ユーザーは、アプリ内課金を実行する際にAmazonパスワードまたは4桁のPINを要求するよう設定することができます。この設定は、Amazonアプリストアの [設定] メニューから、ペアレンタルコントロールを有効にすることができます。

Q: アプリ内課金APIを利用して販売できるものと、禁止されているものを教えてください。

A: 販売できるものは、デジタル商品、コンテンツ、サービスです。たとえば、機能の追加や拡張、アプリ内ツール、データ、メディアコンテンツなどが挙げられます。いずれもアプリ内でアクセスするため、もしくはアプリ内で使用するためのものに限ります。

それ以外のアイテムをユーザーが購入できるようにすることはできません。たとえば、次のものは販売できません。

  • アプリ外の環境で使用される商品やサービス (アプリ内とアプリ外の両方からアクセス可能なデジタルコンテンツは除く)
  • 通貨、クレジット、ポイントなど、エンドユーザーからほかの人に転送したり、交換媒体として流通させたりすることが可能なアイテムやユニット
  • 初めから入金されているアカウントを提供して、エンドユーザーがその残高からほかのアプリ内課金アイテムを購入できる仕組みを作ること
  • ギフトカード
  • 宝くじ
  • スポーツイベントやコンサートなどのチケット
  • 違法商品、違法である可能性がある商品
  • 公文書、身分証明書、出生証明書、パスポート、ライセンス
  • 不正な商品、ライセンスのない商品
  • Amazonアプリストアのコンテンツポリシー要件に違反するコンテンツ
  • エンドユーザーのプライバシーを侵害するアイテム
  • 保険商品
  • 保証および類似サービスのリスト
  • 政府機関によって規制されている商品またはサービス

Q: そのほか、アプリ内課金の実装に適用される要件はありますか。

A: はい。アイテムが、アプリ内課金の種類に応じたAmazonのプログラムポリシーを守っているだけでなく、適用される法令すべてに必ず準拠している必要があります。法令によってアプリ内課金アイテムの宣伝方法が制限されている場合があります。たとえば、欧州連合 (EU) では、児童にアイテムの購入を直接勧めることは消費者保護の法令によって禁止されています。また法令によって、アプリ内課金アイテムがアプリの機能性を上げるのを一部制限する場合もあります。アプリ内課金に適用されるEUの消費者保護法令を理解するには、EU Consumer Protection Cooperation (CPC) Network’s position (EU Consumer Protection Cooperation (CPC) Networkの位置付け)UK Competition and Markets Authority’s Principles for online and app-based games (英国でのオンラインゲームとアプリゲームに関する競争と市場局の方針) を参考にしてください。

アプリ内課金APIに関する質問

Q: purchaseUpdateResponse()から返されるレシートはソートされていますか。

A: いいえ。返されるレシートはソートされているとは限りません。アプリ側でレシートをソートしてください。

Q: レスポンスを受信する前に購入トランザクションが中断された場合はどうなりますか。

A: レスポンスを受信する前に停電が起きたりネットワーク接続が切断された場合、Amazonサーバーは購入レスポンスをキューに入れます。電源やネットワーク接続が復旧したときに、Amazonクライアントは購入レスポンスをキューから取得することができます。アプリ起動時に毎回getPurchaseUpdates()呼び出しを送信して、Amazonクライアントから送信される購入レシートをチェックしてください。キューに入ったレシートの動作は、アプリ内課金のタイプによって多少異なります。

  • 非消費型アイテムの場合、notifyFulfillment()が呼び出されなかった購入レシートのみがonPurchaseUpdatesResponse()で表示されます。レシートのフルフィルメントが終了している場合、Amazonは消費型アイテム購入トランザクションを完了したものとして扱い、getPurchaseUpdates()の次回の呼び出しでレシートを配信しません。
  • 非消費型アイテムおよび定期購入サービスの場合、購入レシートはonPurchaseUpdatesResponse()で表示されます。購入レシートがキャンセルされたか期限切れの場合、レシートには有効なcancelDateプロパティが設定されます。

Q: UserIdReceiptId、およびmarketplaceの文字列の長さの推奨値はいくつですか。

A: データベースで上記パラメーターに領域を定義する場合、文字列の長さの推奨値は次のとおりです。

  • UserId: UserIdには、128文字を使用してください。文字列に使えるのは、英数字と句読点です。UserIdは暗号化された文字列なので、長さは使用する暗号化技術に左右されることがあります。
  • ReceiptId: ReceiptIdには、200文字を使用してください。文字列に使えるのは、英数字と句読点です。
  • marketplace: marketplace値はISO 3166-1-alpha-2規格に準拠しており、国名を2文字で表します。実際のmarketplace値は、古いバージョンのAmazonアプリストアではnullになることがあります。

Q: notifyFulfillment()の呼び出しは必須ですか。
A: はい、notifyFulfillment()の呼び出しは、3種類すべてのアプリ内課金アイテムにおいて必須です。購入のステータスは、この呼び出しによって追跡されています。

消費型アイテム購入では、購入のフルフィルメント後にnotifyFufillment()を呼び出すことに注意してください。notifyFulfillment()を呼び出さないと、Amazonはユーザーが購入アイテムを受信していないと見なすので、AmazonクライアントはonPurchaseUpdatesResponse()の一部として消費型アイテム購入レシートを送信し続けます。

定期購入型アイテムに関する質問

Q: ユーザーはモバイル端末から定期購入型アイテムを管理できますか。

A: はい。定期購入型アイテムはAmazonクライアントとAmazon Webサイトの両方から管理できます。

Q: ユーザーが自動更新オプションを有効にしているかどうかをアプリで確認する方法はありますか。

A: いいえ。アプリ内課金APIには、ユーザーが自動更新を有効にしているか無効にしているかを確認するメソッドはありません。

Q: ユーザーが無料トライアル付きの定期購入型アイテムを購入した場合、無料トライアル期間は定期購入期間に含まれますか、それとも定期購入期間とは別に追加されますか。

A: 無料トライアル期間は、ユーザーが選択する定期購入期間とは別に追加されます。無料トライアル期間の終了後に、定期購入期間が始まります。たとえば、ユーザーが月単位の定期購入を選択し、アプリに14日間の無料トライアルが付いている場合、ユーザーは最初の14日間無料でコンテンツにアクセスすることができます。14日間の無料トライアル期間が過ぎると、月単位の定期購入期間が始まり、ユーザーへの課金が開始されます。14日間の無料トライアル期間の終了前にユーザーが自動更新を無効にすると、定期購入はそのまま終了し、ユーザーへの課金は行われません。

Q: 定期購入型SKUの購入を開始したときに、別のSKUが返されるのはなぜですか。

A: 定期購入型SKUは、購入できない親SKUと、1つ以上の子SKUで構成されます。親SKUは商品を表し、子SKUは定期購入期間を表します。このような構成にすることで、ユーザーが同じ商品の定期購入型アイテムを重複して購入しないようにしています。親SKUは購入レスポンスで返されるSKUです。子SKUは購入を開始する働きをします。定期購入の期間と課金はAmazonが管理するので、アプリでは定期購入型アイテムが有効かどうかをチェックするだけで済みます。

Q: 定期購入型アイテムを購入したユーザーが、その定期購入をキャンセルし、残存期間に応じた返金を受けることはできますか。

A: いいえ。一度購入された定期購入型アイテムは、その期間を通じて有効になり、キャンセルはできません。ユーザーは自動更新を解除することはできますが、購入済みの定期購入はキャンセルされません。残存期間に応じた返金を求める妥当な理由がある場合、ユーザーはAmazon.co.jpの「カスタマーサービスに連絡」リンクからAmazonカスタマーサービスに問い合わせる必要があります。

Q: receiptIdの値は更新期間ごとに変更されますか。

A: receiptIdが変更されるかどうかは、ユーザーの定期購入が継続して行われたかどうかによって決まります。

  • 定期購入が継続されていて、一度も途中でキャンセルされていない場合、アプリはその定期購入型アイテム/ユーザーに関するレシートを1回のみ受け取る。
  • 定期購入が継続されていない場合、たとえばユーザーが自動更新を選択しておらず、定期購入の期限が切れた1か月後に再び定期購入を開始した場合は、アプリは複数のレシートを受け取る。

Q: purchaseDate値は最初の購入日を表していますか。それとも新しい購入のたびに更新されますか。

A: purchaseDateは最初の購入日を表します。それ以降にアイテムに更新があっても、そのpurchaseDateではありません。

Q: IAP v2.0でも、Receipt Verification Service (RVS) でエンドポイントの更新をリクエストする必要がありますか。

A: いいえ。IAP v2.0のRVSでは、verifyReceiptIdという名前のサービスだけが公開されます。IAP v1.0 RVSのpurchaseTokenのように、リクエストパラメーターの内容を更新する必要はありません。

Q: ユーザーにアプリ上で確かめてもらうことなく、定期購入が更新されたかどうかをバックエンドサーバーで判断することはできますか。できるとすれば、方法を教えてください。

A: ユーザーが定期購入を更新したかどうかを判断することはできません。バックエンドサーバー上で判断できるのは、定期購入型アイテムが有効であるかキャンセル済みであるかだけです。Amazonは、定期購入が無効になるとcancelDateを提供します。cancelDateがnullの場合、ユーザーのその定期購入は引き続き有効です。ユーザーが一度キャンセルした後に再度更新すると、アプリは複数のレシートを受け取ります。キャンセルされた最初の定期購入型アイテムにはcancelDateが設定され、新しい定期購入にはpurchaseDateが追加され、cancelDateがnullの状態になります。

テストに関する質問

Q: IAPを組み込んだアプリをテストするにはどうすればよいですか。

A: アプリをローカルでテストした後、アプリのベータテストを行ってから公開しましょう。

  1. アプリをAmazonアプリストアに申請する前に、App Testerを使ってアプリをテストします。
  2. アプリをAmazonアプリストアに申請した後は、ライブアプリテストサービスを使って本番環境でアプリのベータテストを行います。

Q: 「共有シークレット」とはどのようなもので、どこにありますか。

A: 「共有シークレット」とは、IAPのトランザクションをある決まったベンダーに紐付けし、その開発者にトランザクションのレシートを検証する権利があることを証明するものです。

共有シークレットは、Amazonアプリストアの開発者アカウントの [共有キー] ページにあります。https://developer.amazon.com/sdk/shared-key.html

Q: Amazon App Testerをサンプルアプリで使おうとしたところ、通貨記号が表示されないことに気付きました。また、価格エントリのドロップダウンリストにも詳細情報が表示されません。これは意図的な仕様ですか。

A: はい。SDK TesterやAmazon App Testerでは、通貨記号が意図的に表示されないようになっています。また、価格エントリの詳細情報が表示されないのも意図的です。ProductクラスはPrice(価格)をjava.lang.Stringとして返し、これには通貨記号が含まれています。ユーザーが利用しているマーケットプレイスを検出するために、また返される通貨記号の結果として、UserDataクラスにはgetMarketplace()メソッドがあり、このメソッドを呼び出してISO_3166-1のマーケットプレイスコードを取得できます。Amazonのテストツールでは、通貨記号がJSON文字列から意図的に除外されているので、開発者がこれらの文字列を自分で追加できます。

Q: エントリを選択する時、「3か月ごとの定期購入」エントリを選択したとしても、定期購入型アイテムの表示が常に「1か月ごとの定期購入」となってしまいます。なぜこのようになるのですか。

A: これはApp Testerの制限事項で、既知の問題です。機能には影響しません。

Amazonアプリストアと申請プロセスに関する質問

Q: アイコンやサムネイルなど、IAPアイテム用のアセットは必要ですか。

A: はい。Amazon開発者ポータルでは、各IAPアイテム用のアセットが必要です。ただし、アセットはそのアイテム専用でなくても構いません。

  • アイコンはアプリ内課金の詳細ページおよび購入確認ページに表示されます。
  • サムネイルは外部には表示されませんが、アイテムごとに必要です。

アイテムのアセットはすべてAmazon開発者ポータルにアップロードしてください。

Q: IAPを組み込んだアプリを申請するにはどうすればよいですか。

A: アプリのテストが終わったら、開発者ポータルを通じてアプリをアップロードし、申請してください。

Q: IAPを組み込んだアプリの承認プロセスが早く進むようにするにはどうすればよいですか。

A: 次のようにアプリをローカルでテストした後、Amazonアプリストアに申請してください。

  1. App Testerを使ってアプリをテストします。
  2. Amazon開発者ポータルの [バイナリファイル] タブの [テストインストラクション] 領域に、アプリ内課金を行う方法を記述します。

トラブルシューティング

Q: Amazonクライアントから「不明なエラー」というメッセージが表示され、アプリを再度ダウンロードするように求められています。どうすればよいですか?

A: 「不明なエラー」の原因として最も可能性が高いのは、アプリがAmazonクライアントによるデジタル著作権管理 (DRM) チェックに失敗したケースです。DRMで保護されたアプリをサイドロードすると、DRMチェックが失敗します。内部テストはDRMで保護されていないバージョンのアプリで行ってください。アプリがライブになる前に、AmazonがDRMで保護されたバージョンのアプリのテストを行います。

このエラーが起きる原因としてもう1つ考えられるのは、IAP購入フローの最中にAmazonクライアントアプリがクラッシュしてしまったケースです。これが原因かどうかを確かめるには、Amazonクライアントアプリを強制終了してから、再起動してアプリを正常な状態に戻してみてください。