这里不讲具体实现只讲如何测试微信内置浏览器如何自动获取对应支付方式的实现。
事情是这样的,因为目前需要做一个支付公众号支付,原来有支付宝pc,支付宝h5,支付宝app,微信H5,微信app,微信pc,鉴于微信公众号是微信内置浏览器访问需要有微信浏览器的模拟环境才可以,也就是说你如果想要封装一个总的支付方法并且可以自动检测,检测微信内置浏览器获取对应的支付方式是其中必要的一环。
微信内置浏览器(wxpay_jsapi)
核心代码
if(非微信内置浏览器支付){
排除wxpay_jsapi支持ali_h5,wx_h5
}else{
if(判断是否是微信小程序){
//排除 wxpay_h5 alipay_h5 wxpay_jsapi支持小程序
}else{
//微信内置浏览器
排除alipay_h5,wxpay_h5 支持wxpay_jsapi
}
//
}
public function getPaymentOpenList($condition = array()) {
$condition['payment_state'] = self::STATE_OPEN;
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') == false) {
$condition['payment_code'] = array('not in',array('wxpay_jsapi','wxpay_minipro','allinpay_h5'));
}else{
if( strpos($_SERVER['HTTP_USER_AGENT'], 'miniprogram') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'miniProgram') !== false ){
$condition['payment_code'] = array('not in',array('wxpay_h5','alipay_h5','wxpay_jsapi'));
}else{
$condition['payment_code'] = array('not in',array('wxpay_h5','alipay_h5'));
}
}
return db('payment')->where($condition)->select();
}
查了很多网址,
有说这样的,
第一步;
写一个静态页面
<script type="text/javascript">
window.onload = function() {
isWeixinBrowser();
}
//判断是否微信浏览器
function isWeixinBrowser() {
var ua = navigator.userAgent.toLowerCase();
var result = (/micromessenger/.test(ua)) ? true : false;
if (result) {
console.log('你正在访问微信浏览器');
}
else {
console.log('你访问的不是微信浏览器');
}
return result;
}
</script>
第二步选择谷歌浏览器
More Tools -----Network condition打开Network condition窗口
User agent选项,选择Custom(自定义),然后在下面的文本框中输入Android或者Ios的UA就可以了
了解安卓微信和Ios微信的UA(User agent:用户代理)
安卓微信UA: mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko) version/4.0 mobile safari/534.30 micromessenger/5.0.1.352
Ios微信UA: mozilla/5.0 (iphone; cpu iphone os 5_1_1 like mac os x) applewebkit/534.46 (khtml, like gecko) mobile/9b206 micromessenger/5.0
第三步测试,本人亲测有效,但是因为我的程序是post请求而且还要传输header参数,没法在浏览器模拟,即使我安装了advanced rest client application 也无法实现。
然后我访问了程序按着测试的步骤又试了一遍还是获取不到。
所以这个暂时还没发能达到实现微信浏览器的功能。
然后我默默的打开了微信web开发工具。