アプリ内課金(IAP)に関するよくある質問(FAQ)
アプリ内課金(IAP)に関するよくある質問(FAQ)への回答をまとめています。
- 全般的な質問
- IAPソリューションに関する質問
- Appstore IAP APIに関する質問
- 定期購入型アイテムに関する質問
- 無料体験に関する質問
- Amazonコインに関する質問
- テストに関する質問
- Amazonアプリストアと申請プロセスに関する質問
- トラブルシューティング
全般的な質問
- 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を実装するには何から始めればよいですか?
-
アプリ内課金(IAP)についてで要件を確認してください。Android向けのIAP開発では、Appstore SDKまたはAppstore請求サービス対応SDKを選択できます。これらのソリューションの詳細については、IAPソリューションに関する質問を参照してください。ウェブアプリでのIAP開発については、ウェブアプリ向けアプリ内課金(IAP)APIについてを参照してください。Unityについては、Unity用Appstore SDKプラグインを参照してください。
- Q5: アプリ内でデジタル商品を購入できるようにするには、Amazon IAP APIを使用する必要がありますか?
-
はい。アプリをAmazonアプリストアで利用できるようにするには、アプリ内でのすべての購入に対してAmazonのIAPソリューションのいずれかを使用する必要があります。
- 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デバイスでは動作しません。ただし、アプリをAmazonアプリストアに移植する場合は、Appstore請求サービス対応SDKを使用できます。このSDKでは、Google Play請求サービスと同じAPIシグネチャが使用されます。
- Q10: IAPアイテムをすべての国や地域で購入可能にするには、どうすればよいですか?
-
IAPアイテムは、そのアプリが現在提供されている、または今後提供される国と地域で、自動的に購入可能になります。デフォルトの設定では、IAPアイテムの標準価格は各マーケットプレイスの現地通貨に自動的に換算され、ユーザーにはIAPアイテムが英語で表示されます。
- Q11: 特定のマーケットプレイスでIAPアイテムを販売したくない場合は、どうすればよいですか?
-
そのマーケットプレイスで、アプリ自体を入手できないようにする必要があります。開発者コンソールにログインし、[マイアプリ] タブに移動します。このタブで目的のアプリを選択し、[ターゲットアプリ] 画面に移動します。[販売状況] セクションで、アプリの販売を希望しないマーケットプレイスの横にあるチェックボックスをオフにします。
- Q12: IAPアイテムの価格をマーケットプレイスごとに変更する方法を教えてください。
-
開発者コンソールにログインし、[マイアプリ] に移動します。アプリを選択し、[アプリ内課金(IAP)アイテム] をクリックして [Amazonアプリストアの詳細] 画面に移動します。[価格] セクションで、[その他マーケットプレイスにおける希望販売価格を手動で設定する] のラジオボタンをクリックします。通貨とマーケットプレイスごとに価格を編集するためのオプションが表示されます。
- Q13: IAPが発生した場合、Amazonとの収益配分はどうなりますか?
-
Amazonは、Amazon Developer Services Agreement(英語のみ)に記載されているロイヤリティを開発者にお支払いします。
- Q14: IAPではペアレンタルコントロールはサポートされていますか?
-
ユーザーは、IAPを実行するときにAmazonパスワードまたは4桁のPINを要求するように設定できます。この機能には、Amazonアプリストアの [設定] メニューからアクセスできます。
- Q15: Amazon IAPには、ユーザーが誤って二重に購入してしまうのを防ぐ手段は用意されていますか?
-
Amazon IAPにそのような機能はありません。ただし、ペアレンタルコントロールを使用することで、誤った二重購入を防ぐことは可能です。
- Q16: そのほか、IAPの実装に適用される要件はありますか?
-
はい。IAPアイテムのタイプに応じたAmazonのプログラムポリシーに従うだけでなく、アプリのIAPが、適用されるすべての法令(IAPアイテムの宣伝方法や、IAPアイテムの購入がアプリの機能に与える影響に関する制限など)に準拠していることを確認する必要があります。
IAPソリューションに関する質問
- Q1: Amazonアプリストアでは、IAP向けにどのようなソリューションを提供していますか?
-
Amazonでは、Appstore請求サービス対応SDK、Appstore SDK、IAP v2.0 SDKを提供しています。Unity向けには、Unity用Appstore SDKプラグインとUnity用IAP v2.0プラグインがあります。IAP v2.0は今後廃止される予定であるため、使用は推奨されません。
- Q2: Appstore SDKのIAPとAppstore請求サービス対応SDKのIAPにはどのような違いがありますか? どちらか一方を選択しなければならないのはなぜですか?
-
Appstore請求サービス対応SDKでは、Google Play請求サービスと同じAPIシグネチャが使用されます。Google Playからアプリを移植する場合は、Appstore請求サービス対応SDKの使用を検討してください。Appstore SDKでは、APIシグネチャはGoogle Play請求サービスと異なりますが、購入保留、プロモーション価格、レシート検証など、より多くの機能がサポートされます。これらの機能がアプリに必要な場合は、Appstore SDKの使用を検討してください。詳細な比較については、AmazonのIAPソリューションの比較を参照してください。
- Q3: Appstore SDK IAPからAppstore請求サービス対応SDKに移行することはできますか?
-
はい。Appstore SDK IAPからAppstore請求サービス対応SDKに移行できます。Appstore請求サービス対応SDKでは、メンテナンスの労力が軽減され、リリースサイクルを短縮できます。まず、AmazonのIAPソリューションの比較を確認して、アプリのユースケースに互換性があることを確認してください。IAP構成とSKUは、Appstore SDKの開発者コンソールで作成したのと同じものを再利用できます。レポートもAppstore SDKと同じように機能します。
- Q4: 統合をテストするにはどうすればよいですか?
-
Appstore SDK IAPは、Amazon App Testerとライブアプリテスト(LAT)の両方でテストできます。Appstore請求サービス対応SDKの場合は、LATでのみテストできます。どちらのSDKでも、レシート検証サービスとリアルタイム通知を使用できます。
- Q5: Appstore SDKとAppstore請求サービス対応SDKで同じパブリックキーを使用することはできますか?
-
Amazonでは、Appstore SDKとAppstore請求サービス対応SDKで同じパブリックキーを使用します。これらのSDK間で移行する場合、変更を加える必要はありません。
Appstore IAP APIに関する質問
- Q1:
purchaseUpdateResponse()
から返されるレシートはソートされていますか? -
いいえ。返されるレシートはソートされているとは限りません。必要に応じて、アプリでレシートをソートできます。
- Q2: レスポンスを受信する前に購入トランザクションが中断された場合はどうなりますか?
-
レスポンスを受信する前に停電が発生したり、ネットワーク接続が切断されたりした場合、Amazonサーバーでは購入レスポンスがキューに追加されます。Amazonクライアントは、電源やネットワークが復旧したときにキューから購入レスポンスを取得します。アプリの起動時に毎回
getPurchaseUpdates()
を呼び出して、Amazonクライアントから送信される購入レシートをチェックしてください。キューに入れられたレシートの動作は、IAPアイテムのタイプによって多少異なります。- 消費型アイテムでは、
notifyFulfillment()
が呼び出されなかった購入レシートだけがonPurchaseUpdatesResponse()
に渡されます。アイテム付与が完了しているレシートの場合、その消費型アイテムの購入トランザクションは完了したものとして扱われ、次回のgetPurchaseUpdates()
の呼び出し時にレシートが配信されることはありません。 - 非消費型アイテムおよび定期購入型アイテムについては、購入レシートが
onPurchaseUpdatesResponse()
に渡されます。購入レシートがキャンセルされた場合または期限切れの場合、そのレシートには有効なcancelDate
プロパティが設定されます。
- 消費型アイテムでは、
- Q3:
UserId
、ReceiptId
、marketplace
の文字列の長さとして推奨される値はどのくらいですか? -
データベースにこれらのパラメーターの格納領域を定義する場合、各文字列の長さの推奨値は次のとおりです。
UserId
:UserId
の長さは128文字までです。 この文字列には英数字と句読点を使用できます。UserId
は暗号化された文字列であるため、その長さは使用する暗号化技術に左右されることがあります。ReceiptId
:ReceiptId
の長さは200文字までです。 この文字列には英数字と句読点を使用できます。marketplace
:marketplace
値は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: 定期購入型アイテムを購入したユーザーが、その定期購入をキャンセルして、残存期間に応じた返金を受けることはできますか?
-
いいえ。一度購入された定期購入型アイテムは、その期間を通じて有効になり、キャンセルはできません。ユーザーは自動更新を解除することはできますが、購入済みの定期購入型アイテムはキャンセルされません。残存期間に応じた返金を求める妥当な理由がある場合、ユーザーはAmazon.co.jpにログイン後、[カスタマーサービスに連絡] または [ヘルプ] のリンクからAmazonカスタマーサービスに問い合わせる必要があります。
- Q7:
receiptId
の値は更新期間ごとに変更されますか? -
receiptId
が変更されるかどうかは、ユーザーの定期購入が継続しているかどうかによって異なります。- 定期購入が継続していて途中でキャンセルされたことがない場合、その定期購入型アイテム/ユーザーについてアプリが受け取るレシートは1つだけです。
- 定期購入が継続的でない場合、たとえば、ユーザーが自動更新を選択せず、定期購入が期限切れになり、その1か月後に再び定期購入を開始した場合、アプリは複数のレシートを受け取ります。
- Q8:
purchaseDate
値は最初の購入日を表していますか?それとも、購入が更新された日付を表していますか? -
purchaseDate
は最初の購入日を表します。それ以降の更新日を表すものではありません。
- Q9: ユーザーがアプリを起動しなくても、定期購入が更新されたかどうかをバックエンドサーバーで判断することはできますか? できるとすれば、その方法を教えてください。
-
ユーザーが定期購入を更新したかどうかを判断することはできません。バックエンドサーバーで判断できるのは、定期購入型アイテムがアクティブであるか、キャンセルされているかだけです。定期購入型アイテムがアクティブでなくなると、Amazonによって
cancelDate
が設定されます。cancelDate
がnullの場合、その定期購入型アイテムは引き続きアクティブです。ユーザーがキャンセルした後で再び更新すると、アプリは複数のレシートを受け取ります。キャンセルされた最初の定期購入型アイテムにはcancelDate
が設定されます。新しい定期購入にはpurchaseDate
が設定され、cancelDate
はnullになります。
無料体験に関する質問
- Q1: ユーザーが無料体験付きの定期購入型アイテムを購入した場合、無料体験期間は定期購入期間に含まれますか?それとも、定期購入期間とは別に追加されますか?
-
無料体験期間は、ユーザーが選択した定期購入期間とは別に追加されます。無料体験期間の終了後に、定期購入期間が始まります。たとえば、ユーザーが1か月ごとの定期購入を選択し、アプリが14日間の無料体験を提供している場合、ユーザーは14日間無料でコンテンツにアクセスすることができます。14日間の無料体験期間が過ぎると、1か月ごとの定期購入期間が始まり、ユーザーへの課金が開始されます。14日間の無料体験期間の終了前にユーザーが自動更新を無効にすると、定期購入はそのまま終了し、ユーザーへの課金は行われません。
- Q2: 無料体験を利用したユーザーが、もう一度無料体験を楽しむことはできますか?
- いいえ。無料体験を利用できるのは、定期購入型アイテムごとに1回だけです。無料体験を開始したユーザーは、同じ定期購入型アイテムの無料体験の対象外となります。
- Q3: ユーザーが14日間の無料体験を7日間だけ利用した後、定期購入をキャンセルしたとします。そのユーザーが再び定期購入を申し込んだ場合、残りの7日間の無料体験を楽しむことはできますか?
- いったん無料体験期間を開始したユーザーは、その無料体験期間を最後まで完了していなくても、同じ無料体験の対象にはなりません。
- Q4: ユーザーが、同じ定期購入型アイテムの無料体験とプロモーション価格の両方を利用することはできますか?
- はい。無料体験とプロモーション価格を提供している場合、両方の対象となるユーザーでは、無料体験の終了後にプロモーション価格が適用されます。
Amazonコインに関する質問
ユーザーは、IAPアイテムの購入にAmazonコインを使用することができます。ここでは、AmazonコインとIAPの連携に関するよくある質問(FAQ)を紹介します。
- Q1: アプリをAmazonコインと統合するには何が必要ですか?
- 何も必要ありません。アプリをAmazonコインと統合するための追加のコーディング要件はありません。
- Q2: Amazonコインは割引価格で購入できますが、IAP APIには、AmazonコインでのIAPアイテムの購入時に実際に支払われた現地通貨額を取得する機能はありますか?
- いいえ。支払い方法にかかわらず、個人が取引で支払った金額を共有するAPIはありません。
- Q3: Amazonコインの利用規約はどこで確認できますか?
- マーケットプレイスごとに個別の利用規約があります。詳細については、Amazonコインに関する事項を参照してください。
テストに関する質問
- Q1: IAPを組み込んだアプリをテストするにはどうすればよいですか?
-
アプリを公開する前には、アプリをローカルでテストし、その後でベータテストを行います。
- アプリをAmazonアプリストアに申請する前に、App Testerを使用してアプリをテストします。
- アプリを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アプリストアに申請する前に、次のようにアプリをローカルでテストしてください。
- App Testerを使用してアプリをテストします。
- 開発者コンソールの [確認と申請] 画面にある [テスト手順] セクションに、そのアプリでアプリ内課金を実行する方法を入力します。
トラブルシューティング
- Q1: Amazonクライアントから「不明なエラー」というメッセージが届き、アプリを再度ダウンロードするように求められています。どうすればよいですか?
-
この「不明なエラー」は、次のような原因で発生する可能性があります。
- Amazonクライアントに照らし合わせて行うアプリのデジタル著作権管理(DRM)チェックが失敗した場合。DRMで保護されたアプリをサイドロードすると、DRMチェックが失敗します。内部テストはDRMで保護されていないバージョンのアプリで行ってください。DRMで保護されたバージョンのアプリのテストは、アプリがライブ状態になる前にAmazonによって実行されます。
- IAPの購入フローの実行中に、Amazonアプリストアのクライアントアプリがクラッシュした場合。これが原因かどうかを確かめるには、Amazonアプリストアのクライアントアプリを強制終了し、アプリを再起動して正常に動作するかを確認します。
Last updated: 2024年5月28日