微信返回状态码异常,请检查参数是否错误
摘要
提示状态码异常、参数错误,分凭证、入参、签名、配置、网络5 大块逐项排查,区分【公众号 / 小程序接口】和【微信支付接口】两类场景。
一、优先核对核心密钥(最高频报错)
1. access_token 异常(40001/41001/42001)
- AppID、AppSecret 复制错误、多空格、测试 / 正式账号混用;
- access_token有效期 2 小时,未做本地缓存、频繁重复获取超限;
- 服务器 IP 未在公众号后台添加 IP 白名单,被微信拦截请求微信开放社区。
解决:重新拉取最新 access_token,打印 token 原值核对。
2. 支付专用:商户密钥错误
- V2 支付:32 位 API 密钥(商户平台→产品中心→开发配置);
- V3 支付:商户号、证书序列号、APIv3 密钥、私钥不匹配;
用微信官方在线签名校验工具核对签名字符串微信开放社区。
二、请求参数逐项校验(参数错误主体原因)
- 必传参数缺失:openid、code、out_trade_no、total_fee 漏传;
- code 仅 5 分钟有效期、一次性使用,重复调用直接失效(40029);
- 参数格式错误(47001)
- JSON 请求:字段大小写、中文非UTF-8 编码、json 格式错乱、多余逗号;
- JSAPI 支付:
package必须格式prepay_id=wxxxxx,不能直接传 prepay_id 原值微信支付; - 金额:total_fee 单位分,不能传元(如 1 元 = 100);
- 参数值非法:订单号重复、openid 不属于当前 AppID、时间戳格式错误。
三、签名错误(支付接口最常见)
- 参数未字典升序排序再拼接签名字符串;
- 参与签名字段和实际请求字段不一致(多 / 少参数);
- 参数值做了 URL 编码后再签名(签名用原始原值)微信开放社区;
调试:打印原始待签名字符串,粘贴官方校验工具比对。
四、后台域名 / 权限配置遗漏
- 网页授权:公众号【功能设置 - 网页授权域名】未配置当前域名,跳转回调报错;
- JSAPI 支付:商户后台配置支付授权目录,目录路径大小写、斜杠错误;
- 接口权限:48001 = 接口未开通权限(如获取用户信息、群发接口需后台申请)微信开放社区。
五、网络 & 调用限制
- 服务器出口网络波动、DNS 异常,请求超时返回异常状态码;
- 接口调用超限(45009):单日调用频次超过微信配额,限流拦截。
六、快速调试方法
- 打印完整请求报文 + 微信返回原始 JSON,查看真实 errcode 错误码;
- 复制请求 rid,在微信开放平台 API 诊断工具一键查日志
评论(0)
