Flutter如何接入银联支付
在Flutter项目中需要接入银联支付功能,尝试了官方文档但遇到一些问题:
- 银联官方提供的SDK是否支持Flutter?是否需要通过平台通道实现?
- 有没有现成的Flutter插件可以直接使用?
- 在Android和iOS端配置银联支付时有哪些注意事项?
- 测试环境如何搭建?需要哪些参数才能完成联调?
希望有实际经验的大佬能分享一下具体实现步骤和避坑指南!
2 回复
Flutter接入银联支付可通过以下步骤实现:
- 引入银联官方SDK插件,如
flutter_unionpay。 - 配置Android和iOS的支付参数,包括商户ID和支付环境。
- 调用插件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)
}
注意事项:
- 交易流水号(tn):需要由服务器调用银联接口生成。
- 环境配置:测试时使用
mode: '00',上线后切换为mode: '01'。 - iOS配置:确保URL Scheme与银联后台注册的一致。
- 后台接口:需要实现订单生成和支付结果验证接口。
建议参考银联官方文档和插件文档进行详细配置。

