常见问题

更新时间:2025.09.04

技术常见问题

前端问题

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为微信内部浏览器

1/**
2 * 检测当前是否运行在微信内置浏览器中
3 */
4function detectWeChatBrowser() {
5  // 确保 navigator 对象存在(避免特殊运行环境报错)
6  if (typeof navigator === 'undefined') {
7    console.warn('当前环境无 navigator 对象,无法检测浏览器类型');
8    return;
9  }
10
11  // 使用 includes 替代 indexOf,语义更清晰(ES6 特性,现代浏览器均支持)
12  const isWeChat = navigator.userAgent.includes('MicroMessenger');
13  //若需支持 IE11 等不支持 includes的旧浏览器,可将 includes替换为 indexOf !== -1
14  //const isWeChat = navigator.userAgent.indexOf('MicroMessenger') !== -1;
15
16  // 三元表达式简化条件输出
17  console.log(isWeChat ? '微信内置浏览器' : '外部浏览器');
18}
19
20// 执行检测
21detectWeChatBrowser();

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/小程序下单返回报错"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:应答的微信支付签名验证失败

A:签名验证失败参考一下方案:
1、检查 HTTP 头 Wechatpay-Serial 的内容是否跟商户当前所使用的微信支付平台证书的序列号一致。
2、按照如何使用平台证书验签名如何使用微信支付公钥验签指引核对私钥、证书及签名算法(SHA256withRSA),确保验签逻辑与微信支付规则一致。
3、可以使用验签工具验证签名,参考如何使用签名/验签工具
4、建议使用微信支付官方提供的SDK,SDK封装了签名验签方法。

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作为哈希算法)。

建议检查证书配置和加密逻辑,并参考微信支付公钥加密敏感信息指引平台证书加密敏感信息指引文档排查。

 

更多技术问题
技术咨询
反馈
咨询
目录
置顶