You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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使用。

具体操作步骤

  1. 获取订阅产品的优惠信息
    调用InAppPurchase.instance.queryProductDetails()获取目标订阅的ProductDetails对象,该对象的subscriptionOfferDetails属性包含了该订阅下所有可用的优惠配置,每个优惠对应一个SubscriptionOfferDetails实例,其中的offerToken就是我们需要的标识。

  2. 筛选目标优惠的Token
    遍历subscriptionOfferDetails列表,通过你在Google Play控制台设置的优惠ID匹配到对应offerToken:

    String targetOfferToken = '';
    // 假设productDetails是已获取的目标订阅产品详情
    for (var offer in productDetails.subscriptionOfferDetails!) {
      // 通过优惠ID匹配目标优惠
      if (offer.identifier == '你的优惠ID') {
        targetOfferToken = offer.offerToken;
        break;
      }
    }
    
  3. 发起带优惠的购买请求
    创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:54:38