Flutter支付集成插件bootpay的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter支付集成插件Bootpay的使用

简介

bootpay 是一个官方支持的Flutter库,用于在Android、iOS和Web上进行支付集成。此模块4.0.0及以上版本为Bootpay V2,以下版本为Bootpay V1。

功能特点

  • 支持web/ios/android平台。
  • 支持国内主要PG(Payment Gateway)。
  • 支持多种支付方式。
  • 支持卡支付和账户自动支付。
  • 提供小部件支持。
  • 支持身份验证。

安装步骤

pubspec.yaml中添加依赖

dependencies:
  bootpay: last_version

配置项目

Android

无需额外配置。

iOS

需要修改{your project root}/ios/Runner/Info.plist文件:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>kr.co.bootpaySample</string> 
        <key>CFBundleURLSchemes</key>
        <array>
            <string>bootpaySample</string> 
        </array>
    </dict>
</array>

Web

对于Flutter web应用,在web/index.html文件头部添加如下脚本引用:

<script src="https://js.bootpay.co.kr/bootpay-5.0.0.min.js"></script> 
<script src="bootpay_api.js" defer></script>

还需将bootpay_api.js文件添加到你的项目中。

使用示例

初始化Payload对象

Payload payload = Payload();
payload.orderName = '5月学费';
payload.orderId = DateTime.now().millisecondsSinceEpoch.toString();
payload.webApplicationId = webApplicationId;
payload.androidApplicationId = androidApplicationId;
payload.iosApplicationId = iosApplicationId;
payload.price = 1000;
payload.taxFree = 0;

发起支付请求

void goBootpayTest(BuildContext context) {
  Bootpay().requestPayment(
    context: context,
    payload: payload,
    showCloseButton: false,
    onCancel: (String data) {
      print('------- onCancel 1 : $data');
    },
    onError: (String data) {
      print('------- onError: $data');
    },
    onClose: () {
      print('------- onClose');
      if (!kIsWeb) {
        Bootpay().dismiss(context);
      }
    },
    onIssued: (String data) {
      print('------- onIssued: $data');
    },
    onConfirmAsync: (String data) async {
      return true;
    },
    onDone: (String data) {
      print('------- onDone: $data');
    },
  );
}

更多关于Flutter支付集成插件bootpay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付集成插件bootpay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成Bootpay支付插件的示例代码。这段代码将展示如何设置Bootpay插件、初始化支付会话以及处理支付结果。

1. 添加Bootpay依赖

首先,你需要在pubspec.yaml文件中添加Bootpay的Flutter插件依赖。目前Bootpay可能没有官方的Flutter插件,但假设有一个可用的第三方插件或者通过平台通道与原生代码交互,这里我们假设有一个名为bootpay_flutter的插件。

dependencies:
  flutter:
    sdk: flutter
  bootpay_flutter: ^x.y.z  # 替换为实际的版本号

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

2. 配置Android和iOS平台

Android

android/app/src/main/AndroidManifest.xml中添加必要的权限(如果需要)。

<uses-permission android:name="android.permission.INTERNET"/>

然后,在android/app/build.gradle文件中添加Bootpay SDK的依赖(如果插件没有自动处理)。

dependencies {
    implementation 'com.bootpay:bootpay-android-sdk:x.y.z'  // 替换为实际的版本号
}

iOS

ios/Runner/Info.plist中添加必要的配置(如果需要)。

接着,在ios/Podfile中添加Bootpay SDK的Pod依赖(如果插件没有自动处理)。

pod 'BootpaySDK', '~> x.y.z'  # 替换为实际的版本号

然后运行pod install

3. 初始化Bootpay并进行支付

在你的Flutter项目中,创建一个服务或者一个Dart文件来处理Bootpay的初始化与支付流程。

import 'package:flutter/material.dart';
import 'package:bootpay_flutter/bootpay_flutter.dart'; // 假设插件包名为bootpay_flutter

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Bootpay Integration'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _makePayment,
            child: Text('Pay Now'),
          ),
        ),
      ),
    );
  }

  Future<void> _makePayment() async {
    // 假设BootpayFlutter是一个提供的插件类
    final BootpayFlutter bootpay = BootpayFlutter();

    // 配置Bootpay参数
    final Map<String, dynamic> requestData = {
      'app_key': 'your_app_key',
      'name': 'Product Name',
      'amount': 1000, // 金额,单位:韩元(根据Bootpay的要求调整)
      'currency': 'KRW', // 货币代码
      // 其他必要的参数...
    };

    try {
      // 初始化支付会话
      final Map<String, dynamic> result = await bootpay.requestPayment(requestData);

      // 处理支付结果
      if (result['status'] == 'ready') {
        // 跳转到Bootpay支付页面(这里可能需要平台通道处理)
        // 例如:bootpay.startPayment(result['token']); // 假设的方法调用
        // 注意:实际调用可能依赖于插件提供的API或者平台通道实现
      } else {
        // 处理错误或初始化失败的情况
        print('Payment initialization failed: ${result['message']}');
      }
    } catch (e) {
      // 处理异常
      print('Error during payment initialization: $e');
    }
  }
}

注意:由于Bootpay Flutter插件可能不存在或者API可能有所不同,上述代码中的BootpayFlutter类及其方法(如requestPaymentstartPayment)是假设的。实际集成时,你需要参考Bootpay提供的官方Flutter插件文档或者通过平台通道与原生Bootpay SDK交互。

如果你需要通过平台通道与原生代码交互,你可能需要创建一个MethodChannel,并在原生Android和iOS代码中处理Bootpay的初始化和支付流程,然后在Flutter端调用这些原生方法。这通常涉及到更多的原生开发知识。

回到顶部