Flutter插件cmbpbflutter的介绍与使用
Flutter插件cmbpbflutter的介绍与使用
CmbpbFlutter
Flutter 招商一网通支付 SDK。
相关文档
添加依赖
在 pubspec.yaml
文件中添加 cmbpbflutter
依赖:
dependencies:
cmbpbflutter: ^${latestVersion}
相关配置
Android
需要在 Android 工程 AndroidManifest.xml
下配置回调入口,并配置招行分配给商户的「URL scheme」:
<activity
android:name="cmb.pb.flutter.cmbpbflutter.CmbPbPayCallbackActivity"
android:label="@string/app_name"
android:exported="true"
android:theme="@style/CmbPbPay.Theme.Transparent"
android:taskAffinity="${applicationId}"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="${招行给的回调url scheme}"/>
</intent-filter>
</activity>
iOS
配置 Xcode 中
- 在
info.plist
中增加LSApplicationQueriesSchemes
白名单配置,值为cmbmobilebank
。 - 在 URL Types 中新增 URL Schemes,值设置为招行分配给商户的 scheme(需与安卓设置的 scheme 保持一致)。例如分配到的 scheme 为
abcdefg
则配置如下图所示。
基本使用
示例代码:
import 'package:cmbpbflutter/cmbpbflutter.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
StreamSubscription<CmbPbPayResp>? _respSubs;
String _payResultDesc = "";
[@override](/user/override)
void initState() {
super.initState();
_respSubs = CmbPbPay.instance.respStream().listen((event) {
print("支付结果回调了");
setState(() {
_payResultDesc = "${event.code} ===${event.msg}";
});
});
CmbPbPay.instance.registerApp(appId: "12306");
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('招行一网通支付demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _startPay,
child: Text("支付"),
),
Text("支付结果回调:$_payResultDesc")
],
),
),
),
);
}
void _startPay() {
// Url 编码后的结果
final requestData = "jsonRequestData=%7B%22charset%22%3A%22UTF-8%22%2C%22reqData%22%3A%7B%22amount%22%3A%2240.00%22%2C%22branchNo%22%3A%220021%22%2C%22date%22%3A%2220210927%22%2C%22dateTime%22%3A%2220210927165358%22%2C%22expireTimeSpan%22%3A%2210%22%2C%22merchantNo%22%3A%22000719%22%2C%22orderNo%22%3A%222109271000098854%22%2C%22payNoticeUrl%22%3A%22https%3A%2F%2Fapp.mjcampus.com%2Fmpay%2Fv100%2Fnotify_cmbchina%22%2C%22returnUrl%22%3A%22aacbaaahbj%3A%2F%2F%22%7D%2C%22sign%22%3A%221566368d8dcf5782add5439b3cdb5f83047f87cc6f35c7903e65916e97df1b0b%22%2C%22signType%22%3A%22SHA-256%22%2C%22version%22%3A%221.0%22%7D";
final tempAppUrl = "cmbmobilebank://CMBLS/FunctionJump?action=gofuncid&funcid=200013&serverid=CMBEUserPay&requesttype=post&cmb_app_trans_parms_start=here";
final h5Url = "http://121.15.180.66:801/netpayment/BaseHttp.dll?H5PayJsonSDK";
CmbPbPay.instance.pay(requestData: requestData, appUrl: tempAppUrl, h5Url: h5Url, method: "pay");
}
}
更多关于Flutter插件cmbpbflutter的介绍与使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter插件cmbpbflutter的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cmbpbflutter
是一个 Flutter 插件,但根据你的描述,它似乎是一个“未知”或不太常见的插件。由于关于 cmbpbflutter
的具体信息有限,我将基于其名称和常见 Flutter 插件的功能,推测其潜在用途和使用方法。
1. 插件名称分析
cmbpbflutter
的名称可能包含以下部分:cmb
:可能是指“中国民生银行”(China Minsheng Bank)或其相关技术。pb
:可能代表“支付业务”(Payment Business)或“协议缓冲区”(Protocol Buffers)。flutter
:表明这是一个 Flutter 插件。
基于此,cmbpbflutter
可能与银行支付、协议缓冲区或其他金融服务相关。
2. 潜在用途
根据插件的名称,以下是 cmbpbflutter
可能的用途:
(1) 银行支付集成
- 如果
cmbpbflutter
是一个支付插件,它可能与银行(如中国民生银行)的支付接口集成,支持移动端支付功能。 - 例如,支持银行卡支付、转账、账单查询等功能。
(2) 协议缓冲区支持
- 如果
pb
代表“协议缓冲区”(Protocol Buffers),cmbpbflutter
可能是一个用于在 Flutter 中处理.proto
文件的插件。 - 它可以帮助开发者将 Protocol Buffers 数据序列化和反序列化为 Dart 对象。
(3) 金融服务 SDK
- 插件可能是一个金融服务 SDK,提供与银行或金融机构相关的功能,如账户管理、交易记录查询、身份验证等。
(4) 银行相关 UI 组件
- 插件可能提供与银行相关的 UI 组件,如银行卡输入表单、交易详情页面等。
3. 使用示例
假设 cmbpbflutter
是一个支付插件,以下是一个可能的使用示例:
(1) 安装插件
在 pubspec.yaml
中添加依赖:
dependencies:
cmbpbflutter: ^1.0.0
(2) 初始化插件
在 Flutter 项目中初始化插件:
import 'package:cmbpbflutter/cmbpbflutter.dart';
void main() {
CmbPbFlutter.initialize(apiKey: "YOUR_API_KEY");
runApp(MyApp());
}
(3) 发起支付
调用插件的方法发起支付:
void initiatePayment() async {
PaymentRequest request = PaymentRequest(
amount: 100.0,
currency: "CNY",
orderId: "123456",
description: "Test payment",
);
PaymentResponse response = await CmbPbFlutter.pay(request);
if (response.isSuccess) {
print("Payment successful: ${response.transactionId}");
} else {
print("Payment failed: ${response.errorMessage}");
}
}
(4) 处理回调
监听支付结果:
CmbPbFlutter.onPaymentResult.listen((event) {
if (event.isSuccess) {
// Handle successful payment
} else {
// Handle payment failure
}
});