---
url: "https://pay.weixin.qq.com/doc/v3/partner/4013334850.md"
title: "常见问题"
doc_id: 4013334850
---

>更新时间：2026.06.29

## 技术常见问题

### 前端问题

#### Q：JSAPI调起支付报错"当前页面的URL未注册"

A：请参考[配置JSAPI支付目录](https://pay.weixin.qq.com/doc/v3/partner/4013335127.md)。

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

```
/**
 * 检测当前是否运行在微信内置浏览器中
 */
function detectWeChatBrowser() {
  // 确保 navigator 对象存在（避免特殊运行环境报错）
  if (typeof navigator === 'undefined') {
    console.warn('当前环境无 navigator 对象，无法检测浏览器类型');
    return;
  }

  // 使用 includes 替代 indexOf，语义更清晰（ES6 特性，现代浏览器均支持）
  const isWeChat = navigator.userAgent.includes('MicroMessenger');
  //若需支持 IE11 等不支持 includes的旧浏览器，可将 includes替换为 indexOf !== -1
  //const isWeChat = navigator.userAgent.indexOf('MicroMessenger') !== -1;

  // 三元表达式简化条件输出
  console.log(isWeChat ? '微信内置浏览器' : '外部浏览器');
}

// 执行检测
detectWeChatBrowser();
```

#### Q：前端如何判断是用户主动取消支付，还是密码输入错误导致失败？

A：可以判断用户取消支付，无法判断密码输入错误，密码输入错误不是终态，用户还可以继续输入密码。

- 小程序支付：requestPayment:fail cancel（用户取消支付），参考[小程序调起支付](https://pay.weixin.qq.com/doc/v3/partner/4012085827.md)。

- App支付：errCode=-2（用户取消支付），参考[APP调起支付](https://pay.weixin.qq.com/doc/v3/partner/4013080233.md)。

- JSAPI支付：get\_brand\_wcpay\_request:cancel（用户取消支付），参考[JSAPI调起支付](https://pay.weixin.qq.com/doc/v3/partner/4012069855.md)。


注意：前端回调并不保证它绝对可靠，不可只依赖前端回调判断订单支付状态，订单状态需以后端查询订单和支付成功回调通知为准。

#### Q：支付和退款可以分别使用不同版本（v2和v3）的接口吗？

A：可以，但不建议跨版本使用。

#### Q：调起支付提示“交易失败，今日收款超出单日收款最大金额”

A：

小微商户日收款额度为1万-30万，以当日实际收款提示情况为准，信用卡日收款限额为1000元，月收款限额调整为10000元。

其他类型商户没有限额，可通过[合作伙伴平台](https://pay.weixin.qq.com/partner/public/home)站内信或下方指引，查询是否有违约记录。

商户违约记录查询与申诉指引（移动端）：[https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html](https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html)

微信支付商户自查违约记录/申诉指引（电脑端）：[https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html](https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html)

#### Q：微信小游戏调起JSAPI支付提示：“WeixinJSBridge.invoke is not a function”

A：微信小游戏不支持调用JSAPI支付，需要使用[小游戏虚拟支付](https://developers.weixin.qq.com/minigame/dev/guide/open-ability/virtual-payment/guide.html)。

#### 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调起支付报错：此公众号并没有这些scope的权限，错误码：10005？

A：参考以下几点排查：

1、建议检查一下公众号的功能。比如是不是在订阅号/未认证的公众号里面尝试调用认证服务号的功能。

2、微信支付认证过期或者APPID填写错误。

3、请使用snsapi\_userinfo的授权登录方式即可解决。

#### Q：JSAPI调起支付报错"调用支付JSAPI缺少参数:package"？

A：参考以下几点排查：

1、请检查调起支付的参数是否传入了package参数；

2、请检查package参数格式是否为prepay\_id=xxx，例如："package": "prepay\_id=wx201612032137789b201de80e0661234657"（需与[JSAPI下单](https://pay.weixin.qq.com/doc/v3/partner/4012738519.md)接口返回的prepay\_id一致）。

#### Q：公众号支付报错：{errMsg: "chooseWXPay:fail, the permission value is offline verifying"}？

A：请按照以下几点检查：

1、请勿在模拟器中实行发起支付，请在真机发起；

2、微信公众号支付授权目录填写实际发起支付的url地址。

举例：

页面：http://www.newfms.com/order/pay/id-115

此处填：http://www.newfms.com/order/pay/

#### Q：JSAPI调起支付报错：商家暂时没有此类交易权限，请联系商家客服？

A：参考以下几点排查：

1、请检查你的下单接口是否指定了支付用户的身份，需单独开通指定身份支付权限方可使用

2、请确认你使用的商户号是否有jsapi支付的权限，可登录商户平台-产品中心查看

#### Q：JSAPI调起支付报错：当前页面的URL未注册：http://www.weixin.qq.com/pay.do

A：请检查下单接口中使用的商户号是否在[商户平台](http://pay.weixin.qq.com)配置了对应的支付目录。

#### Q：JSAPI调起支付报错：redirect\_url域名与后台配置不一致，错误码：10003

A：参考以下几点排查：

1、本错误是公众号获取openid接口报的错误，接口文档：[https://mp.weixin.qq.com/wiki?t=resource/res\_main&id=mp1421140842](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842)

2、检查下单接口传的appid与获取openid接口的appid是否同一个（需一致）

3、检查appid对应的[公众号后台](http://mp.weixin.qq.com)，是否配置的授权域名和获取openid的域名一致。授权域名配置路径：公众平台--设置--公众号设置--功能设置--网页授权域名

#### Q：JSAPI调起支付报错：该商户暂不支持通过外部拉起微信完成支付

A：Jsapi支付只能从微信浏览器内发起支付请求

### 后端问题（接口）

#### Q：JSAPI/小程序下单返回报错"appid和mch\_id不匹配，请检查后再试"

A：下单传的sp\_appid需要和服务商商户号绑定，详细请参考[服务商商户号与AppID账号关联管理](https://kf.qq.com/faq/200520fueQrI200520aQf6Rr.html)。

#### Q：JSAPI/小程序下单返回报错"sub\_mch\_id与sub\_appid不匹配"

A：下单传的sub\_appid需要在服务商平台操作绑定，详细请参考[服务商为特约商户配置AppID（即sub\_appid）操作方法](https://kf.qq.com/faq/190715yaYnYv1907153mmIbA.html)。

#### Q：JSAPI/小程序下单返回报错"appid与openid不匹配"或者"sub\_appid和sub\_openid不匹配 "

A：JSAPI下单传的sp\_openid需要是sp\_appid下获取的，sub\_openid则需要是sub\_appid下获取的，不能传其他appid下的openid，openid获取方式详见[参数说明](https://pay.weixin.qq.com/doc/v3/partner/4012081935.md)。

#### Q：下单接口返回”此商家的收款功能已被限制，暂无法支付。商家可登录微信商户平台/微信支付商家助手小程序/经营账户页面查看原因和解决方案“报错如何处理？

A：商户号超级管理员可通过“微信支付商家助手”公众号，点击“我的商家”；或小程序搜索“微信支付商家助手”关键字进入“微信支付商家助手”小程序，进行解脱。

具体步骤请参考：

商户违约记录查询与申诉指引（移动端）：[https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html](https://kf.qq.com/faq/240129aQZjiM240129QRBFRV.html)

微信支付商户自查违约记录/申诉指引（电脑端）：[https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html](https://kf.qq.com/faq/240129iuEZBJ240129meAR3u.html)

#### Q：下单报错："受理关系不存在"。

A：子商户号与服务商商户号没有受理关系，即子商户号不是这个服务商下的进件的。

#### Q：调用接口报错：“商户未申请过证书。请到商户平台上申请证书授权机构颁发的证书。详情可参考:http://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html。”

A：请核实请求头传入的mchid商户号有没有申请商户API证书，如未申请，请参考[商户API证书申请指引](https://kf.qq.com/faq/161222NneAJf161222U7fARv.html)。

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

建议检查证书配置和加密逻辑，并参考[微信支付公钥加密敏感信息指引](https://pay.weixin.qq.com/doc/v3/partner/4013059044.md)或[平台证书加密敏感信息指引](https://pay.weixin.qq.com/doc/v3/partner/4013059053.md)文档排查。

#### Q：v3支付回调通知解密报错：“init client setting err:decrypt downloaded certificate failed: cipher: message authentication failed”。

A：请参考以下几点排查：

1、解密使用的APIv3密钥错误。

2、检查密文是否被截断或篡改（需完整传递ciphertext、associated\_data、nonce）。

#### Q：支付回调怎么测试？

A：微信支付未提供线上测试回调接口。如需测试支付回调功能，建议通过生产环境验证，在真实支付场景中测试回调地址是否能正常接收通知。

注意：回调地址需确保公网可访问的，详细参考[回调通知注意事项](https://pay.weixin.qq.com/doc/v3/partner/4012082570.md)。

#### Q：下单报错：{"code":"SIGN\_ERROR","message":"商户证书序列号有误。请使用签名私钥匹配的证书序列号"}，什么原因？

A：请求的Authorization头中的商户API证书序列号serial\_no，与用于计算签名的商户API证书私钥不匹配。可参考[如何计算签名](https://pay.weixin.qq.com/doc/v3/partner/4012365864.md#4.-%E8%AE%BE%E7%BD%AEHTTP%E5%A4%B4)指引排查。

#### 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：

- 原因：这是[签名探测流量](https://pay.weixin.qq.com/doc/v3/partner/4013059030.md#5.-%E5%BA%94%E5%AF%B9%E7%AD%BE%E5%90%8D%E6%8E%A2%E6%B5%8B%E6%B5%81%E9%87%8F)导致的报错。探测流量的签名值不是合法的Base64，会触发“Last unit does not have enough valid bits”这类Base64解码错误。

- 快速判断：查看回调头 Wechatpay-Signature 的值，若以“WECHATPAY/SIGNTEST/”为前缀，即可确认是探测流量签名。

- 处理建议：对探测流量回调，正常返回失败（非2xx），不要按业务成功处理，等待后续微信返回带有正确签名的正式回调。


#### Q：子商户号配置了APPID，但未配置JSAPI支付授权目录，调用JSAPI支付却可以成功，可能是什么原因呢？

A：服务商自身配置了该支付授权目录，只要服务商或子商户其中一个配置了匹配的支付授权目录就能调起支付。

#### Q：下单接口总金额amount.total如果传0会报什么错误？

A：报错：{"code": "PARAM\_ERROR","message": "输入源“/body/amount/total”映射到数值字段“总金额”规则校验失败，值低于最小值 1"}。

#### Q：调用微信订单号查询订单接口或商户订单号查询订单接口报错：“商户号和订单信息不匹配”，什么原因？

A：参考以下几点排查：

1、确认请求中 `mchid`（普通商户模式）或 `sp_mchid`/ `sub_mchid`（服务商模式）是否与下单时使用的商户号一致；

2、确保查询的订单号（ `out_trade_no` 或 `transaction_id`）属于当前商户号下的订单。

#### Q：在服务商平台，是否可以直接查看订单的回调通知或回调状态，而不需要调用查单接口？

A：服务商平台不支持查看回调通知或回调状态，订单结果需调用查单接口查询。

#### Q：关单接口是否支持重复调用？

A：关单接口支持重入。

#### Q：JSAPI下单报错：“服务商与特约商户关系上，该产品授权已被解除”，如何解决？

A：请参考以下步骤处理：

步骤一：服务商登录[服务商平台](https://pay.weixin.qq.com/index.php/partner/public/home)，通过路径【产品中心 -> 特约商户授权产品 -\> 服务商JSAPI支付 -> 特约商户列表】找到需要授权JSAPI支付的子商户号，点击“发起邀请”。

步骤二：子商户登录[商户平台](https://pay.weixin.qq.com/)，通过路径【产品中心 -\> 我的授权产品】找到服务商JSAPI支付，点击“授权”。

#### Q：后台显示公众号认证已过期，为何仍能支付成功？

A：公众号年审认证到期后享有7天自动续期。当前账号处于续期保护期内，需在续期结束前完成微信认证。

#### Q：查单接口能查到多久以前的订单？是否有时间上的限制？

A：暂无时间限制