我是Android的新手,并尝试首次实施应用内帐单。
我正在使用Google Play应用内库。https://developer.android.com/google/play/billing/billing_library_overview
我想实施消耗性应用内购买。我正在使用'android.test.purchased'保留ID进行测试。我可以加载skuDetails并成功进行购买并成功消费购买]
这是我的带有ConsumerAsync的handlePurchase方法
void handlePurchase(Purchase purchase) {
BillingClient client = BillingClient.newBuilder(NewAdActivity.this)
.enablePendingPurchases()
.setListener(this)
.build();
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
System.out.println("item successfully purchased");
if (!purchase.isAcknowledged()) {
ConsumeParams consumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.setDeveloperPayload(purchase.getDeveloperPayload())
.build();
ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchaseToken != null) {
System.out.println("SUCCESSFULLY consumed PURCHASE");
providecontent();
}
else {
System.out.println("FAILED TO consume:”);
}
}
};
client.consumeAsync(consumeParams, consumeResponseListener);
}
}
}
我在消费时也确认购买吗?我需要在purchase.originalJson中手动设置“ acknowledged”:true吗?
我的代码正确无误吗?或我需要在消费商品之前添加一个单独的ConfirmPurchase。
请回复。非常感谢您的帮助。
谢谢。
欢迎使用stackoverflow!
您不正确地使用了consumeAsync()
,要确认购买,您应该致电acknowledgePurchase()
。
[consumeAsync()
删除购买的物品,例如,如果购买允许用户玩10次,而他使用了所有物品,那么您将致电consumeAsync()
让用户再次购买该物品
示例:
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
// Grant entitlement to the user.
boolean signOk = verifyPurchaseSignature(purchase.getOriginalJson(), purchase.getSignature());
if (!signOk) {
// Alert the user about wrong signature
return;
} else if (!purchase.isAcknowledged()) {
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
//Give thanks for the purchase
}
});
}
}
对于易耗品,您要使用consumpAsync()。对于非消耗品,您要使用acceptPurchase()。有关在您的应用中确认购买的更多信息,请查看官方文档:https://developer.android.com/google/play/billing/billing_library_overview#acknowledge