更新记录
1.0.0(2026-08-23)
- 支持微信 微信小程序 支付宝 支付宝小程序 云支付
平台兼容性
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 |
√ |
√ |
- |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| √ |
√ |
√ |
× |
银联商务全民支付,支持微信、微信小程序、支付宝、支付宝小程序等支付
开发文档
- 插件集成步骤可以参考https://www.cnblogs.com/wenrisheng/p/18323027
- 如需定制或增加功能请点击插件标题下方的"进入交流群"私聊作者
Android配置
- 拷贝demo里的AndroidManifest.xml文件到项目根目录,将AndroidManifest.xml里CurrentEnvironment变量对应的值改为PROD或TEST
- 拷贝demo里的uni_modules/wrs-uts-unifypaycallback文件夹到项目uni_modules/wrs-uts-unifypaycallback目录
- 修改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;
- 在manifest.json配置url scheme为myaliqmfpppay,联系相关人员在后台配置好url scheme,用于支付宝小程序支付结果回调
ios配置
- 拷贝demo里的Info.plist文件到项目根目录,将Info.plist里的wxc71b9ae0235a4c30替换为自己的微信商户appId(用于配置微信),将Info.plist里的myunifyPayDemo替换为自己的scheme(用于配置云闪付,scheme可以自定义),将Info.plist里的qmfpppay替换为自己的scheme(用于支付宝小程序配置,scheme可以自定义)
鸿蒙配置
- 拷贝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;
}
})