一遍又一遍地购买相同的商品-应用内购买Android [英] Buying same item over and over - In App Purchase Android

查看:70
本文介绍了一遍又一遍地购买相同的商品-应用内购买Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想一遍又一遍地购买相同的物品,但是代码在尝试第二次购买时给了我空指针异常.

i want to buy same item over and over but code gives me null pointer exception when try to buy second time.

这是代码;

try {
        Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), "ucret", "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");

        PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");

        startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));

    } catch (RemoteException e) {
        e.printStackTrace();
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }

当此代码脚本再次运行时,pendinIntent为null.

When this code script works again pendinIntent coming null.

我们可以向Google询问用户是否已经购买了上述代码

We can ask to google if user has already purchased like above code

 inventory.hasPurchase(sku_id); 

但是我想在每次打开屏幕时都出售相同的物品.

But I want to sell same item whenever i open the screen.

感谢您的帮助.

推荐答案

Google禁止用户购买相同的商品.因此,如果您这样做,则必须告诉Google让我".这就是消费中".

Google prevents users to buy same items. So if you do this, you must tell the google "let me". And this is named "consuming".

这是所有消耗方法

private void consumeBilling() {

    try {

        Bundle ownedItems = iInAppBillingService.getPurchases(3, getPackageName(), "inapp", null);

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

        if (response == 0) {

            ArrayList<String> ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST");

            ArrayList<String> purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST");

            ArrayList<String> signatureList = ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE_LIST");

            String continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN");

            for (int i = 0; i < purchaseDataList.size(); ++i) {

                String purchaseData = purchaseDataList.get(i);

                //   String signature = signatureList.get(i);

                //    String sku = ownedSkus.get(i);

                //    RDALogger.info("purchaseData " + purchaseData + " signature " + signature + " sku " + sku);

                RDALogger.info("purchaseData " + purchaseData);

                String purchaseTokenString = new JSONObject(purchaseData).getString("purchaseToken");

                int responsee = iInAppBillingService.consumePurchase(3, getPackageName(), purchaseTokenString);

                RDALogger.info("Consuming response " + responsee);
            }
        }

    } catch (Exception e) {

        e.printStackTrace();

        ErrorHandlers.handle(PaymentActivity.this, new HoustonWeGotAProblemException());
    }
}

purchaseData中的PurchaseToken将转到此代码

PurschaseToken from purchaseData will go to this code

  int responsee = iInAppBillingService.consumePurchase(3, getPackageName(), purchaseTokenString);

在您告诉Google之后,这些物品可以再次购买.

after these you told google, this item can be bought again.

这篇关于一遍又一遍地购买相同的商品-应用内购买Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆