Flutter如何接入银联支付

在Flutter项目中需要接入银联支付功能,尝试了官方文档但遇到一些问题:

  1. 银联官方提供的SDK是否支持Flutter?是否需要通过平台通道实现?
  2. 有没有现成的Flutter插件可以直接使用?
  3. 在Android和iOS端配置银联支付时有哪些注意事项?
  4. 测试环境如何搭建?需要哪些参数才能完成联调?
    希望有实际经验的大佬能分享一下具体实现步骤和避坑指南!
2 回复

Flutter接入银联支付可通过以下步骤实现:

  1. 引入银联官方SDK插件,如flutter_unionpay
  2. 配置Android和iOS的支付参数,包括商户ID和支付环境。
  3. 调用插件API发起支付请求并处理回调结果。

注意:需在银联开放平台注册应用并获取必要参数。

更多关于Flutter如何接入银联支付的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中接入银联支付,可以通过以下步骤实现:

1. 添加依赖

pubspec.yaml 文件中添加银联支付插件:

dependencies:
  union_pay: ^3.0.0  # 请检查最新版本

运行 flutter pub get 安装依赖。

2. 配置Android

  • 修改 AndroidManifest.xml
    <activity android:name="com.unionpay.uppay.PayActivity"
        android:configChanges="orientation|keyboardHidden|navigation"
        android:exported="true"
        android:launchMode="singleTop"/>
    

3. 配置iOS

  • Info.plist 中添加URL Scheme
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>unionpay</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>你的App Scheme</string>  <!-- 替换为实际值 -->
            </array>
        </dict>
    </array>
    

4. 实现支付逻辑

import 'package:union_pay/union_pay.dart';

class PaymentService {
  // 检查是否安装银联App
  Future<bool> checkInstalled() async {
    return await UnionPay.isInstalled;
  }

  // 发起支付
  Future<void> startPay(String tn, bool isDebug) async {
    try {
      final result = await UnionPay.pay(
        tn: tn,           // 交易流水号,由后台生成
        mode: isDebug ? '00' : '01',  // 00测试环境,01生产环境
      );
      // 处理支付结果
      if (result == 'success') {
        // 支付成功
      } else if (result == 'fail') {
        // 支付失败
      } else if (result == 'cancel') {
        // 用户取消
      }
    } catch (e) {
      print('支付异常: $e');
    }
  }
}

5. 处理支付结果(Android)

MainActivity.kt 中重写 onActivityResult

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (UnionPay.handleResult(data)) {
        // 已处理银联支付结果
        return
    }
    super.onActivityResult(requestCode, resultCode, data)
}

注意事项:

  1. 交易流水号(tn):需要由服务器调用银联接口生成。
  2. 环境配置:测试时使用mode: '00',上线后切换为mode: '01'
  3. iOS配置:确保URL Scheme与银联后台注册的一致。
  4. 后台接口:需要实现订单生成和支付结果验证接口。

建议参考银联官方文档和插件文档进行详细配置。

回到顶部