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

Flutter中如何实现多数量应用内商品购买?

应用内购买积分(支持多数量)的实现方案

可行,但无法通过ProductDetails直接指定购买数量——因为in_app_purchase及底层的App Store/Google Play API均不支持单商品多数量购买。推荐以下两种合规方案:

方案一:创建阶梯式积分套餐(推荐)

这是最符合应用商店政策、实现成本最低的方式:

  • 在App Store Connect和Google Play Console中,为不同数量的积分创建独立SKU,例如:
    • 1_credit:1积分/$1
    • 5_credits:5积分/$5
    • 10_credits:10积分/$10
  • 应用内提供这些套餐选项供用户选择,选中后发起对应SKU的购买请求。

代码示例

  1. 定义SKU列表并查询商品详情:
const List<String> creditSkuList = ['1_credit', '5_credits', '10_credits'];
List<ProductDetails> _creditProducts = [];

Future<void> loadCreditProducts() async {
  final ProductDetailsResponse response = 
      await InAppPurchase.instance.queryProductDetails(creditSkuList.toSet());
  if (response.notFoundIDs.isNotEmpty) {
    // 处理未找到的SKU逻辑
  }
  _creditProducts = response.productDetails;
}
  1. 用户选择套餐后发起购买:
void purchaseCredits(String targetSku) {
  final ProductDetails? selectedProduct = 
      _creditProducts.firstWhereOrNull((p) => p.id == targetSku);
  if (selectedProduct == null) return;
  
  final PurchaseParam purchaseParam = PurchaseParam(productDetails: selectedProduct);
  // 积分属于消耗型商品,调用buyConsumable
  InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam);
}
  1. 购买成功后,根据SKU给用户增加对应积分:
void handlePurchaseSuccess(PurchaseDetails purchase) {
  switch(purchase.productID) {
    case '1_credit':
      addUserCredits(1);
      break;
    case '5_credits':
      addUserCredits(5);
      break;
    case '10_credits':
      addUserCredits(10);
      break;
  }
}

方案二:自定义数量购买(仅特殊场景考虑)

若需支持用户输入任意数量积分,需结合服务器验证,但需注意合规风险:

  • 仍以1积分的SKU作为基础购买单元
  • 用户输入数量N后,引导用户重复购买N次1积分商品(体验较差,不推荐)
  • 或通过服务器生成对应金额的订单,但这种方式可能违反应用商店「应用内购买必须使用官方SKU」的政策,需谨慎评估。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:46:08