user-agent:判斷掃碼的客戶端是微信還是支付寶
User Agent格式
User Agent中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
瀏覽器的 UA 字串
標准格式為: 瀏覽器標識 (操作系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本信息
微信APP:Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 MicroMessenger/6.7.2 NetType/4G Language/zh_CN 支付寶APP:Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 NebulaSDK/1.8.100112 Nebula PSDType(1) AlipayDefined(nt:4G,ws:320|504|2.0) AliApp(AP/10.1.32.600) AlipayClient/10.1.32.600 Alipay Language/zh-Hans
- 獲取user-Agent 之后,
- 通過識別MicroMessenger或者AlipayClient這樣的關鍵字應該就可以判斷是微信還是支付寶
判斷掃碼的客戶端是微信還是支付寶(JAVA方式)
@RestController public class PaySourceController { @RequestMapping("/sweep") public String sweepCode(HttpServletRequest request) { String userAgent = request.getHeader("user-agent"); if (userAgent != null && userAgent.contains("AlipayClient")) { return "來自支付寶"; }else if (userAgent != null && userAgent.contains("MicroMessenger")) { return "來自微信"; }else{ return "未知來源"; } } }
判斷掃碼的客戶端是微信還是支付寶(JS方式)
function IsWeixinOrAlipay(){ var ua = window.navigator.userAgent.toLowerCase(); //判斷是不是微信 if ( ua.match(/MicroMessenger/i) == 'micromessenger' ) { return "WeiXIN"; } //判斷是不是支付寶 if (ua.match(/AlipayClient/i) == 'alipayclient') { return "Alipay"; } //哪個都不是 return "false"; }
參考資料:https://blog.csdn.net/fly910905/article/details/82498813