微信支付与支付宝支付二维码合一的原理是:用户扫描二维码,打开我们自己做的页面,在这个页面里面判断用户打开该页面的客户端是微信还是支付宝,如果是微信,则调用微信支付,如果是支付宝,则调用支付宝支付。
具体怎么判断他是用微信还是支付宝打开的呢?我们可以通过User-Agent来判断。
查看User-Agent方法:/article/27fa73268ff4e146f8271f33.html
下面是我做的二维码合一例子
上面是我的页面,具体代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><script type="text/javascript" src="${pageContext.request.contextPath}/easyui/jquery.min.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/easyui/jquery.easyui.min.js"></script><script type="text/javascript"> function confirm(){var data="<%=request.getHeader("User-Agent")%>";var number = document.getElementById('number').value;if(number.length==0){alert("请输入金额")}else{//微信的User-Agent里面包含MicroMessengerif(data.indexOf("MicroMessenger") > 0){//是用微信扫描$.ajax({ url:"",//这里面是相应的微信支付方法type:"POST",data:{number:number },success:function(res){} })//支付宝的User-Agent包含AlipayClient}else if(data.indexOf("AlipayClient") > 0){//是用支付宝支付$.ajax({ url:"",//这里面是相应的支付宝支付支付方法type:"POST",data:{number:number },success:function(res){var data = eval( "(" + res + ")" );console.log(data.form.alipay_trade_precreate_response.qr_code)window.location.href=data.form.alipay_trade_precreate_response.qr_code} }) }else{alert('请用微信或支付宝')}}};</script><style></style> <title>三码合一</title> </head><body><p>龙润电子</p><input type="number" id="number" name="money" class="easyui-numberbox" data-options="min:0,precision:2" style="width:50%; height:30px; float: left;margin-bottom:20px"></input> </br><input type="button" value="确认支付" class="submit" onClick="confirm()" style="border-radius:10px;width:100px;height:40px;overflow: visible; border-color:#F00; background-color:#FFF; float: left; margin-right:5%;margin-top:5px"> </body></html>