Покупка через Google всегда возвращается - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблемы с покупкой в ​​приложении в Google. Все полученные платежи возвращаются через 72 часа. Есть ли ошибки в моих кодах оплаты? Я заплатил сам и не просил возмещение, но даже это было возвращено через 72 часа.

play_console_screenshot

private void setupBilling() {
    mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(this).enablePendingPurchases().build();
    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(BillingResult billingResult) {
            if (billingResult.getResponseCode() ==  BillingClient.BillingResponseCode.OK) {
                final List<String> skuList = new ArrayList<> ();
                skuList.add("remove_ads");
                final SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
                params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

                mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {
                        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null) {
                            BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                                    .setSkuDetails(list.get(0))
                                    .build();
                            mBillingClient.launchBillingFlow(MainActivity.this, flowParams);
                        }
                    }
                });

            }else{
                Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onBillingServiceDisconnected() {
            Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
        }
    });
}

@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
            && list != null) {
        for (Purchase purchase : list) {
            if(purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED){

                Toast.makeText(MainActivity.this, purchase.getSku() + " ok", Toast.LENGTH_SHORT).show();

            }
        }
    } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
        Toast.makeText(this, "İptal edildi", Toast.LENGTH_SHORT).show();
    } else if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED) {

        Toast.makeText(this, "alreadry owned", Toast.LENGTH_LONG).show();

    }else{
        Toast.makeText(this, "error", Toast.LENGTH_SHORT).show();
    }

}

1 Ответ

1 голос
/ 20 апреля 2020

Похоже, вы не правильно подтверждаете покупку.

Если вы используете Google Play Billing Library версии 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...