更新记录

v1.0.0(2026-08-02) 下载此版本

1.0.0

  • 支持 Android 端 TN 模式拉起银联支付控件。
  • 支持 iOS 端 TN 模式拉起支付及 URL Scheme 回调。
  • 支持 successfailcancelunknown 统一结果。
  • 内置 Android 包可见性、网络权限和银联 WAP Activity 配置。
  • 内置 iOS Swift module map。

平台兼容性

uni-app(5.04)

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

hxd-unionpay

用于 uni-app App 端的银联云闪付 UTS 支付插件。插件封装中国银联官方 Android 3.5.16 和 iOS 3.6.2 Mini 支付控件,通过服务端返回的 TN 拉起云闪付或受支持的银行支付 App。

平台支持

平台 最低版本 支持情况
Android 5.0 / API 21 支持
iOS 12.0 支持
H5 - 不支持
小程序 - 不支持

插件包含原生 SDK,必须制作自定义调试基座或云打包,标准运行基座无法使用。

安装

将插件目录放入项目:

uni_modules/hxd-unionpay

如果项目源码位于 src,则放入:

src/uni_modules/hxd-unionpay

服务端要求

服务端必须完成银联 App 支付下单并向前端返回 TN。TN 通常是 21 位数字,例如:

868200869025887744100

插件不负责生成 TN、签名、验签、退款或订单查询。

iOS 配置

manifest.jsonapp-plus.distribute.ios 中注册回跳 Scheme,并加入银联 Scheme 白名单:

{
  "app-plus": {
    "distribute": {
      "ios": {
        "urltypes": "unionpayuts",
        "urlschemewhitelist": "uppaywallet,uppaysdk,uppayx1,uppayx2,uppayx3"
      }
    }
  }
}

urltypes 必须与调用 startPay 时传入的 scheme 完全一致。正式项目建议使用与 Bundle ID 相关的唯一小写 Scheme,避免与其他 App 冲突。

基础调用

仅在 App 条件编译中导入:

// #ifdef APP-PLUS
import { startPay } from '@/uni_modules/hxd-unionpay'
// #endif

调用支付:

// #ifdef APP-PLUS
startPay({
  tn: '868200869025887744100',
  mode: '00',
  scheme: 'unionpayuts',
  success: result => {
    console.log('银联控件返回成功', result)
  },
  fail: result => {
    console.error('支付失败或取消', result)
  },
  complete: result => {
    console.log('支付控件已返回', result)
    // 无论客户端返回什么,都应调用服务端订单查询接口确认最终状态。
    queryOrderStatus()
  }
})
// #endif

Promise 封装示例

// #ifdef APP-PLUS
const payByUnionPay = (tn: string) =>
  new Promise<void>((resolve, reject) => {
    if (!/^\d{21}$/.test(tn)) {
      reject(new Error('银联 TN 格式错误'))
      return
    }

    startPay({
      tn,
      mode: '00',
      scheme: 'unionpayuts',
      success: () => resolve(),
      fail: result => reject(new Error(result.message)),
      complete: () => {
        void queryOrderStatus()
      }
    })
  })
// #endif

参数

startPay(options)

参数 类型 必填 默认值 说明
tn string - 服务端返回的银联交易流水号
mode '00' \| '01' '00' 00 生产环境,01 PM 联调环境
scheme string iOS 建议必填 unionpayuts iOS 支付完成后回跳当前 App 的 Scheme
success (result) => void - 银联控件返回 success
fail (result) => void - 失败、取消或未知结果
complete (result) => void - 控件返回后始终执行

返回结果

type UnionPayResult = {
  code: 'success' | 'fail' | 'cancel' | 'unknown'
  message: string
  rawCode?: string
}

支付结果安全

客户端回调只能表示支付控件返回结果,不能作为订单支付成功的最终凭证。正确流程:

  1. App 获取服务端生成的 TN。
  2. 插件拉起银联支付控件。
  3. 控件返回后 App 调用服务端查单接口。
  4. 只有服务端确认支付成功后,才能发货、充值或跳转支付成功页。

常见问题

Android 提示未安装云闪付

  1. 重新制作包含插件的自定义基座,普通热更新不会更新 AndroidManifest。
  2. 确认安装的是正式云闪付 App,而不是分身、冻结或定制版本。
  3. 查看控制台日志中的 walletInstalledstartPayResult
  4. 使用银联官方 Demo 和相同 TN 测试,排除商户通道或 TN 配置问题。

iOS 无法回到 App

检查 manifest.jsonurltypes 是否与 startPayscheme 一致,并重新云打包。

支付成功但没有回调

App 可能在支付期间被系统回收。页面重新进入或 onShow 时应主动调用服务端查单接口,不能只依赖 SDK 回调。

发布与合规说明

  • 插件调用中国银联官方 SDK,不代表插件作者是中国银联官方或获得官方背书。
  • 发布前请确认你有权随插件分发银联 SDK 二进制文件。
  • 接入方应根据银联最新文档补充隐私政策、第三方 SDK 清单和数据处理说明。
  • 银联 SDK 版本、权限和隐私规则可能更新,生产使用前应重新核对官方资料。

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。