Flutter插件cmbpbflutter的介绍与使用

Flutter插件cmbpbflutter的介绍与使用

CmbpbFlutter

pub package

Flutter 招商一网通支付 SDK。

相关文档

添加依赖

pubspec.yaml 文件中添加 cmbpbflutter 依赖:

pub package
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 则配置如下图所示。

iOS 配置

基本使用

示例代码:

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&amp;funcid=200013&amp;serverid=CMBEUserPay&amp;requesttype=post&amp;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
  }
});
回到顶部