開発者コンソール

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


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

アプリ内課金(IAP)API v2.0に関するよくある質問への回答をまとめています。

IAP全般に関する質問

Q1:「IAP」とは何ですか?

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

Q2:ユーザーがIAPを利用するためには何が必要ですか?

ユーザーがIAPを利用するための要件は、Amazonクライアントアプリの要件と同じです。

  • Amazonクライアントアプリがユーザーのデバイスにインストールされていること
  • ユーザーのアカウントで1-Click注文が有効になっていること
  • 1-Click注文が、サポート対象の国や地域のクレジットカードに紐付けられていること
  • 1-Click注文のお届け先住所が、サポート対象の国や地域の有効な住所であること
1-Click設定を変更するを参照してください。
Q3: アプリを宣伝するために、アプリ内からAmazonクライアントへの直接リンクを設定することはできますか?

はい。アプリ内からAmazonクライアントにリンクする方法についてはアプリ内でAmazon関連ページへのリンクを設定する方法を参照してください。

Q4: IAP APIを使用するには、何から始めればよいですか?

アプリ内課金(IAP)についてを参照し、使用するテクノロジーの要件を確認してください。Android向けのIAP開発については、アプリ内課金(IAP)の実装についてを参照してください。ウェブアプリ向けのIAP開発については、ウェブアプリ向けアプリ内課金(IAP)APIについてを参照してください。

Q5: アプリ内でデジタル商品を購入できるようにするには、Amazon IAP APIを使用する必要がありますか?

はい。アプリをAmazonアプリストアで利用できるようにするには、アプリ内でのすべての購入に対してAmazon IAP APIを使用する必要があります。

Q6: IAP APIを使用する必要がある対象アイテムはどれですか?

アプリ内でデジタル商品やサービスを販売する場合、Amazon IAP APIの使用は必須です。IAPには、以下のような形式があります。

  • 消費型アイテムの購入:追加のライフやレベル、ゲーム内の通貨などが当てはまります。
  • プレミアムバージョンの購入:広告が非表示になるアプリバージョンなどが当てはまります(通常、このようなIAPアイテムには有効期限がありません)。
  • 定期購入型アイテムの購入:音楽ストリーミング、雑誌、クラウドストレージなどが当てはまります。
Q7: AmazonのIAP以外の支払い方法を使用する場合、どのような商品を販売できますか?

ユーザーがアプリ外でアクセスしたり、使用したりすることを目的とした実物商品やサービスについては、Amazon IAP API以外の支払い方法を使用する必要があります。以下のアイテムを販売する場合は、クレジットカードまたはサードパーティの決済サービスを使用してください。

  • 衣類、日用雑貨、電子機器
  • 輸送および配送サービス
  • 航空運賃、イベントや映画のチケット、ギフトカード
  • 保証関連の商品および類似サービス
  • 保険商品
  • 非営利活動のための寄付
Q8: Amazonアプリストアで販売できないものはありますか?

Amazonアプリストアでは、以下のアイテムの販売が禁止されています。

  • 通貨、クレジット、ポイントなど、エンドユーザーからほかの人に譲渡したり、交換媒体として流通させたりすることが可能なアイテムやユニット
  • エンドユーザーがほかのIAPアイテムを購入できるようになるプリペイド口座
  • 宝くじ
  • 公文書、身分証明書、出生証明書、パスポート、免許証
  • 不正な商品、ライセンスのない商品
  • こちらに記載されたAmazonアプリストアのコンテンツポリシーに違反するコンテンツ
  • エンドユーザーのプライバシーを侵害するアイテム
  • 酒類、タバコ、薬物、火器など、政府機関によって規制されている商品またはサービス
  • 違法商品、違法である可能性がある商品
Q9: GoogleのIAPテクノロジーを使用しているのですが、Amazonデバイスでも利用可能ですか?

いいえ。GoogleのIAPテクノロジーにはGoogle Mobile Servicesへのアクセスが必要ですが、同サービスはAmazonデバイスでは動作しません。

Q10: IAPアイテムをすべての国や地域で購入可能にするには、どうすればよいですか?

IAPアイテムは、そのアプリが現在提供されている、または今後提供される国と地域で、自動的に購入可能になります。デフォルトの設定では、IAPアイテムの標準価格は各マーケットプレイスの現地通貨に自動的に換算され、ユーザーにはIAPアイテムが英語で表示されます。

Q11: 特定のマーケットプレイスでIAPアイテムを販売したくない場合は、どうすればよいですか?

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

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

開発者ポータルにログインし、[マイアプリ] に移動します。アプリを選択し、[アプリ内課金(IAP)アイテム] をクリックして、[配信地域・価格] タブをクリックします。このタブで、[その他マーケットプレイスにおける希望販売価格を手動で設定する] というラジオボタンをクリックします。通貨とマーケットプレイスごとに価格を編集するためのオプションが表示されます。

Q13: IAPが発生した場合、Amazonとの収益配分はどうなりますか?

Amazonは、Amazon Developer Services Agreementに記載されているロイヤルティを開発者にお支払いします。

Q14: IAPではペアレンタルコントロールはサポートされていますか?

ユーザーは、IAPを実行するときにAmazonパスワードまたは4桁のPINを要求するように設定できます。この機能には、Amazonアプリストアの [設定] メニューからアクセスできます。

Q15: IAP APIには、ユーザーが誤って二重に購入してしまうのを防ぐ手段は用意されていますか?

IAP APIにそのような機能はありません。ただし、ペアレンタルコントロールを使用することで、誤った二重購入を防ぐことは可能です。

Q16: そのほか、IAPの実装に適用される要件はありますか?

はい。IAPアイテムのタイプに応じたAmazonのプログラムポリシーに従うだけでなく、適用される法令すべてに準拠していることを確認する必要があります。法令によっては、IAPアイテムの宣伝方法が制限されることがあります。たとえば、欧州連合(EU)では、児童にアイテムの購入を直接勧めることは消費者保護法によって禁止されています。また、IAPアイテムの購入によるアプリの機能への影響が制限される場合もあります。IAPに適用されるEUの消費者保護法を理解するには、EU Consumer Protection Cooperation(CPC)Networkの見解(英語のみ)と英国競争・市場庁のオンラインゲームとアプリゲームに関する方針(英語のみ)を参考にしてください。

IAP APIに関する質問

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

いいえ。返されるレシートはソートされているとは限りません。必要に応じて、アプリでレシートをソートできます。

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

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

  • 消費型アイテムでは、notifyFulfillment()が呼び出されなかった購入レシートだけがonPurchaseUpdatesResponse()に渡されます。アイテム付与が完了しているレシートの場合、その消費型アイテムの購入トランザクションは完了したものとして扱われ、次回のgetPurchaseUpdates()の呼び出し時にレシートが配信されることはありません。
  • 非消費型アイテムおよび定期購入型アイテムについては、購入レシートがonPurchaseUpdatesResponse()に渡されます。購入レシートがキャンセルされた場合または期限切れの場合、そのレシートには有効なcancelDateプロパティが設定されます。
Q3: UserIdReceiptIdmarketplaceの文字列の長さとして推奨される値はどのくらいですか?

データベースにこれらのパラメーターの格納領域を定義する場合、各文字列の長さの推奨値は次のとおりです。

  • UserIdUserIdの長さは128文字までです。 この文字列には英数字と句読点を使用できます。UserIdは暗号化された文字列であるため、その長さは使用する暗号化技術に左右されることがあります。
  • ReceiptIdReceiptIdの長さは200文字までです。 この文字列には英数字と句読点を使用できます。
  • marketplacemarketplace値はISO 3166-1-alpha-2規格に準拠しており、国、地域、地理的範囲を2文字のコードで表します。実際のmarketplace値は、古いバージョンのAmazonアプリストアではnullになることがあります。
Q4: notifyFulfillment()の呼び出しは必須ですか?
はい。3つのどのタイプのIAPアイテムでも、notifyFulfillment()を呼び出す必要があります。この呼び出しにより、購入のステータスがトラッキングされます。消費型アイテムの購入では、購入アイテムを付与した後にnotifyFufillment()を呼び出してください。notifyFulfillment()を呼び出さないと、ユーザーが購入アイテムを受け取っていないと見なされ、AmazonクライアントからonPurchaseUpdatesResponse()を通じて消費型アイテムの購入レシートが送信され続けてしまいます。

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

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

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

Q2: 定期購入型アイテムの親SKUに価格の値がないのはなぜですか?

価格情報は子SKUに関連付けられます。これは、それぞれの子SKUが別々の定期購入期間を表しているためです。価格は定期購入期間によって異なるので、親SKUには価格がありません。

Q3: ユーザーはモバイルデバイスから定期購入型アイテムを管理できますか?

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

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

いいえ。IAP APIには、ユーザーが自動更新を有効にしているか無効にしているかを確認するメソッドはありません。

Q5: 定期購入型アイテムの価格を変更することはできますか?

価格を下げた場合、新しい購入者と現在の購入者の両方に新しい価格が(次回の支払い時から)適用されます。価格を上げた場合、値上げ後の価格は新しい購入者にのみ適用されます。詳細については、定期購入型アイテムの価格更新を参照してください。

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

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

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

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

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

receiptIdが変更されるかどうかは、ユーザーの定期購入が継続しているかどうかによって異なります。

  • 定期購入が継続していて途中でキャンセルされたことがない場合、その定期購入型アイテム/ユーザーについてアプリが受け取るレシートは1つだけです。
  • 定期購入が継続的でない場合、たとえば、ユーザーが自動更新を選択せず、定期購入が期限切れになり、その1か月後に再び定期購入を開始した場合、アプリは複数のレシートを受け取ります。
Q9: purchaseDate値は最初の購入日を表していますか?それとも、購入が更新された日付を表していますか?

purchaseDateは最初の購入日を表します。それ以降の更新日を表すものではありません。

Q10: IAP v2.0でも、レシート検証サービス(RVS)で更新エンドポイントを呼び出す必要はありますか?

IAP v2.0のRVSでは、何も更新する必要はありません。IAP v1.0 RVSのpurchaseTokenリクエストパラメーターに相当するものはありません。

Q11: ユーザーがアプリを起動しなくても、定期購入が更新されたかどうかをバックエンドサーバーで判断することはできますか? できるとすれば、その方法を教えてください。

ユーザーが定期購入を更新したかどうかを判断することはできません。バックエンドサーバーで判断できるのは、定期購入型アイテムがアクティブであるか、キャンセルされているかだけです。定期購入型アイテムがアクティブでなくなると、AmazonによってcancelDateが設定されます。cancelDateがnullの場合、その定期購入型アイテムは引き続きアクティブです。ユーザーがキャンセルした後で再び更新すると、アプリは複数のレシートを受け取ります。キャンセルされた最初の定期購入型アイテムにはcancelDateが設定されます。新しい定期購入にはpurchaseDateが設定され、cancelDateはnullになります。

テストに関する質問

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

アプリを公開する前には、アプリをローカルでテストし、その後でベータテストを行います。

  1. アプリをAmazonアプリストアに申請する前に、App Testerを使用してアプリをテストします。
  2. アプリをAmazonアプリストアに申請した後で、ライブアプリテストサービスを使用して本番環境でアプリのベータテストを行います。
Q2: 「共有シークレット」とはどのようなもので、どこにありますか?

「共有シークレット」とは、IAPトランザクションを特定のベンダーに紐付けし、その開発者にトランザクションのレシートを検証する権利があることを証明するものです。共有シークレットは、Amazonアプリストアの開発者アカウントの [共有キー] ページ(https://developer.amazon.com/sdk/shared-key.html)で確認することができます。

Q3: Amazon App Testerをサンプルアプリで実行してみたところ、通貨記号が表示されないことに気付きました。また、価格エントリのドロップダウンリストにも詳細情報が表示されません。これはわざとそのような仕様になっているのですか?

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

Q4: エントリを選択するとき、[3か月ごとの定期購入] を選択したとしても、定期購入型アイテムが常に [1か月ごとの定期購入] として表示されます。なぜこのようになるのですか?

この問題はApp Testerの既知の制限事項です。機能に影響はありません。

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

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

はい。各IAPアイテムには、開発者ポータルで一連のアセットを追加する必要があります。ただし、アセットはそのアイテム専用でなくてもかまいません。

  • アイコンは、IAPの詳細ページと購入確認ページに表示されます。
  • サムネイルは公開されませんが、アイテムごとに必要です。アイテムのアセットはすべて開発者ポータルにアップロードしてください。
Q2: IAPを組み込んだアプリを申請するにはどうすればよいですか?

アプリのテストが完了したら、開発者ポータルを通じてアプリをアップロードして申請できます。

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

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

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

トラブルシューティング

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

この「不明なエラー」は、次のような原因で発生する可能性があります。

  • Amazonクライアントに照らし合わせて行うアプリのデジタル著作権管理(DRM)チェックが失敗した場合。DRMで保護されたアプリをサイドロードすると、DRMチェックが失敗します。内部テストはDRMで保護されていないバージョンのアプリで行ってください。DRMで保護されたバージョンのアプリのテストは、アプリがライブ状態になる前にAmazonによって実行されます。
  • IAPの購入フローの実行中に、Amazonアプリストアのクライアントアプリがクラッシュした場合。これが原因かどうかを確かめるには、Amazonアプリストアのクライアントアプリを強制終了し、アプリを再起動して正常に動作するかを確認します。