更新记录

2.0.0(2026-10-14)

新增支持银联支付以及支付宝支付


平台兼容性

uni-app(3.8.5)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ √ √ √ √ 5.0 √ √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
√ √ √ √ √ √ √ √ √ √ √ √

uni-app x(3.8.5)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × × √

lxs-qmf-pay-plugin

莉先生银联商务全民付 APP 综合支付 UTS 插件(基于全民付移动支付 SDK V3.1.8), 以 uni_modules 插件形式提供:原生逻辑在 utssdk/ 内,HBuilderX 自动识别, 无需 nativeplugins/ 目录,无需在 manifest.json 注册 nativePlugins。

支持渠道:微信原生支付、微信小程序支付、支付宝小程序支付、支付宝(qrCode 拉起)、间连支付宝、云闪付。 uni-app Vue3 项目使用;HBuilderX 3.97+(iOS 回调代理 UTSiOSHookProxy 的最低版本要求)。

安装

把整个 lxs-qmf-pay-plugin 目录放到项目的 uni_modules/ 下即可(本项目已内置于 uniapp/uni_modules/)。

使用

UTS 插件导出为命名导出(无默认导出)。原生调用为回调式 API(结果经 callback 一次性返回), JS 侧自行包 Promise:

import {
  init, pay, cloudPay, aliSafePay, isInstalled, clean, pluginReady,
  CHANNEL, PAY_DATA_FIELDS, parsePayData, detectChannel, validatePayData
} from '@/uni_modules/lxs-qmf-pay-plugin'

// 0) 探活(同步):插件未打进基座时立即定性,避免调用永不回调
const probe = pluginReady()   // { ok, msg }

// 1) 初始化(iOS 需 universalLink)
init({ appId: 'wxxxxxxxxx', universalLink: 'https://your-domain.com/' }, (res) => {
  // res.ok === true 表示成功
})

// 2) 发起支付(payData 为服务端下单返回的 appPayRequest,对象或 JSON 字符串均可)
pay({ channel: 'wxmini', payData }, (res) => {
  if (res.resultCode === '0000') {
    // 仅代表请求发送成功,订单是否支付成功以服务端查询/通知为准
  }
})

Promise 包装写法参考 pages/unionpay/pay.vue 的 nativeCall(); 也可继续从兼容层引入:import { pay } from '@/common/qmf-pay.js'(同样为回调式)。

渠道取值:wxpay / wxmini / alimini / alipay / alisdk / cloudpay。 渠道必须与 appPayRequest 内容匹配,可先用 validatePayData(channel, payData) / detectChannel(payData) 判定。

resultCode:0000 请求发送成功、1000 用户取消、1001 参数错误、1002 网络错误、 1003 客户端未安装、2001 处理中(结果未知,需查询)、2002 订单号重复、2003 支付失败、9999 其他错误。

完整示例见 example/qmf-pay-demo.vue,真实调用见 uniapp/pages/unionpay/pay.vue。

目录结构

uni_modules/lxs-qmf-pay-plugin/
├── package.json          插件清单(uni_modules 规范,UTS 插件)
├── readme.md / changelog.md
├── utssdk/               UTS 插件核心
│   ├── interface.uts     API 签名与文档
│   ├── common.uts        跨平台纯逻辑(渠道常量/支付要素解析校验)
│   ├── app-android/      index.uts + config.json + libs/(SDK aar/jar + 载体 QmfPay.aar)
│   ├── app-ios/          index.uts + config.json + Info.plist + Libs/(静态库)+ Frameworks/
│   ├── web/              H5 回退实现(纯逻辑可用,原生方法抛错)
│   └── mp-weixin/        小程序回退实现(同上)
├── android-src/          载体 aar 源码工程(javac 直接出 aar,无需 Gradle)
│   └── build-aar.ps1     编译脚本,产物写入 ../utssdk/app-android/libs/QmfPay.aar
├── android/  ios/        旧格式遗留源码与 .so(仅作参考,不参与打包)
└── example/              示例页面(需自行在 pages.json 注册)

重新编译 Android 载体 aar

载体 aar 只承担 Manifest 合并(activity-alias、微信/支付宝回调 Activity、meta-data) 与 libentryexpro.so 内嵌,模块逻辑全部在 utssdk/app-android/index.uts。 修改 android-src/src/main/java 下的 Java 或 AndroidManifest.xml 后:

cd uni_modules\lxs-qmf-pay-plugin\android-src
powershell -ExecutionPolicy Bypass -File .\build-aar.ps1

脚本用 JDK 21(--release 8)+ android.jar 直接编译,产物覆盖 utssdk/app-android/libs/QmfPay.aar。 脚本内 JdkHome / AndroidJar 路径按本机环境调整。

注意事项

  • 原生插件只在 App 端生效:需用自定义调试基座或云打包运行,标准基座不含 UTS 插件; 修改 utssdk 内 UTS 代码后必须重新制作自定义基座(UTS 随基座编译,不支持 wgt 热更新)。
  • 未集成插件时 pluginReady() 会返回 ok:false(web/小程序端同理),先探活再调用原生方法。
  • Android:宿主若已勾选微信登录/分享/支付模块,可能与载体 aar 中 ${applicationId}.wxapi.WXEntryActivity 别名冲突,需去掉对应模块或调整合并策略。
  • Android:支付宝小程序回调 scheme 默认 qmfpppay,与银商后台配置保持一致(见 android-src/src/main/AndroidManifest.xml)。
  • iOS:LSApplicationQueriesSchemes 由 utssdk/app-ios/Info.plist 声明; 云闪付/支付宝小程序回调经 utssdk/app-ios/index.uts 的 UTSiOSHookProxy(openURL/UniversalLink)分发。
  • iOS 的 UTS 代码为按 SDK 头文件转写,首次在 HBuilderX 打包如报 Swift 编译错误,按报错位置微调即可(API 语义与旧 ObjC 实现一致)。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。