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


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

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

IAP全般に関する質問

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

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

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

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

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

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

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

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

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

Q: アプリ内課金APIを使用するには、何から始めればよいですか。

アプリ内課金(IAP)の概要を確認してから、使用するテクノロジーに応じたスタートガイドのページに進んでください。AndroidでのIAPについては、アプリ内課金(IAP)の実装についてを参照してください。ウェブアプリでのIAP開発については、ウェブアプリ用アプリ内課金(IAP)APIを参照してください。

Q: Amazonデバイス向けにアプリ内課金を提供するにはどうすればよいですか。

Amazonのアプリ内課金APIは、Amazonデバイスと互換性があります。

Q: アプリ内でデジタルコンテンツを購入できるようにするには、Amazonアプリ内課金(IAP)APIを使用しなければならないのですか。

はい。アプリをAmazonデバイスで利用できるようにするには、すべての購入にAmazonアプリ内課金(IAP)APIを使用する必要があります。

Q: アプリでGoogleのアプリ内課金テクノロジーを使用しています。これをAmazonデバイスで動作させることはできますか。

いいえ。Googleのアプリ内課金テクノロジーにはGoogle Mobile Servicesへのアクセスが必要ですが、このサービスはAmazonデバイスでは動作しません。Amazonには独自のアプリ内課金(IAP)APIが用意されており、これを使用すれば、デジタルコンテンツや定期購入型アイテムをアプリ内で簡単に提供できます。

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

Amazonは、Amazon Developer Services Agreement(開発者サービス契約)に規定されるロイヤリティを開発者に支払います。

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

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

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

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

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

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

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

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

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

販売できるものは、デジタル商品、コンテンツ、サービスです。たとえば、機能の追加や拡張、アプリ内ツール、データ、メディアコンテンツなどが挙げられます。いずれも、アプリ内でアクセスまたは使用することを目的としたものに限ります。それ以外のアイテムをユーザーが購入できるようにすることはできません。たとえば、次のものは販売できません。

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

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

IAP APIに関する質問

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

テストに関する質問

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

トラブルシューティング

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

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

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