uni-app中微信支付分不能用uni.requestpayment,必须通过wx.openbusinessview({businesstype:'payscore'})在小程序端拉起开通页,且仅支持基础库2.10.4+、已签约支付分产品的企业主体小程序。

uni-app 里微信支付分不能直接调用 uni.requestPayment
微信支付分是微信支付生态下的信用服务,不是传统“下单→支付”流程,它不走 uni.requestPayment,也不需要 prepayid 或签名参数。它的核心是「授权开通 + 场景调用」,且只支持小程序端(APP端、H5端均不支持)。很多开发者卡在这一步,以为只要配好微信支付就能用支付分,结果发现 uni.requestPayment 根本不认 payScore 类型的 provider —— 因为它压根没这个选项。
- 支付分必须在「微信小程序基础库 2.10.4+」且「已开通支付分产品权限」的小程序中使用
- 需在微信公众平台「微信支付」→「产品中心」→「支付分」中完成签约并配置服务场景(如「先享后付」「免密代扣」等)
- uni-app 编译为小程序时,必须确保
mp-weixin的基础库版本 ≥ 2.10.4(检查project.config.json中的miniprogramRoot和setting.minNpmVersion不够,得看实际编译生成的app.json和基础库提示) - 不能用
uni.requestPayment,必须通过微信原生 API:wx.openBusinessView或wx.requestPayment(仅限 JSAPI 支付),而支付分调用的是wx.openBusinessView({ businessType: 'payScore' })
怎么在 uni-app 小程序中调起支付分开通页
支付分第一步是用户授权开通,这步必须用 wx.openBusinessView,uni-app 没有封装该 API,需条件编译 + 原生调用。注意:该接口仅在真机有效,开发者工具会报错或静默失败。
- 只允许在用户主动触发的事件中调用(如按钮
bindtap),不能 onLoad 自动触发 - 必须传
businessType: 'payScore',其他值无效 -
envVersion推荐显式指定为'release'(开发版和体验版可能受限) - 示例代码(放在
@click处理函数内):
if (uni.getSystemInfoSync().platform === 'ios' || uni.getSystemInfoSync().platform === 'android') {
// 小程序环境才执行
if (typeof wx !== 'undefined' && wx.openBusinessView) {
wx.openBusinessView({
businessType: 'payScore',
envVersion: 'release',
success: () => {
console.log('用户进入支付分开通页');
},
fail: (err) => {
console.error('打开支付分页失败', err);
// err.errMsg 可能是 'openBusinessView:fail not support'(基础库太低)
// 或 'openBusinessView:fail invalid businessType'
}
});
}
}
支付分订单如何创建和履约(后端才是关键)
前端只负责「拉起开通页」和「发起履约请求」,所有业务逻辑(创建支付分订单、扣款、回调通知)都由后端完成。uni-app 前端只需调用你自己的服务端接口,拿到返回的 orderNo 后,再用 wx.openBusinessView 拉起履约页 —— 注意不是 uni.requestPayment。
- 履约调起仍用
wx.openBusinessView,但businessType改为'payScorePay' - 必须携带
orderNo(后端创建的支付分订单号)和path(可选,跳转到小程序内指定页面) - 后端创建支付分订单需调用微信支付分「创建订单」API:
https://api.mch.weixin.qq.com/v3/payscore/serviceorder(V3 接口,需证书签名) - 前端无法绕过服务端直接调微信支付分接口,因为涉及敏感字段(如
appid、mch_id、sign)且需双向 HTTPS 证书校验
容易被忽略的三个硬性限制
支付分不是“加个配置就能用”的功能,它对资质、场景、技术栈都有明确门槛,很多项目卡在这里根本进不了开发阶段。
- 主体资质:必须是企业/个体工商户,且微信支付商户号已完成「支付分」产品签约(个人主体不可用)
- 小程序类目:需选择与支付分场景匹配的类目(如「电商」、「生活服务」、「教育」),否则后台找不到开通入口
- 域名备案:若涉及 H5 跳转或 web-view 内嵌,所用域名必须在公众号/小程序后台完成 ICP 备案并配置业务域名白名单
支付分真正的复杂点不在 uni-app 侧,而在服务端对接 V3 接口的证书管理、签名构造、异步通知验签和订单状态轮询。前端能做的只是「按规范触发页面」,别试图在 onLoad 里自动拉开通页,也别幻想用 H5 实现支付分——它只存在于微信小程序容器内。











