Как проверить отмененную подписку в приложении?

Я использую: bp.isSubscribed(ID) для проверки моей подписки. Но когда я отменяю подписку, метод bp.isSubscribed(ID) по-прежнему возвращает значение true. Что я должен делать?

transDetails.purchaseInfo.purchaseData.purchaseState.toString() Всегда возвращайте PurchasedSuccessful после того, как я вручную отменил подписку на управление игровым магазином.

public void checkSubscriptionDetails(){

bp = new BillingProcessor(this, LICENSE_KEY, new BillingProcessor.IBillingHandler() {
            @Override
            public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {

                Common.printLog("InApp", ":onProductPurchased :" + productId);


            }

            @Override
            public void onPurchaseHistoryRestored() {

            }

            @Override
            public void onBillingError(int errorCode, @Nullable Throwable error) {
           }

            @Override
            public void onBillingInitialized() {


            }
        });


boolean purchaseResult = bp.loadOwnedPurchasesFromGoogle();
// ## purchaseResult is always return FALSE 

        if (bp.isSubscribed(planID)) {

            TransactionDetails transDetails = bp.getSubscriptionTransactionDetails(planID);

            String strDetailsSubsMonth = "OrderID:" + transDetails.orderId +
                    "\nproductId: " + transDetails.productId +
                    "\npurchaseToken: " + transDetails.purchaseToken +
                    "\npurchaseTime: " + transDetails.purchaseTime +
                    "\npurchaseInfo.signature: " + transDetails.purchaseInfo.signature +
                    "\npurchaseInfo.responseData: " + transDetails.purchaseInfo.responseData +
                    "\npurchaseData.purchaseToken: " + transDetails.purchaseInfo.purchaseData.purchaseToken +
                    "\npurchaseData.autoRenewing: " + transDetails.purchaseInfo.purchaseData.autoRenewing +
                    "\npurchaseData.developerPayload: " + transDetails.purchaseInfo.purchaseData.developerPayload +
                    "\npurchaseData.purchaseState: " + transDetails.purchaseInfo.purchaseData.purchaseState.toString();

            String strPurchaseState = transDetails.purchaseInfo.purchaseData.purchaseState.toString();
            Common.printLog("InApp", "Details: " + planID + " >> " + strDetailsSubsMonth + " \n" + "Purchase State :" + strPurchaseState);
        }

}


package com.anjlab.android.iab.v3;

public enum PurchaseState
{
    PurchasedSuccessfully,
    Canceled,
    Refunded,
    SubscriptionExpired
}

мне нужно вернуть «Отменено» при отмене подписки.


person Android Devs    schedule 27.09.2019    source источник


Ответы (2)


Инициируйте bp varibale в onCreate(), а затем вызовите loadOwnedPurchasesFromGoogle().

В моем случае!

Не знаю, зачем нам нужно вызывать loadOwnedPurchasesFromGoogle() несколько раз. Я всегда получаю false, когда вызываю loadOwnedPurchasesFromGoogle() в onCreate(). Но когда я вызываю onPause() и onDestory(), я получаю true, и все мои значения обновляются.

После получения loadOwnedPurchasesFromGoogle() истинного значения подписки на обновление я получаю!

person Red Dev    schedule 04.10.2019
comment
Спасибо, я получил данные обновления, но я заметил только автоматическое обновление обновления: true/false после отмены но не получить обновленное значение после автоматического продления плана. - идентификатор заказа - время покупки { "orderId": "GPA.3346-XXXXX", "packageName": "XXXXX", "productId": "monthly", "purchaseTime": 1570265452385, "purchaseState": 0, "developerPayload": "subs:xxxxxx", "purchaseToken": "**************", "autoRenewing": false } - person Android Devs; 05.10.2019
comment
Как получить больше данных на стороне приложения, например?? { "kind": "androidpublisher#subscriptionPurchase", "startTimeMillis": "1569992364817", "expiryTimeMillis": "1569992959731", "autoRenewing": false, "priceCurrencyCode": "XXX", "priceAmountMicros": "XXXXX", "countryCode": "IN", "developerPayload": "subs:monthly", "paymentState": 1, "cancelReason": 0, "userCancellationTimeMillis": "1569992810284", "orderId": "GPA.XXXX-XXX-7672-59220..0", "purchaseType": 0, "acknowledgementState": 1 } - person Android Devs; 05.10.2019
comment
Значение будет обновлено после отмены подписки и повторной покупки пользователем подписки! При автоматическом продлении значение не обновляется. Если этот ответ полезен для вас, пожалуйста, примите его как ответ. - person Red Dev; 05.10.2019

Лучшее решение со стороны сервера: получите актуальную информацию для подписки или перекрестную проверку с помощью конфигурации Node.js.

https://caster.io/lessons/verify-android-app-subscription-status-from-nodejs

person Android Devs    schedule 22.10.2019