android – 未配置应用程序通过Google Play结算的应用程序

我正在研究一个 Android项目,我正在尝试实施In App Billing V3.

我已将我的应用上传到Google Play,并在应用中添加了IAP.我可以成功检索我的应用程序的IAP列表及其价格,但当我实际尝试购买时,我的设备会出现以下错误(没有错误)

This version of the application is not configured for billing through
Google Play. Check the help centre for more information.

以下是检索IAP可用并进行购买的代码

ArrayList skuList = new ArrayList();
        skuList.add("MysqLmanager_pro");

        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList("ITEM_ID_LIST",skuList);
        try
        {
            Bundle skuDetail = mService.getSkuDetails(3,getPackageName(),"inapp",querySkus);
            Log.d("Billing","Response Received");

            int billingResponse = skuDetail.getInt("RESPONSE_CODE");
            if (billingResponse == 0)
            {
                //Get list of IAP's to purcase - NOT NEEDED
                ArrayList responseList = skuDetail.getStringArrayList("DETAILS_LIST");

                Log.d("Billing","Response");

                Bundle buyIntentBundle = mService.getBuyIntent(3,"MysqLmanager_pro","");

                PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");

                startIntentSenderForResult(pendingIntent.getIntentSender(),Defines.IntentRequestCodes.IAP_PURCHASE_REQUEST,new Intent(),Integer.valueOf(0),Integer.valueOf(0));
                /*for (String thisResponse : responseList)
                {
                    JSONObject object = new JSONObject(thisResponse);
                    String sku = object.getString("productid");
                    String price = object.getString("price");
                }*/
            }

        }
        catch (Exception ex)
        {
            Log.e("Billing",ex.toString());
        }

我的onCreate包含以下内容

mServiceConn = new ServiceConnection() {

            @Override
            public void onServiceDisconnected(ComponentName name) {
                mService = null;
            }

            @Override
            public void onServiceConnected(ComponentName name,IBinder service) {
                mService = IInAppBillingService.Stub.asInterface(service);
            }
        };

        bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),mServiceConn,Context.BIND_AUTO_CREATE);

以下是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.BoardiesITSolutions.MysqLManager"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.android.vending.BILLING" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.BoardiesITSolutions.MysqLManager.Agreement"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name=".MainActivity"
            android:label="@string/app_name">
        </activity>
        <activity
            android:name=".NewDBConnection"
            android:label="@string/new_MysqL_connection">
        </activity>
        <activity
            android:name=".ConnectionManager"
            android:label="@string/connection_manager">
            <Meta-data 
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"/>
        </activity>
        <activity
            android:name=".EditDBConnections"
            android:label="@string/edit_database_connections">
        </activity>
        <activity
            android:name=".ServerStatus"
            android:label="Server Status">
            <Meta-data 
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".ConnectionManager"/>
        </activity>
        <activity 
            android:name=".ConnectedDBManagerHost"
            android:label="Connected to DB">
        </activity>
        <receiver android:name="BillingReceiver">
      <intent-filter>
        <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
        <action android:name="com.android.vending.billing.RESPONSE_CODE" />
        <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
      </intent-filter>
    </receiver>
    </application>

</manifest>

感谢您的任何帮助,您可以提供

解决方法

这里有几点需要考虑:

>将apk上传到Google Play后,您需要等待一段时间
用于Google的服务器更新(类似于您发布时的服务器)
更新).根据我的经验,这可能需要一两个小时或更长时间.所以
几个小时后再试一次.
>确保为您上传的apk版本配置
IAP(通过权限),然后只用签名测试IAP
APK.也就是说,从Eclipse导出并签署你的apk,然后安装
本地到您的设备上.否则,如果您运行未签名的版本
直接来自IDE的应用程序,它将无法正常工作
你会看到一个错误.

注意:只要当前上载的草稿apk配置了正确的权限并且您在开发控制台上发布了IAP项目,就不需要在每次进行微小更改时上传新的apk.唯一令人讨厌的部分是,每次进行更改后都必须导出并签署应用程序并在本地设备上运行它.>检查上传的apk的versionCode是否相同versionCode作为apk的本地版本.>您无法使用开发者帐户进行测试购买,因为Google电子钱包不允许您从中购买商品你自己.因此,您需要在开发人员上设置一些测试帐户控制台并尝试从运行测试的设备购买项目帐户.

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...