Android结算错误您已经拥有的商品:运营商结算配置为空。设备不是DCB 2的目标

时间:2014-03-24 15:59:20

标签: android in-app-billing android-billing

我正在尝试使用Android billing v3测试试用订阅。该应用程序已经有产品在生产,但我也想添加订阅。当我第一次购买试验潜艇时,一切正常。然后我取消了它(等待几小时和几天),然后当我再次尝试购买时,会出现一条带有消息的Android对话框:您已拥有此项目。 Google Play应用和我的服务器端应用都确认订阅已取消。

logcat窗口显示此输出:

03-24 15:41:53.722: D/IabHelper(21333): Constructing buy intent for com.MYAPP.freetrial, item type: subs
03-24 15:41:53.732: D/Finsky(20292): [1056] InAppBillingUtils.pickAccount: com.MYAPP:      Account determined from installer data - [UAHnZq8S3yArGc_6ew11RBHr0DE]
03-24 15:41:53.742: D/IabHelper(21333): Launching buy intent for com.MYAPP.freetrial. Request code: 10001
03-24 15:41:53.742: D/audio_hw_primary(181): select_devices: out_snd_device(2: speaker) in_snd_device(0: )
03-24 15:41:53.742: D/ACDB-LOADER(181): ACDB -> send_afe_cal
03-24 15:41:53.742: I/ActivityManager(580): START u0 {cmp=com.android.vending/com.google.android.finsky.billing.lightpurchase.IabV3Activity (has extras)} from pid -1
03-24 15:41:53.812: D/Finsky(20292): [1] CarrierParamsAction.createCarrierBillingParameters: Carrier billing config is null. Device is not targeted for DCB 2.
03-24 15:41:53.812: E/Finsky(20292): [1054] FileBasedKeyValueStore.delete: Attempt to delete 'params5wrD2REIodMwVQIkVi-biw' failed!
03-24 15:41:53.872: W/GLSUser(17314): GoogleAccountDataService.getToken()
03-24 15:41:53.882: I/ActivityManager(580): Displayed com.android.vending/com.google.android.finsky.billing.lightpurchase.IabV3Activity: +99ms

我必须添加onQueryInventoryFinished BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED,因为每次查询库存时都会在服务器端重新创建sub:

public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
    // Log.d(TAG, "Query inventory finished.");
    mHelper.flagEndAsync();
    if (result.isFailure()) {
        // complain("Failed to query inventory: " + result);
        return;
    }

    // Log.d(TAG, "Query inventory was successful.");
    if (result.getResponse() == IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
        return;
    }
    consumePuchasedItems(inventory);

    // Log.d(TAG, "Initial inventory query finished; enabling main UI.");

}

我的应用程序已使用发布证书签名,构建代码+版本号与开发者控制台中的版本号完全相同。

我正在使用http://code.google.com/p/marketbilling/(2013年12月14日)

中的最新代码

我已经检查了Android billing - error you own this item和其他类似帖子,但它无效。

我很感激任何建议。任何想法?我正在研究这几天仍然没有解决方案。订阅过程似乎第一次运作良好,我尝试了不同的帐户。当我取消它并尝试重新购买时会出现问题。

感谢!!!

1 个答案:

答案 0 :(得分:1)

取消订阅后,您仍可以在订阅期结束前访问该订阅。这是Google的实施。这就是为什么取消订阅没有退款的原因,因为即使取消订阅,Google仍允许在整个订阅期内访问订阅。

取消订阅的做法是停止订阅续订。

这就是为什么即使您取消订阅,也无法立即再次购买。您应该能够在当前订阅期结束后重新购买。