付款下降后即可解锁应用程序

时间:2013-07-11 07:18:14

标签: android in-app-purchase

我开发了应用程序版本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);
        }
    }

1 个答案:

答案 0 :(得分:0)

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

奇怪的是,该卡在购买时正在验证。即使这样,如果付款不正确,您也应该收到错误回复

  

BILLING_RESPONSE_RESULT_USER_CANCELED = 1;   BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE = 3;

在IabResult中收到这些错误后,请检查是否正确处理了这些错误。确保只有在收到适当的回复时才能解锁您的应用。