1

我使用应用程序版本 2 开发了一个应用程序,并将其发布在 Google 开发人员上,现在有人下载该应用程序并尝试购买它。在购买消息时,即使在此消息应用程序“解锁”之后,现在也向他显示“您的卡已被拒绝”。现在这是一个非常困难的情况,即在应用程序解锁时不付款。这个问题是我的应用程序中的应用程序计费方法(逻辑)还是它与谷歌的问题。

如果它在我的应用程序中,那么是否有任何方法可以检查人员卡是“拒绝卡”,所以在这种方法中我可以限制我的应用程序不解锁应用程序。

任何应用程序将不胜感激。

我的 BillingReceviver 中有这段代码:

@Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (Consts.ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
            String signedData = intent.getStringExtra(Consts.INAPP_SIGNED_DATA);
            String signature = intent.getStringExtra(Consts.INAPP_SIGNATURE);
            purchaseStateChanged(context, signedData, signature);
        } else if (Consts.ACTION_NOTIFY.equals(action)) {
            String notifyId = intent.getStringExtra(Consts.NOTIFICATION_ID);
            if (Consts.DEBUG) {
                Log.i(TAG, "notifyId: " + notifyId);
            }
            notify(context, notifyId);
        } else if (Consts.ACTION_RESPONSE_CODE.equals(action)) {
            long requestId = intent.getLongExtra(Consts.INAPP_REQUEST_ID, -1);
            int responseCodeIndex = intent.getIntExtra(Consts.INAPP_RESPONSE_CODE,
                    ResponseCode.RESULT_ERROR.ordinal());
            checkResponseCode(context, requestId, responseCodeIndex);
        } else {
            Log.w(TAG, "unexpected action: " + action);
        }
    }

使 ACTION_PUR​​CHASE_STATE_CHANGED 与我的 purchsedstatechanged 在文件 BillingService 中调用的操作相匹配后

  private void purchaseStateChanged(int startId, String signedData, String signature) {
        ArrayList<Security.VerifiedPurchase> purchases;
        DatabaseHandler db=new DatabaseHandler(this);
        purchases = Security.verifyPurchase(signedData, signature);
       if (purchases == null) {
            return;
        }

        ArrayList<String> notifyList = new ArrayList<String>();
        for (VerifiedPurchase vp : purchases) {
            if (vp.notificationId != null) {
                notifyList.add(vp.notificationId);
            }


            ResponseHandler.purchaseResponse(this, vp.purchaseState, vp.productId,
                    vp.orderId, vp.purchaseTime, vp.developerPayload);



        db.addUser("com.example.app", "111", "1222");

        Log.i("Usgdgfer",""+db.isUserPresent("com.example.app"));
        }
        if (!notifyList.isEmpty()) {
            String[] notifyIds = notifyList.toArray(new String[notifyList.size()]);
            confirmNotifications(startId, notifyIds);
        }
    }
4

1 回答 1

0

通常,在进行购买之前,必须将卡映射到 Google 电子钱包帐户。如果该卡无效,当您将该卡映射到您的 Google 帐户时,它会显示错误。

在购买过程中验证卡似乎很奇怪。即使这样,如果没有正确付款,您应该会收到错误响应

BILLING_RESPONSE_RESULT_USER_CANCELED = 1;BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE = 3;

在 IabResult 中收到这些错误后,检查您是否正确处理了这些错误。确保仅在收到正确响应时才解锁您的应用程序。

于 2013-07-11T07:34:51.193 回答