java - Play Billing Library v1.0 订单状态

标签 java android in-app-purchase in-app-billing

我已经使用

为我的 Android 应用程序之一实现了应用内购买
com.android.billingclient:billing:1.0

如上所述here

我正在使用以下代码检查用户是否购买了 SKU

  mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponse) {
            if (billingResponse == BillingClient.BillingResponse.OK) {
                Log.e("billing",""+billingResponse);
                Log.e(TAG, "onBillingSetupFinished() response: " + billingResponse);
                Purchase.PurchasesResult result = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
                if(result.getPurchasesList().size() > 0) {
                    Log.e("Purchased Product", result.getPurchasesList().get(0).getSku());
                    if (result.getPurchasesList().get(0).getSku().equals(constant.sku))
                        constant.ad_removed = true;
                    Log.e("code",""+result.getResponseCode());
                }
            }

            else {
                Log.e(TAG, "onBillingSetupFinished() error code: " + billingResponse);
            }
        }
        @Override
        public void onBillingServiceDisconnected() {
            Log.e(TAG, "onBillingServiceDisconnected()");
        }
    });

它工作正常,但如果用户购买了 SKU,我会提供高级应用程序的好处,但如果用户要求退款并且我们向用户退款,会发生什么?我已尝试对一个订单进行退款,其在我的控制台中显示为已退款,但由于账单响应显示用户已购买该 SKU,用户仍然享有高级权益。有人有办法解决这个问题吗?

谢谢

最佳答案

如果状态被退款,您可以消耗该产品,这样该产品将不再存在。

但显然,Play Billing Library v1.0 中没有这样的方法来检查购买是否已退款。将来可能会添加。

目前,在退款时,请将交易 ID 存储在您的服务器中,并创建一个 API 来检查购买是否已退款。然后在应用程序中,使用购买详细信息调用服务器。如果服务器返回退款,请消费该产品。

您还可以将 Void Purchases API 用于相同目的: https://developers.google.com/android-publisher/voided-purchases

关于java - Play Billing Library v1.0 订单状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46988205/

相关文章:

c# - 如何轻松实现聚合对象的接口(interface)? (语言无关)

java - OpenGL + 处理 : Rotate and move based on direction

android - card.io 字符串不会随混淆器改变

android - 从 Assets 文件夹加载本地 html 文件时出现问题

ios - "Restore Transactions"无可恢复时的按钮行为

ios - iPhone 应用内购买商店工具包错误-1003 "Cannot connect to iTunes Store"

java - netty(或java NIO) channel 是先进先出的吗?

c# - 通过 C# 运行 weka

android - 以编程方式更改 AppBarLayout 主题?

python - 如何执行身份验证以验证 Google 应用内订阅