Как распознать покупки в приложении в Android? - PullRequest
1 голос
/ 13 июня 2019

Я прошел библиотеку биллинга Play https://developer.android.com/google/play/billing/billing_library_overview Вы должны подтвердить все покупки в течение трех дней. Неправильное подтверждение покупок приводит к тому, что эти покупки возвращаются. Процесс не дает какой-либо ясности, как подтвердить покупки Это то, что я пытался Это правильный способ сделать это. Заранее спасибо

@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {
    if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK&&purchases!=null){
        Toast.makeText(this, "Purchase Successful", Toast.LENGTH_SHORT).show();
        for(Purchase purchase:purchases){
            handlePurchase(purchase);
        }
    }else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.USER_CANCELED){
        Toast.makeText(this, "Purchase Cancelled", Toast.LENGTH_SHORT).show();
    }else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED){
        Toast.makeText(this, "Already Purchased", Toast.LENGTH_SHORT).show();
    } else{
        Toast.makeText(this, billingResult.getDebugMessage(), Toast.LENGTH_SHORT).show();
    }



//in handlePurchase()

если (! Purchase.isAcknowledged ()) { ПодтверждениеПокупкиПарамы ПодтверждениеПокупкиПарамы = AcknowledgePurchaseParams.newBuilder () .setPurchaseToken (purchase.getPurchaseToken ()) .setDeveloperPayload (purchase.getDeveloperPayload ()) .build ();

        client.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
            @Override
            public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
                if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK){
                    Toast.makeText(RemoveAdsActivity.this, "Purchase Acknowledged", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

1 Ответ

0 голосов
/ 13 июня 2019

В нем упоминается о том, что покупки совершаются через эту ссылку . Есть разные способы подтверждения покупки в зависимости от типа.

 private BillingClient mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();

//For non-consumables:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener());

//For Consumables: 
client.consumeAsync(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);

Ссылка, которую я разместил, содержит пример того, как обрабатывать подписки.

UPDATE

Вот более подробный пример того, как признать непотребляемые покупки:

Сначала создайте параметр AcknowledgePurchaseParams. Для этого вам нужен токен покупки, который вы сможете легко получить, поскольку вы должны вызывать его в своем методе onPurchasesUpdated или другом методе, которому вы передали покупку после onPurchasesUpdated:

AcknowledgePurchaseParams acknowledgePurchaseParams =
            AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.getPurchaseToken())
                    .build();

Затем создайте слушателя, который будет использоваться в качестве второго параметра. Это позволит вам сделать что-то после подтверждения покупки. В этом примере я отображаю сообщение в виде закусочной:

AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
        @Override
        public void onAcknowledgePurchaseResponse(BillingResult billingResult) {              

            getMessage("Purchase acknowledged");               
        }

    };

Создав их, используйте ваш BillingClient для вызова метода acknowledgePurchase:

mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);

Покупка должна быть успешно подтверждена.

Используется acknowledgePurchase для непотребляемых предметов.

Расходные материалы

Это похоже, только то, что они называются, изменено - см. Объяснение того, чем они являются в приведенном выше примере:

Первый параметр - Параметры - настройка:

ConsumeParams consumeParams = ConsumeParams.newBuilder()
            .setPurchaseToken(purchase.getPurchaseToken())
            .build();

Второй параметр - Слушатель - настройка :

    ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
        @Override
        public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
            getMessage("Purchase acknowledged");
        }
    }

Теперь используйте BillingClint и потребление Async:

mBillingClient.consumeAsync(consumeParams, consumeResponseListener);
...