更新记录

1.0.0(2026-08-23)

  1. 支持微信 微信小程序 支付宝 支付宝小程序 云支付

平台兼容性

uni-app(3.8.2)

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

uni-app x(3.8.3)

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

其他

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

银联商务全民支付,支持微信、微信小程序、支付宝、支付宝小程序等支付

开发文档

  1. 插件集成步骤可以参考https://www.cnblogs.com/wenrisheng/p/18323027
  2. 如需定制或增加功能请点击插件标题下方的"进入交流群"私聊作者

Android配置

  1. 拷贝demo里的AndroidManifest.xml文件到项目根目录,将AndroidManifest.xml里CurrentEnvironment变量对应的值改为PROD或TEST
  2. 拷贝demo里的uni_modules/wrs-uts-unifypaycallback文件夹到项目uni_modules/wrs-uts-unifypaycallback目录
  3. 修改uni_modules/wrs-uts-unifypaycallback/utssdk/app-android/WXPayEntryActivity.java文件里将第一行的package uni.app.UNIB973B09.wxapi;改为package ${包名}.wxapi; 例如包名为uni.app.UNIB000,则修改为package uni.app.UNIB000.wxapi;
  4. 在manifest.json配置url scheme为myaliqmfpppay,联系相关人员在后台配置好url scheme,用于支付宝小程序支付结果回调

ios配置

  1. 拷贝demo里的Info.plist文件到项目根目录,将Info.plist里的wxc71b9ae0235a4c30替换为自己的微信商户appId(用于配置微信),将Info.plist里的myunifyPayDemo替换为自己的scheme(用于配置云闪付,scheme可以自定义),将Info.plist里的qmfpppay替换为自己的scheme(用于支付宝小程序配置,scheme可以自定义)

鸿蒙配置

  1. 拷贝demo里的harmony-configs文件到项目根目录
  • 初始化
    let platform = uni.getSystemInfoSync().platform
switch (platform) {
    case "android": {
        UTSUnifypay.registerApp({
            appId: "" // 支付宝appId注册
        })
        UTSUnifyPayCallback.onCallback((resp) => {
            console.log("UTSUnifyPayCallback.onCallback resp:" + JSON.stringify(resp))
            let opt = resp.opt
            switch (opt) {
                case "onReq": {

                }
                break;
                case "onResp": {
                    let errCode = resp.errCode
                    let errStr = resp.errStr
                }
                break;
                default:
                    break;
            }
        })
    }
    break;
    case "ios": {
        UTSUnifypay.setUmspEnviroment("prod") // test、prod

        UTSUnifypay.registerApp({
            appId: KeyCenter.appId, //
            universalLink: KeyCenter.universalLink,
            cloudPayPrefix: KeyCenter.cloudPayPrefix,
            aliSafePayPrefix: KeyCenter.aliSafePayPrefix
        })

        UTSUnifypay.onCallback((resp) => {
            console.log("UTSUnifypay.onCallback resp:" + JSON.stringify(resp))

            let opt = resp.opt
            switch (opt) {
                case "onReq": {

                }
                break;
                case "onResp": {
                    let errCode = resp.errCode
                    let errStr = resp.errStr
                }
                break;
                default:
                    break;
            }
        })
    }
    break;
    case "harmonyos": {
        UTSUnifypay.registerApp({
            cloudPayPrefix: "uppayresult",
            aliSafePayPrefix: "qmfpppay"
        })

    }
    break;
    default:
        break;
}
  • 下单接口,一般由后端调用下单接口,下单完成后把下单数据返回给app,app再调用支付接口直接支付
                let env = "prod"
let url = 'https://qr.chinaums.com/netpay-route-server/api/'
if (env == "test1") { //测试一环境
    url = "https://qr-test1.chinaums.com/netpay-route-server/api/";
} else if (env == "test2") { //测试二环境
    url = "https://qr-test2.chinaums.com/netpay-route-server/api/";
} else if (env == "test3") { //测试二环境
    url = "https://qr-test3.chinaums.com/netpay-route-server/api/";
} else if (env == "prod") { //生产环境
    url = "https://qr.chinaums.com/netpay-route-server/api/";
}
console.log('request:' + JSON.stringify(data))
uni.request({
    url,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json', // 设置请求头为JSON格式
    },
    data: data,
    success: (response) => {
        // 处理响应数据
        console.log('response:' + JSON.stringify(response))
        let data = response.data
        let errCode = data.errCode
        if (errCode == "SUCCESS") {
            let appPayRequest = data.appPayRequest
            if (payChannel == "cloudPay") {
                // 云闪付
                this.payCloudOrder(appPayRequest)
            } else {
                this.payOrder(payChannel, appPayRequest)
            }

        } else {
            let errMsg = data.errMsg
            this.showMsg(errMsg)
        }
    },
    fail: (result) => {
        console.log('result:', result); // 处理响应数据
        // callback(false, JSON.stringify(result))
    }
})
  • 云闪付

let params = {}
let platform = uni.getSystemInfoSync().platform
switch (platform) {
    case "android": {
        params.tn = appPayRequest.tn
        params.serverMode = "00" //  serverMode 为后台环境标识,默认使用“00”生产环境
    }
    break;
    case "ios": {
        params.schemes = KeyCenter.cloudPayPrefix
        params.payData = JSON.stringify(appPayRequest)
    }
    break;
    case "harmonyos": {
        params.schemes = "uppayresult"
        params.payData = JSON.stringify(appPayRequest)
    }
    break;
    default:
        break;
}
UTSUnifypay.cloudPay(params, (resp) => {
    this.showMsg("UTSUnifypay.cloudPay resp:" + JSON.stringify(resp))
    let resultCode = resp.resultCode
    switch (resultCode) {
        case "success": {

        }
        break;
        case "fail": {

        }
        break;
        case "cancel": {

        }
        break;
        default:
            break;
    }
})

隐私、权限声明

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

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc.hce" /> <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />

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

插件不采集任何数据

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

无