常见问题
更新时间:2025.10.23技术常见问题
前端问题
Q:JSAPI调起支付报错"当前页面的URL未注册"
A:请参考配置JSAPI支付目录。
Q:JSAPI调起支付报错"JSAPI缺少参数total_fee"
A:请按照以下两点检查:
1,package参数格式错误,正确的package参数格式应该prepay_id=xxx,例如package:"prepay_id=wx201222229874569b201de80e089456213"。
2,package参数为空,请按照文档要求上传正确的参数。
Q:JSAPI调起支付报错"下单账号与支付账号不一致,请核实后再支付"
A:JSAPI下单接口传的sp_openid或sub_openid所属用户需要和实际调起支付用户一致。
Q:JSAPI调起支付提示"为保障支付安全,暂不支持从外部进入微信网页并完成支付"
A:JSAPI支付必需从微信浏览器调起支付,不能从外部浏览器调起支付,外部浏览器请使用H5支付。
Q:如何判断用户是通过微信内置浏览器还是外部浏览器访问商户的H5网页?
A:可以使用下列代码判断是否在微信内置浏览器打开,true为微信内部浏览器
Q:前端如何判断是用户主动取消支付,还是密码输入错误导致失败?
A:可以判断用户取消支付,无法判断密码输入错误,密码输入错误不是终态,用户还可以继续输入密码。
- 小程序支付:requestPayment:fail cancel(用户取消支付),参考小程序调起支付。 
- App支付:errCode=-2(用户取消支付),参考APP调起支付。 
- JSAPI支付:get_brand_wcpay_request:cancel(用户取消支付),参考JSAPI调起支付。 
注意:前端回调并不保证它绝对可靠,不可只依赖前端回调判断订单支付状态,订单状态需以后端查询订单和支付成功回调通知为准。
Q:支付和退款可以分别使用不同版本(v2和v3)的接口吗?
A:可以,但不建议跨版本使用。
Q:调起支付提示“交易失败,今日收款超出单日收款最大金额”
A:
小微商户日收款额度为1万-30万,以当日实际收款提示情况为准,信用卡日收款限额为1000元,月收款限额调整为10000元。
其他类型商户没有限额,可通过合作伙伴平台站内信或下方指引,查询是否有违约记录。
商户违约记录查询与申诉指引(移动端):https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html
微信支付商户自查违约记录/申诉指引(电脑端):https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html
Q:微信小游戏调起JSAPI支付提示:“WeixinJSBridge.invoke is not a function”
A:微信小游戏不支持调用JSAPI支付,需要使用小游戏虚拟支付。
Q:JSAPI调起支付报错:system:access_denied
A:参考以下几点排查:
1、小程序不支持内嵌web-view发起JSAPI支付
2、调起支付的页面url过长会导致微信webview鉴权异常,需要商户精简下url长度。
Q:JSAPI调起支付报错:“调用支付JSAPI缺少参数: appld”
A:参考以下几点排查:
1、请检查调起支付的参数是否传入了appId;
2、如使用的是JS-SDK中的wx.chooseWXpay方法拉起支付,该方法调起支付时的appId依赖wx.config获取,请检查wx.config注入是否成功。
后端问题(接口)
Q:JSAPI/小程序下单返回报错"appid和mch_id不匹配,请检查后再试"
A:下单传的sp_appid需要和服务商商户号绑定,详细请参考服务商商户号与AppID账号关联管理。
Q:JSAPI/小程序下单返回报错"sub_mch_id与sub_appid不匹配"
A:下单传的sub_appid需要在服务商平台操作绑定,详细请参考服务商为特约商户配置AppID(即sub_appid)操作方法。
Q:JSAPI/小程序下单返回报错"appid与openid不匹配"或者"sub_appid和sub_openid不匹配 "
A:JSAPI下单传的sp_openid需要是sp_appid下获取的,sub_openid则需要是sub_appid下获取的,不能传其他appid下的openid,openid获取方式详见参数说明。
Q:下单接口返回”此商家的收款功能已被限制,暂无法支付。商家可登录微信商户平台/微信支付商家助手小程序/经营账户页面查看原因和解决方案“报错如何处理?
A:商户号超级管理员可通过“微信支付商家助手”公众号,点击“我的商家”;或小程序搜索“微信支付商家助手”关键字进入“微信支付商家助手”小程序,进行解脱。
具体步骤请参考:
    商户违约记录查询与申诉指引(移动端):https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html
    微信支付商户自查违约记录/申诉指引(电脑端):https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html
Q:下单报错:"受理关系不存在"。
A:子商户号与服务商商户号没有受理关系,即子商户号不是这个服务商下的进件的。
Q:调用接口报错:“商户未申请过证书。请到商户平台上申请证书授权机构颁发的证书。详情可参考:http://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html。”
A:请核实请求头传入的mchid商户号有没有申请商户API证书,如未申请,请参考商户API证书申请指引。
Q:在微信支付中,transaction_id与prepay_id这两个字段有什么区别?
A:
1、 prepay_id :商户调用微信支付下单接口成功后返回的预支付交易会话标识,用于拉起支付(如JSAPI、APP支付等),有效期为2小时
2、transaction_id :支付成功后由微信支付系统生成的订单号,用于唯一标识一笔成功支付的交易,仅在支付成功回调或查单接口中返回。
Q:调用接口报错:“平台私钥解密失败”
A:平台私钥解密失败可能由以下原因导致:
1、加密敏感数据时使用的公钥信息不正确,需确认是否使用的是微信支付平台证书中的公钥或微信支付公钥。
2、请求接口上送的请求头 Wechatpay-Serial 证书序列号和加密使用的平台证书公钥或微信支付公钥不匹配;
3、加密方式不符合规范,需确保使用RSAES-OAEP算法(推荐使用SHA-256作为哈希算法)。
建议检查证书配置和加密逻辑,并参考微信支付公钥加密敏感信息指引或平台证书加密敏感信息指引文档排查。
Q:v3支付回调通知解密报错:“init client setting err:decrypt downloaded certificate failed: cipher: message authentication failed”。
A:请参考以下几点排查:
1、解密使用的APIv3密钥错误。
2、检查密文是否被截断或篡改(需完整传递ciphertext、associated_data、nonce)。
Q:支付回调怎么测试?
A:微信支付未提供线上测试回调接口。如需测试支付回调功能,建议通过生产环境验证,在真实支付场景中测试回调地址是否能正常接收通知。
注意:回调地址需确保公网可访问的,详细参考回调通知注意事项。
Q:下单报错:{"code":"SIGN_ERROR","message":"商户证书序列号有误。请使用签名私钥匹配的证书序列号"},什么原因?
A:请求的Authorization头中的商户API证书序列号serial_no,与用于计算签名的商户API证书私钥不匹配。可参考如何计算签名指引排查。
Q:下单报错:{ "code": "PARAM_ERROR","message": "http header中的mchid与post payload中的mchid不匹配"},是什么原因?
A:请求头中的mchid与请求体中的mchid不一致,请检查参数传递是否正确。
Q:第一次下单未支付,第二次用同一个out_trade_no再次调用可以吗?
A:可以。需保证所有参数与首次下单一致(如 appid、mchid、金额、商品描述等),否则会报“201 商户订单号重复”错误。
Q:下单返回商户订单号重复是什么原因?
A:同一个商户订单号(out_trade_no),不允许更换参数或更换其他下单接口重复下单。
Q:回调验签报错:“Last unit does not have enough valid bits”,是什么原因,如何处理?
A:
- 原因:这是签名探测流量导致的报错。探测流量的签名值不是合法的Base64,会触发“Last unit does not have enough valid bits”这类Base64解码错误。 
- 快速判断:查看回调头 Wechatpay-Signature 的值,若以“WECHATPAY/SIGNTEST/”为前缀,即可确认是探测流量签名。 
- 处理建议:对探测流量回调,正常返回失败(非2xx),不要按业务成功处理,等待后续微信返回带有正确签名的正式回调。 

