アプリ内課金でアプリケーションを実行しようとすると、次のエラーが表示されます。
私はすでにマニフェスト ファイルに課金権限を持っており、署名済みの .apk を下書きとして Google Play にアップロードしており、同じ署名済みの apk を携帯電話にもインストールしています。
この問題を解決する方法について何か助けはありますか?
アプリ内課金でアプリケーションを実行しようとすると、次のエラーが表示されます。
私はすでにマニフェスト ファイルに課金権限を持っており、署名済みの .apk を下書きとして Google Play にアップロードしており、同じ署名済みの apk を携帯電話にもインストールしています。
この問題を解決する方法について何か助けはありますか?
このエラーは、いくつかの理由で発生する可能性があります。
Google IAB テストの要件のリストを次に示します。
前提条件:
テスト要件:
PS:リリース証明書を使用したデバッグ: https://stackoverflow.com/a/15754187/1321401 (リンクの Thnx @dipp )
PPS: ずっと前からこのリストを作りたいと思っていました。
ああ、数時間試した後、解決策を見つけました。
公開されたバージョンが携帯電話でテストしているバージョンと同じでない場合も同じことが起こります。
たとえば、アップロードされたバージョンはandroid:versionCode="1"
であり、携帯電話でテストしているバージョンはandroid:versionCode="2"
ライブ証明書を使用してAPKに署名する必要があります。次に、それをテストデバイスにインストールします。その後、InAppBillingをテストできます。eclipseを介してデバイスに直接実行して(デバッグモードで)アプリケーションをテストしている場合は、このエラーが発生します。
SKUとして使用している場合android.test.purchased
、それは完全に機能しますが、最終的な応答にdeveloperPayloadが含まれることはありません。
アプリアイテムで独自のドラフトを使用している場合は、ずっとテストできますが、課金されるため、後で自分で返金する必要があります。
GooglePlay開発コンソールで使用しているものと同じGmailアカウントでアイテムを購入することはできません。
SO や他のサイトに関する多くの回答やコメントとは対照的に、Google Play からテスト デバイスにダウンロードした製品のアルファ版/ベータ版を使用して予備テストを実行する必要はありません (アルファ版/ベータ版の公開プロセスはしばしば無駄になります半日)。また、開発者スタジオからテスト デバイスに署名付きリリース apk を読み込んで再読み込みする必要もありません。
デベロッパー スタジオから ADB 経由で直接テスト デバイスにロードされたデバッグ アプリを使用して、アプリ課金サービスで予備的な Google Play をデバッグできます。これを妨げるエラーが発生している場合は、コードで何か間違ったことをしている可能性があります。SKU (製品 ID) の CASE とその形式に特に細心の注意を払ってください (たとえば、APK を com.mydomain.my_product_id としてロードする場合は、必ずこの方法で購入してみてください - 同じケースとドメインを提供してください)。 . また、itemType に特に細心の注意を払ってください。これは、管理対象/管理対象外のアプリ購入またはサブスクリプションに対して、それぞれ「inapp」または「subs」のいずれかである必要があります。
Chirag Patel が提案したように、請求コードが適切に設定されている場合は、予備テスト中に android.test.purchased Sku (製品 ID) を使用してすべてのテストを実行してください。このデータは Google テスト システムによって提供されないため、署名、トークン、およびペイロードのチェックを通過するために、課金操作全体でこの ID を確認してください。さらに、テスト製品の 1 つにこの ID を付与して、スキーマ全体で購入、ロック解除/ロード、プレゼンテーションをテストします。購入をクリアするには、同じ Sku とこのようにフォーマットされたトークン文字列を渡すだけで、それを消費します。他のフィールドは関係ありません。
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
このフェーズのテストが完了したら、アルファ/ベータ製品のセミライブ テストに進みます。Google グループ (基本的にはメーリング リスト) を作成し、テスト ユーザーの電子メールをグループに追加し、このフェーズでデバイスをテストするためにこのグループを追加/招待します (アプリの Google 開発者リストの「APK」部分で実行されます)。購入はシミュレートされますが、実際に請求されることはありません。ただし、購入をクリアして再テストするには、Google ウォレットから返金する必要があることを Google は示しています。これは、アルファ/ベータ ロードとテスト ユーザーを使用する時間のかかるプロセスを必要とする唯一のテスト フェーズです。
私の場合、インストールされた apk とマーケットにアップロードされた apk の署名が異なるため、同じメッセージが表示されました。
IAB をデバッグする場合は、次のことを行う必要があります。
マニフェストで IAB 権限を使用して、アプリのバージョンを Google Play に送信します。
Google Play でアプリに製品を追加する:アプリ内課金の管理
署名付きのカスタム デバッグ キーストアを設定する:署名付きキーストアを使用するように Eclipse を構成します。
2022年の答え:
これは、デバッグ/リリース ビルドと、アプリが Play Signing によって署名されている場合 (つまり、Google Play から配信されたアプリの署名証明書が、Android Studio を使用してマシンからアプリをインストールするときの証明書とは異なることを意味します) についてテストされます。
次の手順を確認してください。
2 つの異なる Google Play Console アカウント (2 つの異なるアプリ) でテストしたところ、動作しました。
私の問題は、 debug.keystore でそれをチェックしようとしたことです。つまり、Eclipse で実行することです。アルファ モードで公開したキーストアでエクスポートしました (テストする前に公開する必要があります)。私の電話と私はそれを正常にテストできました。
この問題は、apk をアップロードした後にアプリ内購入を追加したものの、アプリケーションを Play ストア (アルファ版、ベータ版、製品版) で公開していない場合にも発生します。
これは基本的に、Play ストア (アルファ版、ベータ版、製品版) で apk を公開した後に、アプリ内購入を追加する必要があることを意味します。そうしないと、アプリ内購入を購入したり、クエリを実行したりすることができなくなります。
すべての設定に問題がないのにエラーが発生する場合This version of the application is not configured for billing through Google Play. Check the help center for more information.
Play ストアでアプリ内製品の価格を編集するか、アプリ内製品を無効にしてから有効にします。これで問題は解決します。