Google 应用内购买始终会退款

Ser*_*ğlu 7 android in-app-purchase in-app-billing android-inapp-purchase google-play-console

我在使用 Google 应用内购买时遇到一些问题。所有收到的付款将在 72 小时后退还。我的付款代码有错误吗?我自己付了钱,没有要求退款,但即使是72小时后也退款了。

\n\n

播放控制台屏幕截图

\n\n
private void setupBilling() {\n    mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(this).enablePendingPurchases().build();\n    mBillingClient.startConnection(new BillingClientStateListener() {\n        @Override\n        public void onBillingSetupFinished(BillingResult billingResult) {\n            if (billingResult.getResponseCode() ==  BillingClient.BillingResponseCode.OK) {\n                final List<String> skuList = new ArrayList<> ();\n                skuList.add("remove_ads");\n                final SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();\n                params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);\n\n                mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {\n                    @Override\n                    public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {\n                        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null) {\n                            BillingFlowParams flowParams = BillingFlowParams.newBuilder()\n                                    .setSkuDetails(list.get(0))\n                                    .build();\n                            mBillingClient.launchBillingFlow(MainActivity.this, flowParams);\n                        }\n                    }\n                });\n\n            }else{\n                Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();\n            }\n        }\n        @Override\n        public void onBillingServiceDisconnected() {\n            Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();\n        }\n    });\n}\n\n@Override\npublic void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {\n    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK\n            && list != null) {\n        for (Purchase purchase : list) {\n            if(purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED){\n\n                Toast.makeText(MainActivity.this, purchase.getSku() + " ok", Toast.LENGTH_SHORT).show();\n\n            }\n        }\n    } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {\n        Toast.makeText(this, "\xc4\xb0ptal edildi", Toast.LENGTH_SHORT).show();\n    } else if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED) {\n\n        Toast.makeText(this, "alreadry owned", Toast.LENGTH_LONG).show();\n\n    }else{\n        Toast.makeText(this, "error", Toast.LENGTH_SHORT).show();\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

enc*_*ife 6

您似乎没有正确确认购买。

如果您使用 Google Play 结算库 2.0 版或更高版本,则必须在三天内确认所有购买。未能正确确认购买将导致这些购买被退款。

您可以在文档中找到更多详细信息:https://developer.android.com/google/play/billing/billing_library_overview#acknowledge

BillingClient client = ...
AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = ...

void handlePurchase(Purchase purchase) {
    if (purchase.getPurchaseState() == PurchaseState.PURCHASED) {
        // Grant entitlement to the user.
        ...

        // Acknowledge the purchase if it hasn't already been acknowledged.
        if (!purchase.isAcknowledged()) {
            AcknowledgePurchaseParams acknowledgePurchaseParams =
                AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.getPurchaseToken())
                    .build();
            client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)