flutter如何实现in_app_purchase功能

我在Flutter项目中需要集成应用内购买功能,看了官方文档但还是遇到一些问题。具体想请教:

  1. 在Flutter中集成in_app_purchase插件时,iOS和Android的配置有什么区别?
  2. 如何正确处理购买流程中的各种状态(如pending、purchased、failed)?
  3. 测试时应该使用真实账户还是沙盒测试账户?如何切换到测试环境?
  4. 有没有完整的代码示例可以参考,特别是处理订阅类型商品的部分?

项目比较急,希望能得到详细解答,谢谢!

2 回复

在Flutter中实现应用内购买(in_app_purchase)功能,可以按照以下步骤操作:

  1. 添加依赖:在 pubspec.yaml 文件中添加 in_app_purchase 依赖,并运行 flutter pub get 安装。

  2. 配置平台

    • Android:在 Google Play Console 中创建商品,并在应用的 build.gradle 中配置 billing 权限。
    • iOS:在 App Store Connect 中设置商品,并在 Xcode 中启用 In-App Purchases 功能。
  3. 初始化连接:使用 InAppPurchase.instance.isAvailable() 检查购买功能是否可用。

  4. 获取商品列表:通过 queryProductDetails() 获取已配置的商品信息。

  5. 购买流程

    • 调用 buyConsumable()buyNonConsumable() 发起购买。
    • 监听购买状态,使用 purchaseUpdatedStream 处理购买结果(成功、失败或待处理)。
  6. 验证购买:建议通过后端服务器验证购买凭证,防止伪造。

  7. 恢复购买:对于非消耗型商品,调用 restorePurchases() 允许用户恢复已购买内容。

注意:务必遵循各平台的政策,测试时使用沙盒环境。

更多关于flutter如何实现in_app_purchase功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中实现应用内购买功能,可以使用 in_app_purchase 官方插件。以下是实现步骤和示例代码:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  in_app_purchase: ^3.1.7

2. 配置应用商店

  • Android:在 Google Play Console 创建商品并获取 ID。
  • iOS:在 App Store Connect 创建应用内购买项目。

3. 初始化购买流

import 'package:in_app_purchase/in_app_purchase.dart';

class IAPManager {
  final InAppPurchase _iap = InAppPurchase.instance;
  
  // 初始化
  void init() {
    _iap.isAvailable().then((available) {
      if (available) {
        _getProducts();
        _listenToPurchases();
      }
    });
  }

  // 获取商品列表
  void _getProducts() {
    const Set<String> _productIds = {'product1', 'product2'};
    ProductDetailsResponse response = await _iap.queryProductDetails(_productIds);
    List<ProductDetails> products = response.productDetails;
  }

  // 监听购买状态
  void _listenToPurchases() {
    _iap.purchaseStream.listen((List<PurchaseDetails> purchases) {
      for (PurchaseDetails purchase in purchases) {
        if (purchase.status == PurchaseStatus.purchased) {
          _verifyPurchase(purchase);
        }
      }
    });
  }

  // 购买商品
  void buyProduct(ProductDetails product) {
    final PurchaseParam purchaseParam = PurchaseParam(productDetails: product);
    _iap.buyConsumable(purchaseParam: purchaseParam);
  }

  // 验证购买(建议在服务器端进行)
  void _verifyPurchase(PurchaseDetails purchase) {
    // 发送收据到服务器验证
  }
}

4. 使用示例

IAPManager iapManager = IAPManager();

// 初始化
iapManager.init();

// 购买商品
iapManager.buyProduct(productDetails);

注意事项:

  1. 测试:使用沙盒环境测试(iOS Sandbox Tester / Google License Test)
  2. 收据验证:重要购买应在服务器端验证
  3. 商品配置:确保应用商店商品ID与代码中一致
  4. 权限:iOS需在项目中启用In-App Purchase能力

完整流程:

  1. 检查购买可用性
  2. 查询商品信息
  3. 显示商品列表
  4. 处理购买请求
  5. 验证购买结果
  6. 提供商品内容

建议参考官方文档获取最新配置细节和最佳实践。

回到顶部