先看示例,用 微信扫一扫 与 支付宝扫一扫 来扫描下方的二维码。
该判断实现方式可以从前端Javascript实现和后端实现(Java,Python等)
一、前端实现方式
只需要判断 userAgent 是 MICROMESSENGER 或者 ALIPAYCLIENT就行。
MICROMESSENGER:微信支付
ALIPAYCLIENT:支付宝支付
上方二维码对应的HTML文件代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>支付方式判断</title>
<meta name="viewport" content="width=device-width; initial-scale=1.0">
</head>
<body>
<div id="pay-test-id" style="margin-top: 100px;
font-weight: bold;
text-align: center;
font-size: 20px;">
</div>
</body>
<script type="text/javascript" >
function payType() {
var userAgent = window.navigator.userAgent.toUpperCase();
if (userAgent.indexOf('MICROMESSENGER') > 0) {
return '微信支付';
}
if (userAgent.indexOf('ALIPAYCLIENT') > 0) {
return '支付宝支付';
}
return '不明支付方式';
}
var info = payType();
var div = document.getElementById("pay-test-id");
div.innerHTML = info;
</script>
</html>
二、后端实现方式
其实原理是一样的,也是判断 userAgent 是 MICROMESSENGER 或者 ALIPAYCLIENT。
Java实现代码如下:
@RestController
@RequestMapping("/order")
public class OrderController {
@RequestMapping("paytype")
public String getPayType(HttpServletRequest request) throws Exception {
String userAgent = request.getHeader("User-Agent").toUpperCase();
String payType = null;
if (userAgent.indexOf("MICROMESSENGER") > 0) {
payType = "微信支付";
} else if (userAgent.indexOf("ALIPAYCLIENT") > 0) {
payType = "支付宝支付";
}
//TODO 根据 payType 的支付方式生成相应支付订单
return null;
}
}