如何在Flutter in_app_purchase中为Google Play订阅设置Offer Token
在Flutter中使用in_app_purchase指定Google Play订阅优惠
核心实现逻辑
Flutter的in_app_purchase包封装了Google Play Billing Library,要指定「Developer Determined」类型的订阅优惠,核心是在发起购买时传入对应优惠的offerToken,而非将优惠ID当作产品ID使用。
具体操作步骤
获取订阅产品的优惠信息
调用InAppPurchase.instance.queryProductDetails()获取目标订阅的ProductDetails对象,该对象的subscriptionOfferDetails属性包含了该订阅下所有可用的优惠配置,每个优惠对应一个SubscriptionOfferDetails实例,其中的offerToken就是我们需要的标识。筛选目标优惠的Token
遍历subscriptionOfferDetails列表,通过你在Google Play控制台设置的优惠ID匹配到对应offerToken:String targetOfferToken = ''; // 假设productDetails是已获取的目标订阅产品详情 for (var offer in productDetails.subscriptionOfferDetails!) { // 通过优惠ID匹配目标优惠 if (offer.identifier == '你的优惠ID') { targetOfferToken = offer.offerToken; break; } }发起带优惠的购买请求
创建PurchaseParam时传入subscriptionOfferToken参数,即可触发带指定优惠的订阅购买:final PurchaseParam purchaseParam = PurchaseParam( productDetails: productDetails, subscriptionOfferToken: targetOfferToken, ); await InAppPurchase.instance.buyNonConsumable(purchaseParam: purchaseParam);
注意事项
- 确保使用的
in_app_purchase包为最新稳定版,旧版本可能不支持subscriptionOfferToken参数。 - 仅当优惠资格条件设为「Developer Determined」时,才能通过此方式为特定用户指定优惠;其他资格类型的优惠,Google Play会自动验证用户资格,不符合条件的请求会被拒绝。
内容的提问来源于stack exchange,提问作者Matthew Keller
相关产品推荐
相关产品推荐

