代码 微信支付 APP/JSAPI 报错对照:NO_AUTH、prepay_id 与 prepayid 的大小写坑

2026-10-01 21:02:26

微信支付 APP/JSAPI 报错对照:NO_AUTH、prepay_id 与 prepayid 的大小写坑

对接微信支付时,很多报错其实在官方常见问题里都有对应条目,只是分散在 APP 支付、JSAPI 支付和合作伙伴(机构)三份文档里。这里按报错原文归拢一遍,方便出问题时直接对照字段排查。

APP 支付

NO_AUTH:调用 APP 下单 API 返回,表示商户无权限,需要联系对接商务开通。

「商户支付下单 id 非法」:常见原因是字段名写错。统一下单接口返回的字段名是 prepay_id,调起支付接口传入的字段名是 prepayid,两处大小写和下划线不一致,别直接复制。

TRADE_NO 相关报错:商户订单号重复,核实是否重复提交。

MCH_NOT_EXISTS:商户号不存在,检查商户号。

INVALID_TRANSACTIONID:订单号非法,检查微信支付订单号。

RULE_LIMIT:业务规则限制,降频后重试。

第一次能唤起、第二次报包名不一致:属于接口校验规则问题,第一次未校验包名/签名。需要自查 APP 包名与包签名是否和开放平台配置一致。

安卓端「系统繁忙,请稍后再试」:检查下单参数里是否混入空格;另外 fee_type 里的 CNY 必须大写。

「APPID 未关联 PaySignKey」:检查 prepayid 是否为字符串、是否出现转码错误,以及二次签名参数是否正确。

调起支付报「商户传入的 APPID 参数不正确」:调起支付请求里的 APPID 与统一下单用的 APPID 不一致。

JSAPI 支付

「当前页面的 URL 未注册」:商户号未在商户平台配置对应的支付目录。

缺少 total_fee / 缺少 package:检查参数;package 格式应为 prepay_id=xxx,且与 JSAPI 下单返回的值保持一致。

「下单账号与支付账号不一致」:JSAPI 下单时的 sp_openid / sub_openid 所属用户,要跟实际调起支付的用户一致。

system:access_denied:小程序不支持内嵌 web-view 发起 JSAPI 支付;另外调起支付页面 url 过长会导致 webview 鉴权异常,需要精简。

redirect_url 域名与后台配置不一致(10003)、10005 scope 权限:核对 appid、授权域名、网页授权域名是否一致。

「appid 和 mch_id 不匹配」「sub_mch_id 与 sub_appid 不匹配」「appid 与 openid 不匹配」:核对服务商与子商户的参数配对关系。

SIGN_ERROR 商户证书序列号有误:使用与签名私钥匹配的证书序列号。

PARAM_ERROR:HTTP header 中的 mchid 与 post payload 中的 mchid 不匹配。

合作伙伴(机构)

常见原因集中在四类:签名值有误;响应超时(接口一 2s、接口二 3s);传参有误(openid / sub_openid / appid / sub_appid 配对);参数前置配置有误。

Authorization 头:首字母要大写,签名信息用逗号分隔,serial_no 传商户 API 证书序列号。

签名串:HTTP 方法与 URL(去掉域名)结尾要加 \n,最后一行也要回车换行;body 字段顺序使用 HTTP 返回包中的顺序。

证书:平台证书需每 5 年更换;微信支付公钥无有效期,且每个机构不同。

参考文档:

复制全文 生成海报 微信支付 接口对接 JSAPI APP支付 踩坑

推荐文章

程序员茄子在线接单