本人在开发的时候,当时第一次碰到微信h5支付,根据后端返回的mweb_url直接使用lcoation.href进行跳转,(注意,此时是开发环境下,即localhost:8080下),然后微信支付后台验证之后,返回的了“商家存在未配置参数,请联系商家解决”;
然后我也是第一次碰到这个情况,我以为是后端的参数没有配置,直接找后端沟通,然后后端让我在头里面加上referer这个参数,我想我前端用的是location.href跳转的,怎么在头里面加上referer这个参数呢?
于是就在网上荡了3个小时,任是没有找到适合我的解决方案,都是一些我看不懂的代码,比如在webview中配置referer。但是也知道了为什么会报“商家存在未配置参数,请联系商家解决”这个问题了,是因为你在开发环境下的来源(referer)是localhost:8080;而公司在微信支付那边申请的h5支付域名没有这个。因为微信支付后台就会给出这样的返回。
然后第二天我还是没有解决这个问题,但是那天合作方又需要我的h5链接地址,于是就麻烦同事帮忙在测试环境上部署了一版;这个时候我觉得应该就可以正常的支付了,为什么呢?
因为 此时测试环境下的来源referer是一个二级域名,而公司在微信支付那边申请的是支付域名是一级域名,这个时候,微信支付后台认为这来源是一致的;这个时候就会在浏览器调用deep_link链接去唤醒微信支付。
总结:就是referer其实不需要进行配置,在测试环境上就能后正常使用;但是有一个缺点就是每次代码做了修改,都需要进行测试环境的发布,比较麻烦。因为为了方便还是需要在开发的时候把referer的问题给解决了,才好。希望后期有时间在做处理吧!