![](/img/trans.png)
[英]Google Play in-app Billing onPurchasesUpdated() error response code -1
[英]In-app billing acknowledgePurchase issue [using google play in-app billing library]
我是 android 新手,第一次嘗試實現應用內計費。
我正在使用谷歌播放應用程序庫。 https://developer.android.com/google/play/billing/billing_library_overview
我想實現可消耗的應用內購買。 我正在使用 'android.test.purchased' 保留 ID 進行測試。 我可以加載skuDetails並成功購買並成功消費購買
這是我的 handlePurchase 方法,它使用了 consumerAsync
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);
}
}
}
當我消費購買時,它是否也承認購買? 我是否需要手動設置“acknowledged”:true 在 purchase.originalJson 中?
我的代碼是否正確消耗購買的物品? 或者我需要在消費項目之前包括一個單獨的acknowledgePurchase。
請回復。 任何幫助都非常感謝。
謝謝。
對於消費品,您希望使用consumeAsync()。 對於不可消耗的產品,您需要使用acknowledgePurchase()。 有關在您的應用中確認購買的更多信息,請查看官方文檔: https : //developer.android.com/google/play/billing/billing_library_overview#acknowledge
歡迎使用 stackoverflow!
您錯誤地使用了consumeAsync()
,要確認購買,您應該調用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
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.