一遍又一遍地购买相同的商品-应用内购买Android [英] Buying same item over and over - In App Purchase 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屋!