Flutter购买管理插件eb_purchase的使用

Flutter购买管理插件eb_purchase的使用

Google Play设置

此包集成了Google Play服务,以实现无缝的内购和订阅管理。以下是集成的详细步骤。


设置

注意:此过程涉及在 Google Play控制台Google Cloud控制台 之间切换。每个步骤都会指定相应的控制台,以确保顺利导航。


1. 启用Google开发者和报告API

位置:Google Cloud控制台
按照以下步骤启用所需的API:

  1. 访问 Google Play Android开发者APIGoogle Play开发者报告API 页面。
  2. 选择或创建一个项目。
  3. 点击每个API的 启用(启用后会显示 管理)。

注意:如果提示创建凭据,请继续到步骤2生成所需的凭据。


2. 创建服务账户

位置:Google Cloud控制台
导航到 IAM & Admin ➡️ Service Account 以创建服务账户。

步骤:
  1. 点击 创建服务账户
  2. 输入账户名称、服务账户ID(通常是您的应用名称)和描述(可选)。
  3. 点击 创建并继续
  4. 添加以下 角色
    • Pub/Sub Admin(启用平台服务器通知)
    • Monitoring Viewer(监控通知队列)
  5. 跳过可选步骤并点击 完成
创建并下载JSON密钥:
  1. 服务账户 部分,找到您的服务账户并从操作菜单中选择 管理密钥
  2. 点击 添加密钥 ➡️ 创建新密钥,选择 JSON,然后下载密钥。

授予财务访问权限

位置:Google Play控制台

  1. 点击 所有应用 部分。
  2. 导航到 用户和权限
  3. 点击 邀请新用户 并邀请在步骤2中创建的服务账户电子邮件。
  4. 帐户权限 选项卡下,分配以下权限:
    • 查看应用信息和下载批量报告(只读)
    • 查看财务数据、订单和取消调查响应
    • 管理订单和订阅
  5. 应用权限 选项卡下选择您的应用。
  6. 发送邀请并确保帐户处于活动状态。

4. 提供JSON凭据给API


5. 上传签名APK/Android应用包

位置:Google Play控制台

确保以下内容:

  • 已上传签名APK或Android应用包。
  • 发布版本在 封闭测试轨道开放测试轨道 中,并且已添加测试人员。
  • 订阅处于 活动 状态。

6. 创建主题和订阅

位置:Google Cloud控制台

创建主题
  1. 访问 创建主题
  2. 输入主题ID(通常是应用名称),保持其他默认选项不变。
  3. 点击 创建

重要注意事项:添加以下角色/主体

  • Pub/Sub Admin (1)

    • 邮箱:your-project@your-project.iam.gserviceaccount.com
  • Pub/Sub Publisher (2)

    • 邮箱:google-play-developer-notifications@system.gserviceaccount.com
    • 邮箱:your-project@your-project.iam.gserviceaccount.com
创建订阅
  1. 访问 创建订阅
  2. 选择之前创建的主题。
  3. 将交付类型设置为 Push 并保持所有默认选项。
  4. Endpoint URL 中添加API开发人员提供的服务器URL。
  5. 点击 创建

重要注意事项:添加以下角色/主体

  • Pub/Sub Subscriber (2)
    • 邮箱:google-play-developer-notifications@system.gserviceaccount.com
    • 邮箱:your-project@your-project.iam.gserviceaccount.com

在货币化中添加主题

位置:Google Play控制台

  1. 前往 通过Play进行货币化
  2. 点击 货币化设置
  3. 管理通知部分,勾选 启用实时通知
  4. Google Play计费 下添加在上一步中创建的主题名称。
  5. 订阅 下,选择 订阅、作废购买和所有一次性产品

Apple App Store设置

此指南概述了配置您的应用以支持Apple App Store所需的步骤。App-Specific Shared SecretIn-App Purchase KeyApp Store Connect API Key 对于无缝的订阅管理、产品导入和应用内购买配置至关重要。


设置

1. 生成App-Specific Shared Secret

按照以下步骤在App Store Connect中生成一个 App-Specific Shared Secret

  1. 登录到App Store Connect
  2. 导航到您的应用
    • 从仪表板进入 “我的应用” 并选择要配置的应用。
  3. 访问共享秘密部分
    • 在左侧菜单中,进入 “常规” 下的 “应用信息”
    • 在右侧找到 “App-Specific Shared Secret” 并点击 “管理”
  4. 生成并复制共享秘密
    • 如果不存在,点击 “生成共享秘密”;否则复制现有共享秘密。
    • 安全保存共享秘密,因为它将在下一步中使用。

2. 分享共享秘密给API开发人员


应用内购买密钥配置

当设置一个新的App Store应用时,您需要添加一个 In-App Purchase Key。此配置步骤是为了提供准确的国家、货币和定价信息,并启用功能如订阅优惠和订单ID查询。

重要注意事项

  • 将应用内购买密钥添加到已有交易的应用中可能会更改历史数据,因为以前的估计数据将被Apple提供的数据纠正。
  • 订阅是一种应用内购买,因此应用内购买密钥适用于所有类型的购买,包括消耗品、非消耗品和订阅。

1. 生成应用内购买密钥

  1. 导航到应用内购买设置
    • 在App Store Connect中,转到 用户和访问 → 集成 → 应用内购买
  2. 生成或访问密钥
    • 点击 生成应用内购买密钥,或者如果已存在密钥,点击 Active 表头旁边的 “+” 符号。
    • 输入密钥名称并确认。
  3. 下载密钥
    • 生成后,密钥将出现在 Active Keys 下。
    • 下载 .p8密钥文件 并安全存储。

2. 与API开发人员分享应用内购买密钥

3. 提供发行人ID

  1. 定位发行人ID
    • 在App Store Connect中,导航到 用户和访问 → 集成 → 应用内购买
    • 发行人ID位于页面顶部。

注意:如果发行人ID缺失,创建一个 App Store Connect API密钥 来生成发行人ID。


App Store Connect API密钥配置


1. 创建App Store Connect API密钥

  1. 导航到App Store Connect
    • 在App Store Connect中,转到 用户和访问 → 集成 → App Store Connect API
  2. 创建新的API密钥
    • 点击 创建API密钥 并将访问级别设置为 App Manager 或更高。
    • 创建后,下载API密钥的 .p8文件 并记录 Issuer ID(位于“Active”表上方)。

重要注意事项:此密钥只能下载一次,请妥善保管。


2. 添加服务器通知

  1. 选择您的应用。
  2. General 下进入 App Information
  3. App Store服务器通知 下添加由API开发人员提供的生产环境和沙盒环境服务器URL。

完整示例代码

以下是一个完整的示例代码,展示如何在Flutter中使用eb_purchase插件:

// example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:eb_purchase/eb_purchase.dart'; // 引入eb_purchase插件

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Demo',
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final EbPurchase _purchase = EbPurchase(); // 初始化插件实例

  Future<void> initiatePurchase() async {
    try {
      // 开始购买流程
      await _purchase.initiatePurchase('product_id');
      print("购买成功!");
    } catch (e) {
      print("购买失败: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter eb_purchase示例'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: initiatePurchase,
          child: Text('开始购买'),
        ),
      ),
    );
  }
}
1 回复

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


eb_purchase 是一个用于 Flutter 的应用内购买(In-App Purchase)管理插件。它简化了应用内购买流程,支持 iOS 和 Android 平台。以下是如何使用 eb_purchase 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 eb_purchase 依赖:

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

然后运行 flutter pub get 来安装依赖。

2. 初始化插件

在你的 Dart 代码中,首先需要初始化 eb_purchase 插件。通常,你可以在 main.dart 文件中进行初始化:

import 'package:eb_purchase/eb_purchase.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await EbPurchase.init();
  runApp(MyApp());
}

3. 获取产品信息

在应用启动后,你可以获取应用内购买的产品信息。首先,你需要在应用商店(如 Google Play 或 App Store)中配置产品 ID。然后,使用 EbPurchase.getProducts 方法获取产品信息:

List<String> productIds = ['com.example.product1', 'com.example.product2'];
List<ProductDetails> products = await EbPurchase.getProducts(productIds);

4. 发起购买

当用户选择购买某个产品时,你可以使用 EbPurchase.buyProduct 方法发起购买:

ProductDetails product = products[0]; // 假设用户选择了第一个产品
PurchaseDetails purchaseDetails = await EbPurchase.buyProduct(product);

5. 处理购买结果

购买完成后,你可以通过 purchaseDetails 对象来处理购买结果:

if (purchaseDetails.status == PurchaseStatus.purchased) {
  // 购买成功,处理相关逻辑
  print('Purchase successful: ${purchaseDetails.productID}');
} else if (purchaseDetails.status == PurchaseStatus.error) {
  // 购买失败,处理错误
  print('Purchase failed: ${purchaseDetails.error}');
}

6. 恢复购买

对于非消耗型产品(如订阅或永久解锁功能),你可以提供“恢复购买”功能,以便用户在重新安装应用或更换设备后恢复之前的购买:

List<PurchaseDetails> restoredPurchases = await EbPurchase.restorePurchases();
for (var purchase in restoredPurchases) {
  if (purchase.status == PurchaseStatus.purchased) {
    // 处理恢复的购买
    print('Restored purchase: ${purchase.productID}');
  }
}

7. 处理订阅

如果你有订阅型产品,你可以使用 EbPurchase.getSubscriptions 方法获取订阅信息,并使用 EbPurchase.buySubscription 方法发起订阅购买:

List<String> subscriptionIds = ['com.example.subscription1'];
List<ProductDetails> subscriptions = await EbPurchase.getSubscriptions(subscriptionIds);

ProductDetails subscription = subscriptions[0];
PurchaseDetails purchaseDetails = await EbPurchase.buySubscription(subscription);

8. 监听购买状态

你还可以通过监听购买状态来实时处理购买事件:

EbPurchase.purchaseStream.listen((purchaseDetails) {
  if (purchaseDetails.status == PurchaseStatus.purchased) {
    // 处理购买成功
  } else if (purchaseDetails.status == PurchaseStatus.error) {
    // 处理购买失败
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!