Android 1)API v3を使用しています2)アプリのアルファ版をアップロードしてからテストできるようにするため、アプリ内課金に対処するのは初めてです
3)サブスクライブ製品を作成しました
4)これは製品でサブスクライブするための私のコードです
mSubscribeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
Bundle subscribeIntentBundle = mService.getBuyIntent(3, getPackageName(), "my_product_id", "subs", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
PendingIntent pendingIntent = subscribeIntentBundle.getParcelable("BUY_INTENT");
if (subscribeIntentBundle.getInt("RESPONSE_CODE") == 0) {
startIntentSenderForResult(pendingIntent.getIntentSender(), 4002, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
} else {
Toast.makeText(MainActivity.this, "Error Code: " + subscribeIntentBundle.getInt("RESPONSE_CODE"), Toast.LENGTH_SHORT).show();
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (SendIntentException e) {
e.printStackTrace();
}
}
});
5)次のエラーが表示されます
別のデバイスを使用しようとしましたが、すべて同じエラーが発生しました。また、Googleアカウントでログインし、Google Playストアを開いてアプリを表示できます。
また、アプリマネージャーからGoogle Playストアのデータを消去しようとしました
誰でも助けてくれますか??
以前にも同じ問題があります。 Google開発者コンソールにアクセスして、アプリが[〜#〜] published [〜#〜]のいずれかのバージョン(アルファ版、ベータ版、または製品版)であることを確認します。次に、アプリ内購入が機能します:)
恐ろしいメッセージで同じ問題が発生しました:
認証が必要です。 Googleアカウントにサインインする必要があります。
私には2つの問題がありました。
"com.argonnetech.wordswriting.noads"
を使用して製品を購入しようとしましたが、Google Play Developer(GPD)コンソールで構成されたアプリ内製品は単に「noads」という名前でしたそれは働いた。エラーメッセージは誤解を招くものであり、「アプリ内アイテムが存在しない」のようなエラーの方が良いでしょう。
アプリ内購入アカウントのAndroidデベロッパーテストは、このキーに従う必要があります。
Base64EncodedPublicKey
// base64EncodedPublicKeyのテスト
public static final String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg" +
"KCAQEAhNe2XQ70DceAwE6uyYJGK1dIBbZcPdlER/9EEzylr6RDU6tnGj0Tk7kceN03GKvRf/ucT+ERLL3O" +
"aHR22PXRXLZ17NZ81x6oS2vGmLyXBnjrU/I+asl8cNuLGySaoCdXxPAV+A9g6OG13dk+KY9i0O1roGpFH" +
"fsAFyKCgSqR0PMJZ1bS+wFFBYf3M4IxgBcxuuZKDmR+MztCgm5N4zc6w2CwFZn3mXeDoTg15mWDU3sZO" +
"WeRwFeynhV+FCYdDp8DpAkLk1b5IiXYFQ53wxCh/GxiKqBB6uQMmAixFjAcZV1QWfcBABae9vxiV5" +
"VAEJvOOnhPxnaT9HYadW0pQ/UbJwIDAQAB";
そして、アイテムはそのようなキーを購入しました
ITEM_PURCHASED
// ITEM_PURCHASEDのテスト
public static final String ITEM_PURCHASED = "Android.test.purchased";
そして、このコードonCreate()を初期化するために開始しますIabHelperアプリ内購入のクラス、
IabHelper helper = new IabHelper(this, Constants.base64EncodedPublicKey);
helper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d("#InAppStartSetup#", "In-app Billing setup failed: " + result);
} else {
Log.d("#InAppStartSetup#", "In-app Billing setup successful.");
}
}
});
そして最後に、このコードハンドルの時間をここで購入しました。
helper.launchPurchaseFlow(YOUR_ACTIVITY, Constants.ITEM_PURCHASED,
YOUR_REQUEST_CODE, mPurchaseFinishedListener, "");
君たちありがとう...
Developer.Android.comのドキュメントは古くなっているようです。
アプリ内課金を公開せずにテストする場合は、Googleグループを作成し、テスターのアルファリストを追加する必要があります。こちらをご覧ください: https://support.google.com/googleplay/Android-developer/answer/3131213?hl=en
[〜#〜] update [〜#〜]
2015年半ばの時点で、これはもはや必要ありません。 Google Play開発者コンソールでテストするための新しいオプションがいくつかあります。
上記のソリューションのほとんどは機能しますが、まだこの問題を抱えている人は、これを試してください:
以下は私のために働く:
私の場合、versionCode
、versionName
、およびapplicationId
は、デベロッパーコンソール上のアプリの現在のバージョンと同期していませんでした。 build.gradleファイルでこれらを変更しました。 EclipseのAndroid studioでアプリを書き直したため、両者は異なっていました。この後、アプリの請求は機能しました。