在app billing中,当调用onActivityResult时,API v3 INAPP_PURCHASE_DATA在bundle中为null

时间:2013-08-25 08:54:36

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

我正在使用第3版Billing API实现订阅结算。付款对话框关闭后(付款成功),控制权将返回到我的活动

通话方法

        String payload = UUID.randomUUID().toString();
        bundle = mService.getBuyIntent(3, getPackageName(), mProduct, "subs", payload);

        int responseCode = bundle.getInt("RESPONSE_CODE");
        if (responseCode == 0) {
             PendingIntent pendingIntent = bundle.getParcelable("BUY_INTENT");
             startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
        } else if (responseCode == 1) {
                mErrorMessage.setText(getResources().getString(R.string.purchase_cancelled));
                mErrorMessage.setVisibility(View.VISIBLE);
        } else if (responseCode == 7) {
                mErrorMessage.setText(getResources().getString(R.string.payment_twice));
                mErrorMessage.setVisibility(View.VISIBLE);
        } else {
                mErrorMessage.setText(getResources().getString(R.string.payment_general_error));
                mErrorMessage.setVisibility(View.VISIBLE);
        }

我的活动

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            // Null
            String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA"
        }
    }

问题是purchaseData字符串为null。这可能是因为我已经购买了这个订阅(测试时有一百万次) - 而且我应该首先使用getPurchases()进行检查。

是否知道购买“通过 - 显然是成功的”,如果用户试图在他或她是1)当前订户时付款,或者2)在服务到期后但在服务到期之前?

1 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,我发现我使用的是ITEM_TYPE_SUBS = "subs"而不是ITEM_TYPE_INAPP = "inapp"

当我输入正确的参数时,它按预期工作。