更新记录

1.0.0(2026-08-21) 下载此版本

1.0.0(2026-08-21)

  • 首次发布。
  • 支持解析多种后端支付字段。
  • 支持在 App WebView 中提交工商银行支付表单。
  • 支持 Android Intent 与 iOS URL Scheme 唤起工行手机银行。
  • 支持工行 H5 收银台兜底。

平台兼容性

uni-app(5.0)

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

工商银行 App 支付(非官方)

面向 uni-app(Vue 2 / Vue 3)的工商银行支付 JS SDK。插件在 App WebView 中提交后端返回的工行表单,以保留 POST 会话;收银台点击“启动手机银行”时,再由原生能力唤起工行 App。

平台支持

平台 支持情况 说明
App Android 支持 使用 plus.webview 和 Android Intent
App iOS 支持 使用 plus.webviewplus.runtime.openURL
H5 有限支持 打开新窗口完成支付,不提供 App 唤起桥接
小程序 不支持 不具备所需的 5+ App 能力

本插件不包含任何银行密钥,也不负责签名和创建订单。调用方后端必须先向工商银行下单,并将支付表单 HTML 或合法的 HTTPS 支付地址返回给前端。

安装

从 DCloud 插件市场导入后,插件位于:

uni_modules/zq-icbc-pay

使用

import { invokeIcbcScanPayment } from '@/uni_modules/zq-icbc-pay'

async function pay(orderBody) {
  const res = await createOrder({ ...orderBody, payType: '4' })
  await invokeIcbcScanPayment(res.data)
}

也可以直接传入支付表单或 HTTPS 地址:

import { invokeIcbcPayment } from '@/uni_modules/zq-icbc-pay'

await invokeIcbcPayment(formHtmlOrHttpsUrl)

API

invokeIcbcScanPayment(payData): Promise<void>

业务首选入口。支持 qrCodeUrlpayUrlh5UrlredirectUrlpayExtrapayInfopayDataicbcPaypayment 等字段,也支持直接传字符串。

invokeIcbcPayment(payload): Promise<void>

直接处理 <form>...</form> HTML 或 HTTP(S) 地址。

resolveIcbcPayQrCodeUrl(payData): string

只解析支付数据,不发起支付。

isIcbcFormHtml(raw): boolean

判断字符串是否包含表单。

isIcbcHttpUrl(raw): boolean

判断字符串是否为 HTTP(S) 地址。

后端响应示例

{
  "data": {
    "qrCodeUrl": "<form method=\"post\" action=\"https://...\">...</form>"
  }
}

不要只截取表单的 action 地址用浏览器打开,否则可能丢失 POST 参数和支付会话,导致工行提示交易异常。

App 配置

  • Android 无需为本插件添加原生依赖;插件通过系统 ACTION_VIEW Intent 唤起工行 App。
  • iOS 如需使用 canOpenURL 查询,可在 manifest.jsonios.urlschemewhitelist 中加入 com.icbc.iphoneclient。当前实现直接调用 openURL,该配置不是必需项。
  • 必须在真机上测试手机银行唤起流程。

数据与权限说明

  • 插件不采集、保存或上传用户数据。
  • 插件不会记录完整支付表单;控制台只输出有限长度的跳转地址用于排查。
  • Android 会尝试调用能处理工行 Scheme 的外部 Activity。
  • 用户未安装工行 App 时,可在工行收银台选择 H5 支付作为兜底。

常见问题

工行页面提示“交易异常”

确保后端返回完整表单,并通过本插件提交表单,不要裸开收银台地址。

点击“启动手机银行”没有反应

请使用真机,确认已安装中国工商银行 App,并查看控制台是否出现 [icbc pay] bridge/intercept

出现 file:// 页面无法打开

正常主流程使用 webview.loadData。只有该调用异常时才会尝试本地文件兜底。

合规提示

“工商银行”“ICBC”等名称及商标归其权利人所有。本插件为非官方技术封装,与中国工商银行不存在隶属或背书关系。发布者应自行确认银行接口授权、隐私政策、支付业务资质和所在地区的合规要求。

隐私、权限声明

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

无。 本插件不新增申请定位、相机、麦克风、通讯录、相册、存储、短信、电话等系统敏感权限。 插件使用 uni-app App 已有的 plus.webview 加载支付页面;Android 通过系统 ACTION_VIEW Intent、iOS 通过 plus.runtime.openURL 尝试打开工商银行手机银行客户端。这些操作不需要插件额外申请运行时敏感权限。

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

本插件不采集、存储、统计或上传用户个人信息,也不连接插件作者的服务器。 插件会处理接入方业务后端传入的工商银行支付表单 HTML 或 HTTPS 支付链接。支付表单中可能包含商户号、订单号、订单金额、交易流水号、签名及银行支付接口要求的其他交易参数。上述数据仅用于在 App WebView 中提交支付请求、建立并保持工商银行收银台会话。 数据发送地址为接入方后端返回的支付表单 action 地址或支付链接地址,正常情况下应为工商银行官方支付服务器地址。具体域名由接入方所使用的工商银行支付接口及其后端响应决定,插件本身不内置固定的业务服务器地址。 插件不会将支付数据发送给插件作者或其他第三方服务器。手机银行 URL Scheme 仅在当前设备的 WebView、插件代码和操作系统之间传递,用于唤起已安装的工商银行客户端,不用于网络数据采集。

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

许可协议

MIT License

Copyright (c) 2026 zq

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

暂无用户评论。