web-dev-qa-db-ja.com

このバージョンのアプリケーションは、Google Playを介した課金用に設定されていません

アプリ内課金を使用してアプリケーションを実行しようとすると、「このバージョンのアプリケーションはGoogle Play経由の課金用に設定されていません。詳細についてはヘルプセンターを確認してください」というエラーが表示されます。

マニフェストファイルに既に請求許可があり、署名済みの.apkをドラフトとしてGoogle Playにアップロードし、同じ署名済みのapkを携帯電話にもインストールしています。

この問題を解決する方法についてのヘルプはありますか?

245
Gatekeeper

ああ、数時間試した後、解決策を見つけました。

  1. Googleはアプリケーションの処理とサーバーへの更新に時間がかかります。私にとっては約半日かかります。したがって、Google Playでapkをドラフトとして保存した後、アプリ内製品が正常に応答して通常の購入が可能になるまで数時間待つ必要があります。
  2. APKをエクスポートして署名します。署名のないAPKを購入しようとするとエラーが発生します。
184
Gatekeeper

このエラーは、いくつかの理由により発生する可能性があります。

Google IABテストの要件のリストは次のとおりです。

前提条件:

  1. AndroidManifestには"com.Android.vending.BILLING"許可を含める必要があります。
  2. APKはリリースモードに組み込まれています。
  3. APKはsignedで、release certificate(s)です。 (重要:「Google Playによるアプリ署名」では、GooglePlayStoreから直接ダウンロードした場合にのみ機能します!)
  4. APKはalpha/beta distribution channel(以前-ドラフトとして)に開発者コンソールに少なくとも1回アップロードされます。 (時間がかかります〜2h-24h)。
  5. IAB 製品が公開されていますおよびステータスがアクティブに設定されています。
  6. テストアカウントが追加されました開発者コンソール。

テスト要件:

  1. テストAPKには、開発者コンソールにアップロードされたものと同じsame versionCodeがあります。
  2. テストAPKは、dev-consoleにアップロードされたものと同じ署名済み同じ証明書です。
  3. テストアカウント(開発者ではない)-デバイス上のメインアカウントです。 (メインアカウントは不要かもしれません- @ MinosL コメントによる)
  4. テストアカウントはテスターとしてオプトインであり、それは有効な支払い方法にリンクです。 ( @ Kyone

P.S:リリース証明書によるデバッグhttps://stackoverflow.com/a/15754187/1321401 (Thnx @ dipp リンク用)

P.P.S:すでに長い間このリストを作りたかった。

Thnx @ zlgdev@ Kyone@ MinosL 更新用

300
Luten

公開されたバージョンが携帯電話でテストしているバージョンと同じでない場合も同じことが起こります。

たとえば、アップロードされたバージョンはAndroid:versionCode="1"であり、携帯電話でテストしているバージョンはAndroid:versionCode="2"です。

130
sandalone

ライブ証明書を使用してAPKに署名する必要があります。次に、それをテストデバイスにインストールします。その後、InAppBillingをテストできます。 Eclipseからデバイスへの直接実行(デバッグモード)でアプリケーションをテストしている場合、このエラーが発生します。

Android.test.purchasedをSKUとして使用している場合、それはすべて機能しますが、最終応答にdeveloperPayloadがありません。

アプリアイテムで独自の下書きを使用している場合は、すべての方法でテストできますが、課金されるため、後で自分で払い戻す必要があります。

Google Play開発コンソールで使用するものと同じGmailアカウントでアイテムを購入することはできません。

45
Chirag Patel

開発者コンソールで:

Settings-> Account details-> License Testing->テストアクセスのあるGmailアカウント

ここにアカウントを入力します

14
Pablo Cegarra

2018年からここにいる場合は、Playストアから直接APKをダウンロードし、「派生」APKをインストールする必要があります。おそらく、GoogleのPlayストアに「Google Playによるアプリ署名」という機能があるためです。

10
Law Gimenez

私に起こったことを追加してみましょう。

これは主に署名が原因でした。

プロジェクト構造に署名の詳細を追加したので、実行するたびに、予想される署名済みAPKがインストールされると考えていました。しかし、ビルドタイプ「デバッグ」が選択されました。

以下の修正で問題が解決しました。

  • ビルドタイプ「リリース」の生成された署名済みapk。
  • Apkを手動でインストールしました。
3
Shree Harsha S

これは、Google Playのものとは異なるバージョンのapkを使用する場合に発生します。

2
Amalka

同じ問題があり、DZDomiから投稿を読む前に解決しませんでした。 Google Developer Consoleに有効にする必要がある設定があるということが突然起こりました。 [アプリの購入]セクションには、製品の行があり、一番右にステータスがあります。 ACTIVEである必要があります!

1
Søren

SOや他のサイトに関する多くの回答とコメントに反して、Google Playからテストデバイスにダウンロードされた製品のアルファ版またはベータ版で事前テストを実行する必要はありません(アルファ版/ベータ公開プロセスは、多くの場合、半日を消費します)。また、開発者スタジオからテストデバイスに署名済みリリースapkをロードおよび再ロードする必要もありません。

開発者スタジオからADBを介してテストデバイスに直接読み込まれたデバッグアプリを使用して、アプリ請求サービスで予備のGoogle Playをデバッグできます。これを妨げるエラーが発生している場合は、コードで何か間違ったことをしている可能性があります。 SKUのケース(製品ID)とその形式に特に注意してください(たとえば、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ウォレットから返金する必要があることを示しています。これは、アルファ/ベータロードとテストユーザーを使用する時間のかかるプロセスを必要とするテストの唯一のフェーズです。

1
Epsilon3

IABをデバッグする場合、何をする必要がありますか。

  1. Googleに送信して、マニフェストのIAB権限でアプリのバージョンをプレイします。

  2. Google Playのアプリに製品を追加します。 アプリ内課金の管理

  3. 署名済みのカスタムデバッグキーストアを設定します。 署名済みキーストアを使用するようにEclipseを構成

1
Pablo

私の場合、インストールされたapkとアップロードされたapkの署名が異なるため、同じメッセージが表示されました。

1
goRGon

ここで言及されていないもう1つの理由は、実際のデバイスでテストする必要があることです。エミュレーターが本当に良くなったので、間違いを犯すのは簡単です。

0
JDenais

私の問題は、debug.keystoreでそれをチェックしようとしたこと、つまり、Eclipseで実行することです。アルファモードで公開したキーストアでエクスポートしました(テストする前に公開する必要があります)。私の携帯電話と私はそれを正常にテストできるよりも。

0
Gal Rom

この問題は、apkをアップロードした後にアプリ内購入を追加したが、Playストア(アルファ版、ベータ版、および本番)でアプリケーションを公開していない場合にも発生します。

これは基本的に、Playストアでapkを公開した後にアプリ内購入を追加する必要があることを意味します(アルファ版、ベータ版、および製品版)。そうしないと、アプリ内購入を購入したり、クエリしたりできません。

0
DZDomi

ソリューション

Googleはアプリのバージョンを更新するのに時間がかかるため、Playストアにアプリをアップロードした後しばらくお待ちください。

0
Ali Akram

Moto c2 +にも同じ問題があります。私の場合、i restartにするとデバイスの問題になります。

0
Sagar Pithiya