Flutter应用内购买插件hupad_in_app_purchase的使用

hupad_in_app_purchase介绍

hupad_in_app_purchase 是一个用于 Flutter 应用的插件,支持 Android 和 iOS 平台的应用内购买功能。通过此插件,您可以轻松实现应用内的商品购买逻辑。


hupad_in_app_purchase使用步骤

以下是使用 hupad_in_app_purchase 插件的基本步骤:

  1. 添加依赖
    pubspec.yaml 文件中添加以下依赖项:

    dependencies:
      hupad_in_app_purchase: ^1.0.0
    
  2. 初始化插件
    创建一个 _inAppPurchasePlugin 实例,并在应用启动时完成初始化。

  3. 实现购买逻辑
    使用插件提供的方法触发购买,并处理成功或失败的回调。


完整示例代码

以下是一个完整的示例代码,展示如何使用 hupad_in_app_purchase 插件进行应用内购买。

示例代码

import 'package:flutter/material.dart';
import 'package:hupad_in_app_purchase/in_app_purchase.dart'; // 导入插件

void main() {
  runApp(const MyApp()); // 启动应用
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState(); // 创建状态管理类
}

class _MyAppState extends State<MyApp> {
  final _inAppPurchasePlugin = InAppPurchase(); // 初始化插件实例
  final _messangerKey = GlobalKey<ScaffoldMessengerState>(); // 消息管理器

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: _messangerKey, // 设置消息管理器
      title: "In app purchase", // 应用标题
      home: Scaffold(
        body: Center( // 居中显示购买按钮
          child: InkWell(
            onTap: () {
              // 触发购买操作
              _inAppPurchasePlugin.buy(
                "f70a7225-e413-4138-9431-104958489623", // 商品ID
                (String productId, String trackingCode) { // 购买成功回调
                  debugPrint(
                      'productId: $productId, trackingCode: $trackingCode');
                  _messangerKey.currentState?.showSnackBar(SnackBar(
                    content: Text('Payment was successful \ntxid: $trackingCode'),
                  ));
                },
                (error) { // 购买失败回调
                  _messangerKey.currentState?.showSnackBar(SnackBar(
                    content: Text(error),
                  ));
                },
              );
            },
            child: Stack(
              children: [
                Image.asset('assets/background.jpg', // 背景图片
                  width: double.infinity,
                  height: double.infinity,
                  fit: BoxFit.fill,
                ),
                Center(
                  child: Text(
                    "点击购买商品", // 显示购买文本
                    style: TextStyle(fontSize: 20, color: Colors.white),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter应用内购买插件hupad_in_app_purchase的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用内购买插件hupad_in_app_purchase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


hupad_in_app_purchase 是一个用于 Flutter 的应用内购买插件,它可以帮助开发者在应用中实现应用内购买功能。以下是如何使用 hupad_in_app_purchase 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 hupad_in_app_purchase 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  hupad_in_app_purchase: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在应用的 main.dart 文件中初始化插件:

import 'package:flutter/material.dart';
import 'package:hupad_in_app_purchase/hupad_in_app_purchase.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await HupadInAppPurchase.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'In-App Purchase Demo',
      home: PurchaseScreen(),
    );
  }
}

3. 获取产品信息

在需要的地方获取应用内购买的产品信息:

class PurchaseScreen extends StatefulWidget {
  @override
  _PurchaseScreenState createState() => _PurchaseScreenState();
}

class _PurchaseScreenState extends State<PurchaseScreen> {
  List<ProductDetails> _products = [];

  @override
  void initState() {
    super.initState();
    _loadProducts();
  }

  Future<void> _loadProducts() async {
    final List<String> productIds = ['com.example.product1', 'com.example.product2'];
    final List<ProductDetails> products = await HupadInAppPurchase.getProducts(productIds);
    setState(() {
      _products = products;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('In-App Purchase'),
      ),
      body: ListView.builder(
        itemCount: _products.length,
        itemBuilder: (context, index) {
          final product = _products[index];
          return ListTile(
            title: Text(product.title),
            subtitle: Text(product.description),
            trailing: Text(product.price),
            onTap: () => _purchaseProduct(product),
          );
        },
      ),
    );
  }

  Future<void> _purchaseProduct(ProductDetails product) async {
    try {
      final PurchaseDetails purchaseDetails = await HupadInAppPurchase.purchaseProduct(product.id);
      if (purchaseDetails.status == PurchaseStatus.purchased) {
        // 处理购买成功逻辑
        print('Purchase successful: ${product.id}');
      } else {
        // 处理购买失败或取消逻辑
        print('Purchase failed or canceled: ${product.id}');
      }
    } catch (e) {
      print('Error purchasing product: $e');
    }
  }
}

4. 处理购买结果

_purchaseProduct 方法中,你可以根据 PurchaseDetails 的状态来处理购买结果。例如,如果购买成功,你可以解锁相应的功能或内容。

5. 恢复购买

如果你的应用支持恢复购买功能,你可以使用以下代码来恢复用户的购买:

Future<void> _restorePurchases() async {
  try {
    final List<PurchaseDetails> restoredPurchases = await HupadInAppPurchase.restorePurchases();
    for (var purchase in restoredPurchases) {
      if (purchase.status == PurchaseStatus.purchased) {
        // 处理恢复购买逻辑
        print('Restored purchase: ${purchase.productID}');
      }
    }
  } catch (e) {
    print('Error restoring purchases: $e');
  }
}
回到顶部