支付宝、微信支付用同一二维码支付

  中午去吃饭的时候,发现一家店里只有一个支付二维码,支付宝和微信扫一扫之后都能支付 Oops!和同事讨论了一下,回头自己又做了测试。其实原理很简单。

  首先二维码是一个URL地址。无论是支付宝还是微信扫码后,都直接请求这个URL地址,在这个URL里根据HTTP请求头判断是扫码的是支付宝还是微信。如果是支付宝,就调用支付宝流程,如果是微信,就调用微信支付流程。

1     $userAgent = $_SERVER['HTTP_USER_AGENT'];
2     $userAgent = strtolower($userAgent);
3     if(strpos($userAgent, 'micromessenger') !== false){
4         //微信支付逻辑
5         echo "weixin";
6     }
7     if(strpos($userAgent, 'alipayclient') !== false){
8         //支付宝支付逻辑
9     }

微信浏览器请求和支付宝请求的区别

微信浏览器请求头userAgent

Mozilla/5.0 (Linux; Android 5.1.1; 2014813 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/88888888 Safari/537.36 MicroMessenger/6.5.4.1000 NetType/WIFI Language/zh_CN

支付宝请求头userAgent

Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; 2014813 Build/LMY47V) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/1.0.0.100 U3/0.8.0 Mobile Safari/534.30 Nebula AlipayDefined(nt:WIFI,ws:360|640|2.0) AliApp(AP/10.0.2.012305) AlipayClient/10.0.2.012305 Language/zh-Hans useStatusBar/true

 

posted @ 2017-02-16 08:56  刘一二  阅读(1256)  评论(0编辑  收藏  举报