flutter如何实现in_app_purchase功能
我在Flutter项目中需要集成应用内购买功能,看了官方文档但还是遇到一些问题。具体想请教:
- 在Flutter中集成in_app_purchase插件时,iOS和Android的配置有什么区别?
- 如何正确处理购买流程中的各种状态(如pending、purchased、failed)?
- 测试时应该使用真实账户还是沙盒测试账户?如何切换到测试环境?
- 有没有完整的代码示例可以参考,特别是处理订阅类型商品的部分?
项目比较急,希望能得到详细解答,谢谢!
2 回复
在Flutter中实现应用内购买(in_app_purchase)功能,可以按照以下步骤操作:
-
添加依赖:在
pubspec.yaml文件中添加in_app_purchase依赖,并运行flutter pub get安装。 -
配置平台:
- Android:在 Google Play Console 中创建商品,并在应用的
build.gradle中配置 billing 权限。 - iOS:在 App Store Connect 中设置商品,并在 Xcode 中启用 In-App Purchases 功能。
- Android:在 Google Play Console 中创建商品,并在应用的
-
初始化连接:使用
InAppPurchase.instance.isAvailable()检查购买功能是否可用。 -
获取商品列表:通过
queryProductDetails()获取已配置的商品信息。 -
购买流程:
- 调用
buyConsumable()或buyNonConsumable()发起购买。 - 监听购买状态,使用
purchaseUpdatedStream处理购买结果(成功、失败或待处理)。
- 调用
-
验证购买:建议通过后端服务器验证购买凭证,防止伪造。
-
恢复购买:对于非消耗型商品,调用
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);
注意事项:
- 测试:使用沙盒环境测试(iOS Sandbox Tester / Google License Test)
- 收据验证:重要购买应在服务器端验证
- 商品配置:确保应用商店商品ID与代码中一致
- 权限:iOS需在项目中启用In-App Purchase能力
完整流程:
- 检查购买可用性
- 查询商品信息
- 显示商品列表
- 处理购买请求
- 验证购买结果
- 提供商品内容
建议参考官方文档获取最新配置细节和最佳实践。

