Flutter中如何使用in_app_purchase插件

我在Flutter项目中集成了in_app_purchase插件,但在实现应用内购买功能时遇到了几个问题:

  1. 如何正确初始化插件并连接应用商店?
  2. 如何查询和显示可购买的商品列表?
  3. 如何处理购买流程,包括购买成功和失败的情况?
  4. 是否需要额外的服务器验证,如何实现?
  5. 测试时有哪些注意事项,比如沙盒环境的使用?
    希望能得到具体的代码示例和步骤说明,谢谢!
2 回复

在Flutter中使用in_app_purchase插件,首先在pubspec.yaml中添加依赖,然后导入包。初始化连接,查询商品信息,监听购买流,处理购买逻辑,最后验证收据并完成交易。

更多关于Flutter中如何使用in_app_purchase插件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用in_app_purchase插件进行应用内购买,主要步骤包括初始化插件、加载商品、处理购买流程和验证收据。以下是详细说明和示例代码:

1. 添加依赖

pubspec.yaml中添加依赖:

dependencies:
  in_app_purchase: ^5.1.1

2. 初始化插件

在应用启动时初始化插件,并设置监听器:

import 'package:in_app_purchase/in_app_purchase.dart';

class PurchaseService {
  static final InAppPurchase _iap = InAppPurchase.instance;

  static Future<void> init() async {
    // 检查是否支持应用内购买
    final bool available = await _iap.isAvailable();
    if (!available) {
      // 处理不支持的情况
      return;
    }

    // 监听购买更新
    final Stream<List<PurchaseDetails>> purchaseUpdates = _iap.purchaseStream;
    purchaseUpdates.listen(_handlePurchaseUpdate);
  }

  static void _handlePurchaseUpdate(List<PurchaseDetails> purchases) {
    for (final purchase in purchases) {
      if (purchase.status == PurchaseStatus.purchased) {
        // 验证收据并交付商品
        _verifyPurchase(purchase);
      }
    }
  }
}

3. 加载可购买商品

获取商品信息(需先在应用商店配置商品):

static Future<List<ProductDetails>> loadProducts() async {
  const Set<String> productIds = {'product1', 'product2'};
  final ProductDetailsResponse response = await _iap.queryProductDetails(productIds);
  return response.productDetails;
}

4. 发起购买

使用buyConsumablebuyNonConsumable方法:

static Future<void> buyProduct(ProductDetails product) async {
  final PurchaseParam purchaseParam = PurchaseParam(productDetails: product);
  await _iap.buyConsumable(purchaseParam: purchaseParam);
}

5. 验证收据

建议在服务器端验证购买凭证(以Google Play为例):

static void _verifyPurchase(PurchaseDetails purchase) async {
  // 将purchase.verificationData发送到服务器验证
  // 验证成功后更新用户权益
}

注意事项:

  • 配置商店:在Apple App Store Connect和Google Play Console中配置商品。
  • 沙盒测试:使用测试账户在沙盒环境中测试。
  • 处理状态:正确处理购买状态(如pending、error)。
  • 合规性:遵循各平台的应用内购买政策。

通过以上步骤,即可在Flutter应用中集成应用内购买功能。

回到顶部