flutter如何实现iOS苹果支付

在Flutter中如何实现iOS苹果支付功能?需要集成哪些插件或SDK?具体步骤是什么?是否需要在App Store Connect中配置什么?支付成功后如何验证订单?有没有完整的代码示例或最佳实践可以分享?

2 回复

Flutter中实现苹果支付,需使用in_app_purchase插件。步骤:

  1. 配置App Store Connect,创建商品。
  2. 初始化插件,获取商品列表。
  3. 监听购买流程,处理交易状态。
  4. 验证收据,完成购买。

注意遵守苹果审核规则。

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


在 Flutter 中实现 iOS 应用内购买(苹果支付),可以使用官方插件 in_app_purchase。以下是基本步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  in_app_purchase: ^3.1.7

2. 配置 iOS 项目

  • 在 App Store Connect 中创建商品(消耗型、非消耗型、订阅等)。
  • 在 Xcode 中启用应用内购买功能:项目设置 → Signing & Capabilities → +Capability → In-App Purchase。

3. 初始化支付

import 'package:in_app_purchase/in_app_purchase.dart';

class IAPManager {
  final InAppPurchase _iap = InAppPurchase.instance;

  // 初始化并监听购买流
  void initialize() {
    _iap.purchaseStream.listen((List<PurchaseDetails> purchases) {
      _handlePurchase(purchases);
    });
  }

  // 获取商品信息
  Future<void> loadProducts(Set<String> productIds) async {
    final ProductDetailsResponse response = 
        await _iap.queryProductDetails(productIds);
    if (response.notFoundIDs.isNotEmpty) {
      print("未找到商品: ${response.notFoundIDs}");
    }
    List<ProductDetails> products = response.productDetails;
    // 显示商品列表
  }

  // 购买商品
  Future<void> buyProduct(ProductDetails product) async {
    final PurchaseParam purchaseParam = PurchaseParam(
      productDetails: product,
    );
    await _iap.buyNonConsumable(purchaseParam: purchaseParam); // 非消耗型
    // 或使用 buyConsumable(消耗型)
  }

  // 处理购买结果
  void _handlePurchase(List<PurchaseDetails> purchases) {
    for (PurchaseDetails purchase in purchases) {
      if (purchase.status == PurchaseStatus.purchased) {
        // 验证收据并交付商品
        _verifyAndDeliverProduct(purchase);
      } else if (purchase.status == PurchaseStatus.error) {
        print("购买失败: ${purchase.error}");
      }
      if (purchase.pendingCompletePurchase) {
        _iap.completePurchase(purchase); // 完成交易
      }
    }
  }

  void _verifyAndDeliverProduct(PurchaseDetails purchase) {
    // 向服务器验证收据(建议)
    // 交付商品给用户
    print("购买成功: ${purchase.productID}");
  }
}

4. 注意事项

  • 沙盒测试:使用 iOS 沙盒环境测试,不要用真实账户。
  • 收据验证:关键步骤!建议通过服务器向 Apple 验证收据防止伪造。
  • 商品类型:区分消耗型(如金币)、非消耗型(永久功能)和订阅。
  • 恢复购买:使用 restorePurchases() 让用户恢复非消耗型和订阅商品。

5. 完整流程

  1. 初始化监听购买事件。
  2. 查询并显示可购买商品。
  3. 用户选择商品后调用购买方法。
  4. 处理购买结果,验证收据并交付内容。
  5. 完成交易。

确保遵守 Apple 审核指南,正确处理网络异常和用户取消操作。

回到顶部