订阅升级到inapp产品

subscription upgrade to inapp product

在我的项目中,很少有用户已经购买了订阅产品,而且他们每年都在付费。我们想为他们提供一次性升级(应用内购买)优惠。

当我参考 android 文档时,它说我们可以从一个订阅计划更改为另一个订阅计划(意味着从 "yearly plan" 更改为 "monthly plan"。但是这可能吗从订阅更改为 inapp?如果我这样做,Google play 会根据订阅中的剩余金额向用户收费吗?

编辑: 我正在使用 IABhelper v3 版本的支付库。这不支持将 "subscription" 产品升级到 "inapp" 产品。当我尝试这样做时,出现以下错误。

我强烈推荐 android-inapp-billing-v3 库 GitHub。你可以像下面这样使用这个库轻松地做到这一点。

BillingProcessor bp = new BillingProcessor(this, "YOUR LICENSE KEY FROM GOOGLE PLAY CONSOLE HERE", this);    
bp.subscribe(YOUR_ACTIVITY, "YOUR SUBSCRIPTION ID FROM GOOGLE PLAY CONSOLE HERE");

不,您不能更改购买类型。

升级或降级只能在不同的订阅周期之间进行,因为GooglePlay Store会在两种订阅类型之间切换。 该过程在 Subscription Upgrade/Downgrade 部分进行了解释:

the active subscription is canceled and a new subscription is created.

并且推荐使用Play Billing Library to integrate the Android In-App billing into your app. The upgrade should be done using the launchBillingFlow()方法,将参数设置到BillinFlowParams对象中,使用addOldSku()方法设置要替换的订阅,setSku()方法设置新的目标订阅:

BillingFlowParams.Builder builder = BillingFlowParams.newBuilder()
        .setSku(newSubsSkuId)
        .addOldSku(oldSubsSKUId)
        .setType(SkuType.SUBS);
int responseCode = mBillingClient.launchBillingFlow(builder.build());

如果您想保证为您的用户提供永久功能,而不是更改为应用内产品,您可以创建一个 promo code 来提供给这些用户,然后在他们使用促销后取消订阅代码。