29

我在我的应用程序中定义了一些应用程序产品。我已将 apk 上传到 Google Play,并在 Google Play 上添加了应用内购买产品。

我的ServiceConnection定义如下:

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

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

onServiceConnected函数被调用,bindService返回true。

接下来是connect功能。

public void connect() {
        new Thread(new Runnable() {
            public void run() {
                try {

                    // Purchase type is "inapp", as required by  API v3
                    Bundle skuDetails = mService.getSkuDetails(3, PACKET, "inapp", querySkus);

                    }

                    int response = skuDetails.getInt("RESPONSE_CODE");

                    Log.e("IAP connect", response + "");


                    if (response == 0) {
                        ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST");
                        Log.e("size list", responseList.size()+"");
                        ...
                      }
                    }
            } catch (RemoteException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

PACKET 这里设置为getPackageName(). 响应代码为 0,但日志显示列表的大小为 0。我不知道为什么列表为空,因为我在 Google Play 中总共输入了 5 个项目,并且每个项目都处于活动状态。我现在已经等了 2 天,并用三台设备进行了测试,但仍然没有任何项目通过。

我几乎尝试了我能想到的一切,所以欢迎任何建议。

4

4 回答 4

50

您需要将应用程序发布到 Beta/Alpha 才能访问应用内计费功能。它最近发生了变化,但他们没有宣布:)

http://developer.android.com/google/play/billing/billing_testing.html#draft_apps

值得一提的是,您不必上传每个新版本即可对其进行测试。只需使用相同的 versionCode 和 versionName,如果应用程序发布,它将起作用。

于 2014-07-21T11:01:52.353 回答
25

您的代码看起来不错。

确保查询正确的 SKU。querySkus 中的单个项目必须与应用内产品的 id 完全匹配。

其次,确保查询正确的项目类型。如果您在开发者控制台中将“应用内产品”配置为要购买的汽车,请照常使用“应用内产品”。如果您有订阅,请使用“订阅”作为针对 Google Play 的查询类型。

希望这可以帮助。

于 2014-07-21T10:48:45.077 回答
1

我在旧设备上遇到了问题。删除 Play Services 应用程序数据解决了该问题。

所以我们只需要为糟糕的评论做好准备......

于 2019-07-22T11:13:38.210 回答
0

我遇到了同样的问题,解决方法是将我的订阅状态设置为“活动”。几分钟后,它终于奏效了。

于 2021-11-10T10:07:49.327 回答