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

Flutter如何获取Google Play控制台订阅下的基础方案及优惠?

解决in_app_purchase获取Google Play订阅基础方案及优惠的问题

你当前的代码仅获取了订阅的基础信息,Google Play订阅的基础方案和**优惠方案(免费试用、折扣等)**需要通过in_app_purchase的Android专属扩展字段提取,具体操作如下:

1. 依赖与平台适配

首先确保在pubspec.yaml中添加Android平台的扩展依赖:

dependencies:
  in_app_purchase: ^最新版本
  in_app_purchase_android: ^最新版本

并导入对应包:

import 'package:in_app_purchase_android/in_app_purchase_android.dart';
import 'dart:io' show Platform;

2. 修改代码获取完整订阅信息

更新遍历逻辑,加入基础方案和优惠方案的解析:

initStoreInfo() async {
  final bool isPurchaseAvailble = await inAppPurchase.isAvailable();
  debugPrint("App_Purchase_avalible--> $isPurchaseAvailble");
  if (isPurchaseAvailble) {
    ProductDetailsResponse productDetailResponse =
        await inAppPurchase.queryProductDetails(ids.toSet());
    debugPrint("USER_PRODUCT--> ${productDetailResponse.productDetails[0]}");
    List<ProductDetails> products = productDetailResponse.productDetails;
    for (ProductDetails product in products) {
      print('product:-> ${product.id}');
      print('price:-> ${product.price}');
      print('title:-> ${product.title}');
      print('description:-> ${product.description}');
      print('rawprice:-> ${product.rawPrice}');
      print('currencyCode:-> ${product.currencyCode}');
      print('currencySymbol:-> ${product.currencySymbol}');

      // 获取基础订阅方案信息(计费周期、周期数)
      if (product.subscriptionTerms != null) {
        print('=== 基础方案信息 ===');
        for (var term in product.subscriptionTerms!) {
          print('计费周期: ${term.billingPeriod}');
          print('周期数量: ${term.billingCycleCount}');
          print('周期单位: ${term.billingPeriodUnit.name}');
        }
      }

      // 获取Google Play专属优惠方案(免费试用、折扣等)
      if (Platform.isAndroid && product is GooglePlayProductDetails) {
        print('=== 优惠方案信息 ===');
        for (var offer in product.subscriptionOfferDetails!) {
          print('优惠ID: ${offer.offerId}');
          print('优惠标签: ${offer.offerTags}');
          // 解析优惠的价格阶段
          for (var phase in offer.pricingPhases.pricingPhaseList) {
            print('优惠阶段价格: ${phase.formattedPrice}');
            print('优惠阶段周期: ${phase.billingPeriod}');
            print('优惠阶段周期数: ${phase.billingCycleCount}');
            print('优惠阶段类型: ${phase.pricePhaseType.name}');
          }
        }
      }
    }
    setState(() {
      _products = productDetailResponse.productDetails;
    });
  }
}

3. 核心字段说明

  • 基础方案:通过product.subscriptionTerms获取,包含订阅的常规计费规则(如每月/每年计费、总周期数)。
  • 优惠方案:通过GooglePlayProductDetails.subscriptionOfferDetails获取,每个优惠方案对应控制台配置的一项福利(免费试用、折扣期等),每个方案下的pricingPhaseList包含具体的价格阶段信息。

内容的提问来源于stack exchange,提问作者KARAN GHUBE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:29