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
相关产品推荐
相关产品推荐

