H5 一码付(微信和支付宝)

这段时间公司要做一个一码付,在网上查了一些资料以及官方文档才把这个做出来,如果有问题欢迎在下面留言。
一、微信
在微信付款之前咱们要做一个操作就是微信授权。只有在微信授权之后我们才能清楚的知道我们付款方是谁!(因为谁也不想稀里糊涂的就给对方付款吧)
1.1  微信授权
我们在做微信授权的时候要先在微信后台配置好所需要的参数,其实也就是在功能设置里把网页授权地址写上,不然会出现
这种错误,看到这种错误的时候不要慌,先去看看网页授权域名和你输入的地址的域名是不是一个?如果不是就快改过来
根据这个地址你可以拿到code值:
https://open.weixin.qq.com.connect/oauth2/authorize?appid=你的APPID&redirect_uri=你在后台配置的回调地址&response_type=code&scope=snsapi_userinfo&state=1342#wechat_redirect
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。(注:如果code在5分钟之内未被使用,则会过期,每个人每次登录时这个code都会变化)
如果scope=snsapi_userinfo的话,则会出现下面的界面,必须让用户手动确认才能授权:
 
如果scope=snsapi_base的话,则不会出现上面的页面,会在用户未发觉的情况下默认授权。
把获取到的code值传给后台人员,后台的同事会去请求微信方,然后把你需要的参数传给你。
我一并把微信开发者文档的参考地址拿出来,如果有不清楚的欢迎下方留言。
 
1.2  微信支付
在微信授权的时候已经说过把code传给后台的同事之后,后台的同事会帮你拿到你想要的参数,那么你现在可以直接调用微信的支付接口:
这里面除了支付签名以外,其余的可以在本地获取,分别是你的APPId、时间戳、随机字符串、以及需要的JS列表接口。
下面开始调用这个支付接口:
 
二、支付宝支付
2.1  支付宝授权
function zhifuLoad(){
window.location.href='https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=你的appid&redirect_uri=回调地址&scope=auth_base';
}
然后根据这个接口把获取的appCode传给后台,让后台的同事帮你查询用户并存到数据库中。
如果scope=auth_userinfo的话,则会出现下面的界面,必须让用户手动确认才能授权:
如果是scope=auth_base则是静默授权,不会出现用户点击就可以授权;
如果是静默授权只能拿到用户的openId,以及一些姓名一类的;如果需要的参数多,则可以用scope=auth_userinfo这种授权,拿到的参数会更为齐全点;
2.2  下单接口
把拿到的订单号传给支付宝,然后就可以很轻松的调起支付宝的键盘进行支付了:
2.3  成功调起的快捷支付界面:
如果订单号是正确的,则会弹出以下界面:
否则的话就要检查一下传给支付包的订单号有没有传对;
三、辨别微信扫描还是支付宝扫描
想要判断是微信支付还是支付宝支付,我们首先要了解微信和支付包的UserAgent是什么?
UserAgent:它的中文名是用户代理,是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本等;
那么我们现在就可以很轻松的判断出扫描的是微信还是支付宝了;
如果有MicroMessenger为微信,如果有ApliPayClient是支付宝
代码如下:
function Judge(){
var agent=window.navigator.userAgent.toLowerCase();
//判断是否为微信
if( agent.match(/MicroMessenger/i) == 'micromessenger' ){
alert("微信");
return;
}
if( agent.match(/AlipayClient/i) == 'alipayclient' ){
alert("支付宝");
return;
}
}
 
function Judge(){
var ua = window.navigator.userAgent.toLowerCase(); 
//判断是否为微信
if ( ua.match(/MicroMessenger/i) == 'micromessenger' ) 
{ return "WeiXIN"; 
//判断是否为支付宝
if (ua.match(/AlipayClient/i) == 'alipayclient') { 
return "Alipay"; 
}
四、生成二维码
4.1 如果要生成二维码,就需要你引入一个第三方库,以下链接可直接引入:
4.2  按照以下格式先把你要的样式,大小写好:
 
4.3再把你要的链接放进去,生成二维码:
这样就可以生成你想要的二维码了,最后生成出来的二维码:
posted @ 2018-01-29 15:35  Cythina_kk  阅读(5591)  评论(0编辑  收藏  举报