更新记录

1.0.0(2026-01-19)

新增安卓,ios端云闪付,内置sdk集成自动处理回调


平台兼容性

uni-app(4.81)

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

uni-app x(4.81)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 12 × ×

jwh-pay 云闪付插件

简介

这是一个基于UTS(UniApp TypeScript)开发的云闪付插件,支持Android和iOS平台,提供云闪付支付功能的集成。

功能特性

  • 支持云闪付支付
  • 支持支付结果回调
  • 支持检查云闪付App安装状态
  • 支持测试环境和正式环境切换
  • 支持seType参数配置
  • 支持scheme参数配置
  • 内置云闪付SDK,无需额外配置

平台支持

  • ✅ Android
  • ✅ iOS
  • ❌ HarmonyOS
  • ❌ 小程序
  • ❌ H5

安装方法

在HBuilderX中,通过插件市场搜索"jwh-pay"进行安装,或直接将插件目录复制到项目的uni_modules目录下。

配置要求

Android配置

  1. 权限配置:插件已自动配置以下权限

    • INTERNET:用于网络通信
    • QUERY_ALL_PACKAGES:用于检查云闪付App是否安装
  2. SDK配置:插件已内置云闪付SDK,无需额外添加依赖

iOS配置

  1. URL Scheme白名单:在manifest.json中的app-plus -> distribute -> ios -> urlschemewhitelist添加以下配置

    "urlschemewhitelist" : "uppaysdk,uppaywallet,uppayx1,uppayx2,uppayx3",
  2. 自定义URL Scheme:在manifest.json中的app-plus -> distribute -> ios -> urltypes添加

    "urltypes" : "hbuilder", // 自定义URL Scheme,用于支付结果回调 hbuilder改成自己的
  3. SDK配置:插件已内置云闪付iOS SDK,无需额外添加依赖

使用示例

import { 
  startPay, 
  isUnionPayInstalled
} from "@/uni_modules/jwh-pay";

// 检查云闪付App是否安装
if (isUnionPayInstalled()) {
  console.log('云闪付App已安装');
} else {
  console.log('云闪付App未安装');
}

// 发起支付
function doUnionPay() {
  // 从服务器获取交易流水号tn
  const tn = "2023010112345678901234567890";
  // 模式:00-正式环境,01-测试环境
  const mode = "01";
  // 自定义URL Scheme(可选,iOS平台使用)
  const scheme = "hbuilder";

  startPay({
    tn: tn,
    mode: mode,
    scheme: scheme,
    seType: "", // 安全域类型(可选)
    result: (response) => {
      console.log('支付结果:', response);

      // 根据状态码处理支付结果
      if (response.status === "00") {
        uni.showToast({ 
          title: '支付成功', 
          icon: 'success'
        });
        // 可以使用response.sign进行签名验证
        console.log('支付签名:', response.sign);
      } else if (response.status === "69") {
        uni.showToast({ 
          title: '用户取消支付', 
          icon: 'none'
        });
      } else {
        uni.showToast({ 
          title: '支付失败', 
          icon: 'none'
        });
      }
    }
  });
}

API文档

1. startPay(options: Options)

发起云闪付支付

参数

  • optionsOptions - 支付参数对象
    • tnstring - 交易流水号(从服务器获取,必填)
    • modestring - 模式(00-正式环境,01-测试环境,必填)
    • schemestring - 自定义URL Scheme(可选,iOS平台使用)
    • seTypestring - 安全域类型(可选)
    • resultCallBack - 支付结果回调函数(必填)
    • callbackCallBack - 支付结果回调函数(兼容其他插件的参数名称,可选)

返回值void

2. isUnionPayInstalled()

检查云闪付App是否已安装

返回值boolean - 云闪付App是否已安装

支付结果回调

type Response = {
  status: string; // 交易状态码,00表示成功,69表示取消,其他表示失败
  sign?: string;  // 支付签名信息(仅在支付成功时返回)
};

// 常用状态码说明:
// "00": 支付成功
// "69": 用户取消支付
// "01": 交易失败。详情请咨询95516
// "02": 系统未开放或暂时关闭,请稍后再试
// "03": 交易通讯超时,请发起查询交易
// "04": 订单处理中,请稍后发起查询交易
// "05": 交易已受理,请稍后查询交易结果
// "06": 系统繁忙,请稍后再试
// "10": 报文格式错误
// "11": 验证签名失败
// "12": 重复交易,请发起查询交易
// "13": 报文交易要素缺失
// "30": 交易未通过,请尝试使用其他银联卡支付或联系95516
// "31": 商户状态不正确
// "32": 无此交易权限
// "33": 交易金额超限
// "34": 查无此交易,请稍后发起交易状态查询
// "35": 原交易不存在或状态不正确
// "36": 与原交易信息不符
// "60": 交易失败,详情请咨询您的发卡行
// "61": 输入的卡号无效,请确认后输入
// "62": 交易失败,发卡银行不支持该商户
// "63": 卡状态不正确
// "64": 卡上的余额不足
// "65": 输入的密码、有效期或CVN2有误,交易失败
// "66": 持卡人身份信息或手机号输入不正确,验证失败
// "67": 密码输入次数超限
// "68": 您的银行卡暂不支持该业务
// ... 更多状态码请参考云闪付官方文档

注意事项

  1. 交易流水号(tn):需要从服务器获取,不能在客户端生成
  2. 测试环境:使用模式参数01,正式环境使用00
  3. 权限申请:部分权限(如CAMERA)需要动态申请
  4. 结果验证:客户端的支付结果仅作参考,最终支付结果以服务器为准

错误处理

  • 交易流水号不能为空:请确保从服务器获取有效的交易流水号
  • 模式参数错误:模式参数必须为00(正式环境)或01(测试环境)
  • 云闪付App未安装:可以提示用户下载云闪付App
  • 支付失败:请检查网络连接和交易流水号的有效性

版本历史

  • v1.0.0:初始版本,支持云闪付支付功能

隐私、权限声明

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

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

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

插件不采集任何数据

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

暂无用户评论。