uniapp微信支付配置必须在manifest.json的"app-plus"→"distribute"→"sdkconfigs"→"wxpay"路径下填写appid、mch_id、api_key三项,缺一不可;其中appid须为微信开放平台移动应用appid,mch_id为10位纯数字商户号,api_key为32位ascii字符串apiv2密钥,且仅对app端生效,h5和小程序不适用。

manifest.json 里填什么字段,填错会直接报错
UniApp 的微信支付配置只在 manifest.json 中生效,且仅对 App(iOS/Android)起作用。H5 和小程序走的是各自平台原生逻辑,这里不涉及。
必须填的三项是:appid、mch_id、api_key,全部在 "app-plus" → "distribute" → "sdkConfigs" → "wxpay" 路径下。漏掉任意一个,调用 uni.requestPayment 时会提示 支付参数错误 或直接白屏。
-
appid:来自微信开放平台「移动应用」或微信公众平台「小程序」,不是公众号 AppID;App 端必须用开放平台的 AppID -
mch_id:10 位纯数字,从微信商户平台「账户中心 → 商户信息」页面复制,注意不要带空格或换行 -
api_key:仅用于 APIv2,必须是 32 位 ASCII 字符串(不能含中文、空格、特殊符号),且只能在「账户中心 → API安全 → APIv2密钥」里设置一次,之后无法查看明文
为什么填了还是调不起支付?检查云端打包和自定义基座
配置改完后,不会热更新,必须重新提交云端打包,或使用自定义调试基座运行。真机调试时如果仍失败,大概率是用了标准基座——它不包含你刚配的微信支付插件。
解析微信公众号文章,提取标题、作者、正文、图片等信息。用户发送链接(mp.weixin.qq.com)时触发,自动提取内容并可保存至飞书表格。
- 在 HBuilderX 中右键项目 →「发行」→「原生 App-云打包」,勾选「微信支付」插件(即使 manifest 已配,也要确认云端打包时启用)
- 调试阶段务必用「运行」→「运行到手机或模拟器」→「选择自定义基座」,基座需提前在「运行」→「运行到手机或模拟器」→「制作自定义基座」中构建并安装
- Android 真机上若提示“未安装微信”或“微信版本过低”,说明基座未正确集成微信 SDK,需检查 HBuilderX 版本是否 ≥ 3.98,且插件版本与之匹配
APIv2 密钥 vs APIv3 密钥:别混用
UniApp 官方插件目前只支持 APIv2(即 api_key),不支持 APIv3 的证书体系。如果你在商户平台设置了 APIv3 密钥,但没配 APIv2,支付一定会失败——二者完全不兼容,也不能互相替代。
- APIv2 密钥是 32 位字符串,填在
manifest.json的api_key字段 - APIv3 密钥(
apiV3key)和私钥、证书序列号等,只用于后端(如 Spring Boot)调用微信统一下单接口,前端无需也不应接触 - 如果后端用的是 V3 接口,前端仍只需 V2 配置;V3 的签名、验签、证书加载全由服务端完成
常见报错对应的真实原因
遇到错误别急着改代码,先看错误文案本身指向哪一层:
-
errCode: -2:微信客户端未安装,或版本太低(低于 6.5.7) -
errCode: -1:参数缺失或格式错误,重点检查appid是否为开放平台 AppID、mch_id是否为 10 位纯数字、api_key是否含非法字符 -
errCode: -6:签名失败,通常是后端生成的package字段签名不一致,和前端 manifest 配置无关 - 控制台出现
WXErrCode:-1, WXErrStr:invalid appid:manifest 里的appid和微信开放平台注册的应用 AppID 不一致,或该 AppID 未通过审核
配置本身没有“测试开关”,也没有沙箱环境——填错就是失败,成功就是真实扣款。密钥一旦丢失,只能重置,所有依赖它的后端签名逻辑都要同步更新。










