微信 H5(wx_wap)支付调用支付常见报错

更新于:2020年05月21日 15:32:25

一、报错:网络环境未能通过安全验证,请稍后再试

image.png

解决方法:

1. 由商户侧统一下单传的终端 IP (client_ip)与用户实际调起支付时微信侧检测到的终端 IP 不一致导致,需要传递正确的终端 IP 到 client_ip ,详情请参见:客户端 ip 获取指引

2. 统一下单与调起支付时的网络有变动,如统一下单时是 wifi 网络,下单成功后切换成 4G 网络再调起支付,这样可能会引发微信的正常拦截,请保持网络环境一致的情况下重新发起支付流程


二、报错:商家参数格式有误,请联系商家解决

image.png

解决方法:

1. 由当前调起 H5 支付的域名为空导致。因为最后调起支付的页面为:

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx***&package=***

如果直接访问这个页面,微信就无法通过域名来检测你的支付是否合法。所以必须按正常流程进行页面跳转后发起支付,或自行抓包确认域名值是否为空

2. 如果是 APP 里调起 H5 支付,需要在 webview 中手动设置 referer  域名,代码示例如下:

@Override public boolean shouldOverrideUrlLoading(Webview view, String url) {    
    Map extraHeaders = new HashMap();		
    extraHeaders.put("Referer", "商户申请 H5 时提交的授权域名"); //例如:https://www.pingxx.com		
    
    if (url.startsWith("weixin://")) {			
        Intent intent = new Intent(Intent.ACTION_VIEW);			
        intent.setData(Uri.parse(url));			
        startActivity(intent);			
        return true;		
    }		
    
    view.loadUrl(url, extraHeaders);		
    return true;
}


三、报错:商家存在未配置的参数,请联系商家解决

image.png

解决方法:

1.当前调起 H5 支付的域名与申请 H5 支付时提交的授权域名不一致,需要使用申请 H5 支付时的域名调起支付。如需添加或修改授权域名,请使用对应的商户号登录微信商户平台,在「产品中心」 - 「开发配置」中自行配置

2.如果设置了回跳地址 result_url ,请确认设置的回跳地址的域名与申请 H5 支付时提交的授权域名是否一致

备注:若提交申请的域名的是二级域名 www.pingxx.com ,那么要使用 test.pingxx.com 这个二级域名是无法调起支付的,建议直接配置顶级域名 pingxx.com ,这样二级域名不配置也可以进行支付。


四、报错:支付请求已失效,请重新发起支付

image.png

解决方法:

返回的 credential 字段中的 wx_wap URL 生成后,有效期为5分钟,如超时请重新创建支付请求,生成新的 URL 后再发起支付


、报错:请在微信外打开订单,进行支付

image.png

解决方法:

H5 支付不能直接在微信客户端内调起,请在外部浏览器调起

六、验证签名失败(iOS)Or 系统繁忙,请稍候再试(Android)

解决方案:使用同一个微信号调起支付

七、由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

image.png

创建订单的时候传的 client_ip 不是真实的发起支付请求客户端的 IP 导致的。

解决方法:

创建订单的时候传的 client_ip 要上传发起支付请求的客户端的真实 IP 。

    您需要登录后才可以回复