我在设置易耗品时遇到问题。我遵循了文档,但是我不知道出什么问题了,问题是:
产品基本上只能购买一次,而不是消耗品 是非消耗性的。
以下是代码段:
void handlePurchase(Purchase purchase) {
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
// Grant entitlement to the user.
MainFragmentHelper helper = new MainFragmentHelper();
helper.payment(purchase.getSku(), "purchased", new Date().toString(), purchase.getOrderId(), "");
// Acknowledge the purchase if it hasn't already been acknowledged.
if (!purchase.isAcknowledged()) {
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
}
});
}
allowMultiplePurchases(purchase);
}
}
private void allowMultiplePurchases(Purchase purchase) {
if (purchase != null) {
//Indicate consumable purchase
ConsumeParams consumeParams =
ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.setDeveloperPayload(purchase.getDeveloperPayload())
.build();
ConsumeResponseListener listener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String outToken) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
// Handle the success of the consume operation.
}
}
};
billingClient.consumeAsync(consumeParams,listener);
}
}
文档说:
要表明一次性产品已被消费,请致电
consumeAsync()
在您的BillingClient
实例上,并包含 Google Play应该可以回购的购买令牌。 您还必须传递一个实现ConsumeResponseListener
界面。该对象处理的结果 消费操作。
我不知道我在想什么。任何帮助都非常感谢。谢谢。