我在Android Studio中。当我收到购买的商品时,仍然显示我以为已经消费的购买商品。
这是我的提手购买
void handlePurchases(List<Purchase> purchases) {
String str;
int numberOfPurchases = 0;
for(Purchase purchase:purchases) {
switch(purchase.getPurchaseState()) {
case Purchase.PurchaseState.PURCHASED:
if (!verifyValidSignature(purchase.getOriginalJson(), purchase.getSignature())) {
// Invalid purchase
// show error to user
Toast.makeText(getApplicationContext(), "Error : Invalid Purchase", Toast.LENGTH_SHORT).show();
return;
}
// else purchase is valid
//if item is purchased and not acknowledged
if (!purchase.isAcknowledged()) {
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, ackPurchase);
}
//else item is purchased and also acknowledged
else {
numberOfPurchases++;
// HOW DOES IT KNOW IF IT IS CONSUMED???
// DONT DELETE - if you want to keep on consuming
// ConsumeParams consumeParams = ConsumeParams.newBuilder()
// .setPurchaseToken(purchase.getPurchaseToken())
// .build();
//
//ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
// @Override
// public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
//
// Toast.makeText(DiamondsActivity.this, "Purchase successful", Toast.LENGTH_SHORT).show();
//
// if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
//
// if (purchase.getSku().equalsIgnoreCase(ITEM_SKU_diamond_500)) {
// Toast.makeText(DiamondsActivity.this, "Thank you for purchasing!", Toast.LENGTH_SHORT).show();
// }
// }
// }
//};
//billingClient.consumeAsync(consumeParams, consumeResponseListener);
}
break;
case Purchase.PurchaseState.PENDING:
Toast.makeText(getApplicationContext(), "Purchase is Pending. Please complete Transaction", Toast.LENGTH_SHORT).show();
break;
case Purchase.PurchaseState.UNSPECIFIED_STATE:
Toast.makeText(getApplicationContext(), "Purchase Status Unknown", Toast.LENGTH_SHORT).show();
break;
}
}
}
关键点是// HOW DOES IT KNOW IF IT IS CONSUMED???
。
如何确定购买的商品是否已消费?
已消费的购买是否仍在购买阵列中?
我的IAP的Google Play程序员帐户中应该做些什么吗,例如某种标志来说明它是可消耗的?