--- title: WeChat Pay pageComponent: name: PaymentMethodsTitle paymentMethod: WeChat Pay permalink: /notes/zh/paymentMethods/WeChatPay/ createTime: '2025/06/24 11:04:19' description: >- WeChat Pay 是微信支付方式,适用于中国地区的PC端和移动端支付。主要特点包括:显示微信支付二维码、支持用户扫码支付、实时更新支付状态。在PC端,用户通过扫描二维码完成支付;在移动端,根据浏览器环境调起微信支付或显示二维码。使用时需确保域名已加入微信H5支付授权,并设置 Referer 请求头。 --- ## 支付域名授权 根据微信要求,需要将商户的域名加入微信的 H5 支付授权域名中。并且需设置 Referer 请求头。 我们默认将您的申请开户申报的域名加入微信的 H5 支付授权域名中。 如果您需要添加其他域名, 请您将相关申请信息发送到`acquire-risk@pingpongx.com`并抄送`acquire-ts@pingpongx.com`。 **申请材料:** 1. 商户Client ID 2. 商户授权域名 ## 支付场景说明 ### PC端支付 - 显示微信支付二维码 - 用户使用微信扫码完成支付 - 页面实时显示支付状态更新 ### 移动端支付 1. **微信内浏览器**:暂不支持直接调起微信支付,根据微信要求需要JSAPI调用。 2. **微信外浏览器**: - iOS:跳转到微信客户端 - Android:显示二维码或尝试调起微信 - 其他情况:显示二维码供扫码支付 :::danger 提示 - 您的域名必须加入微信 H5 支付授权域名。 - 微信对Referer 的要求严格,请务必设置 Referer 请求头。 - 确保用户通过页面跳转进入支付页面,而非直接访问支付链接 ::: ## 常见问题 ### 错误提示:"商家参数格式有误,请联系商家解决" **问题原因:** - Referer 请求头为空或缺失 - 用户直接访问支付链接,未通过页面跳转 **解决方案:** 1. 确保用户通过页面跳转进入支付页面,而非直接访问支付链接 2. App 内 WebView 需手动设置 Referer 请求头: ```java Map extraHeaders = new HashMap<>(); extraHeaders.put("Referer", "https://你的授权域名"); ``` ### 错误提示:"商家存在未配置的参数,请联系商家解决" **问题原因:** - 当前网页域名与微信后台配置的 H5 支付授权域名不一致 **解决方案:** 1. 联系我们确认授权域名是否正确 2. 修改或添加正确的授权域名 ### 错误提示:"支付请求已失效,请重新发起支付" **问题原因:** - 支付链接超过 5 分钟有效期 **解决方案:** - 重新调用支付接口生成新的支付链接 ### 错误提示:"请在微信外打开订单,进行支付" **问题原因:** - 在微信客户端内使用了 H5 支付方式 **解决方案:** - 微信内环境应使用 JSAPI 支付 - 引导用户在外部浏览器中打开支付页面 ### 错误提示:"签名验证失败"或"系统繁忙" **问题原因:** 1. 多个微信账号访问同一支付链接 2. 回调 URL 编码不正确 **解决方案:** 1. 为每个用户生成独立的支付链接 2. 确保回调 URL 参数正确编码 ### 错误提示:"由于商家传入的H5交易参数有误" **问题原因:** - 客户端 IP 地址错误(如使用 127.0.0.1) **解决方案:** - 使用真实的客户端 IP 地址 ### Referer 相关配置说明 微信 H5 支付对 Referer(HTTP 请求头中的来源域名)有严格要求: **Referer 作用:** 微信服务器通过 Referer 头部判断当前网页的来源域名,是否与微信商户平台中配置的 H5 支付授权域名一致。 **常见 Referer 问题解决方案:** | 问题类型 | 具体表现 | 解决方案 | |----------------|-------------------------------|---------------------------------| | **Referer 为空** | 直接访问支付链接或 WebView 未设置 Referer | 确保通过页面跳转访问;WebView 手动设置 Referer | | **域名不匹配** | 当前域名与授权域名不一致 | 在微信商户平台添加或修改授权域名 | | **WebView 配置** | App 内 H5 无法调起支付 | 手动添加 Referer Header |