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

如何使用Flutter in_app_purchase包一次性购买多个产品

如何通过in_app_purchase包实现一次性购买多个非消耗型产品?

解决方案

in_app_purchase包原生支持一次性购买多个非消耗型产品,核心使用InAppPurchase.instance.buyProducts方法即可实现,具体步骤如下:

  1. 准备目标产品ID列表
    先通过queryProductDetails接口获取要购买的非消耗型产品对应的ProductDetails对象,提取这些产品的ID组成字符串列表。

  2. 发起批量购买请求
    直接调用buyProducts方法传入产品ID列表,即可发起批量购买流程:

    // productIds为目标非消耗型产品的ID集合
    await InAppPurchase.instance.buyProducts(productIds);
    

    若需要传递用户标识等额外参数,可构造PurchaseParam对象传入:

    final purchaseParam = PurchaseParam(
      productDetails: targetProductDetails, // 对应产品的ProductDetails列表
      applicationUserName: 'user_xxx', // 可选:关联的用户唯一标识
    );
    await InAppPurchase.instance.buyProducts(productIds, purchaseParam: purchaseParam);
    
  3. 处理批量购买结果
    通过监听purchaseStream逐个处理每个产品的购买状态,每个PurchaseDetails对象对应单个产品的购买结果:

    InAppPurchase.instance.purchaseStream.listen((List<PurchaseDetails> purchases) {
      for (final purchase in purchases) {
        switch (purchase.status) {
          case PurchaseStatus.pending:
            // 显示购买中状态提示
            break;
          case PurchaseStatus.purchased:
            // 验证购买凭证、发放对应产品权益,最后调用completePurchase确认
            await InAppPurchase.instance.completePurchase(purchase);
            break;
          case PurchaseStatus.error:
            // 处理购买失败场景(如支付错误、产品不可用)
            break;
          case PurchaseStatus.canceled:
            // 处理用户主动取消购买的情况
            break;
        }
      }
    });
    

注意事项

  • 平台兼容性:Google Play和App Store均支持非消耗型产品的批量购买,但需确保产品在对应开发者后台(Google Play Console/App Store Connect)中配置正确。
  • 完成购买确认:每个成功购买的产品都需要单独调用completePurchase,避免后续重复触发购买事件。
  • 部分成功场景处理:批量购买可能出现部分产品成功、部分失败的情况,需做好状态同步和用户提示,避免权益发放遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:32:52