信心慢慢的在网页上试通了支付宝网页支付,结果微信不买账,把微信好一通抱怨,问题还要解决,就在网上找解决方法,
网上解决方法很多,有的能看明白,有的看不明白,反正最后搞出来了,其实也很简单,给大家看一下我的处理方法
参考官网demo:https://docs.open.alipay.com/203/105285/
ap.js和pay.htm是必须的,放好位置,配置好调用链接
首先还是原本的调用方式,代码如下,还需要把接口中echo $result给注掉
正常的话把上面返回结果输出页面就可以了,微信公众号里面就要稍作处理,这里参考官网demo,我使用了post请求,因为上述返回结果直接就是一个form表单提交,所以就把返回结果中js部分去掉,换用官网demo中js方法,就可以了
php
因为form包含所有参数,所以js配置直接把input[type=hidden]获取到就行,另外form的id需要改为alipaysubmit,和返回数据一致
1 <div id="pay-methods-panel" class="pay-methods-panel"> 2 {$form} 3 <div class="wrapper buy-wrapper"> 4 <a href="javascript:void(0);" class="J-btn-submit btn mj-submit btn-strong btn-larger btn-block">确认支付</a> 5 </div> 6 </div> 7 <script type="text/javascript" src="themes/simplebootx/Public/assets/js/ap.js"></script> 8 <script> 9 var btn = document.querySelector(".J-btn-submit"); 10 btn.addEventListener("click", function (e) { 11 e.preventDefault(); 12 e.stopPropagation(); 13 e.stopImmediatePropagation(); 14 var queryParam = ''; 15 Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) { 16 queryParam += '&' + ele.name + "=" + encodeURIComponent(ele.value); 17 }); 18 var gotoUrl = document.querySelector("#alipaysubmit").getAttribute('action') + queryParam; 19 _AP.pay(gotoUrl); 20 21 return false; 22 }, false); 23 </script>
还有几点要注意,ap.js中location.href要配置正确,pay.htm的ap.js要引用对,
另外api版本要弄对,我用的最新api,但官网解决方法demo应该是老版本的,因为js参数配置都不一样,按照demo中js配置参数不好使,好在我这种方式直接忽略掉了这种问题
好了就到这里,我是懒人懒办法,不过感觉挺省事的,欢迎大家有问题讨论