【问题标题】:How do I verify canceled in-app subscription?如何验证已取消的应用内订阅?
【发布时间】:2019-09-27 07:15:40
【问题描述】:

我正在使用:bp.isSubscribed(ID) 来验证我的订阅。但是当我取消订阅时,方法 bp.isSubscribed(ID) 仍然返回 true。我该怎么办?

transDetails.purchaseInfo.purchaseData.purchaseState.toString() 在我从 Play 商店管理订阅中手动取消后,总是返回 PurchasedSuccessfully。

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
}

订阅取消时我需要返回“Canceled”。

【问题讨论】:

    标签: java android in-app-billing android-developer-api in-app-subscription


    【解决方案1】:

    onCreate() 中启动bp 变量,然后调用loadOwnedPurchasesFromGoogle()

    就我而言!

    不知道为什么我们需要多次致电loadOwnedPurchasesFromGoogle()。当我在onCreate() 中打电话给loadOwnedPurchasesFromGoogle() 时,我总是会出错。但是当我打电话给onPause()onDestory() 时,我得到了正确的结果,并且我的所有值都得到了更新。

    得到loadOwnedPurchasesFromGoogle()true后,我得到更新订阅值!

    【讨论】:

    • 谢谢我得到了更新数据,但我注意到取消后只更新“autoRenewing”:true/false 但在自动更新计划后没有得到更新的值。 - orderId - purchaseTime { "orderId": "GPA.3346-XXXXX", "packageName": "XXXXX", "productId": "monthly", "purchaseTime": 1570265452385, "purchaseState": 0, "developerPayload": "subs:xxxxxx", "purchaseToken": "**************", "autoRenewing": false }
    • 如何在应用程序端获取更多数据,例如? { "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 }
    • 取消订阅,用户重新购买后,数值会更新!在自动更新时,价值不会更新。如果此答案对您有帮助,请接受作为答案。
    【解决方案2】:

    服务器端的最佳解决方案获取订阅的实际信息,或者您可以通过 Node.js 配置进行交叉验证。

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

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 2013-04-24
      • 2019-10-18
      • 2013-02-25
      • 2013-03-11
      • 2022-01-19
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多