微信公众号支付第一步要去微信获取授权,使用url跳转的方式,地址为https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号id&redirect_uri=回调地址?txn_no=平台流水号&response_type=code&scope=snsapi_base&state=123#wechat_redirect,参数说明:
1.appid即为公众号id;
2.redirect_uri是微信回调地址,授权完成后,微信回回访指定的地址,注意!该地址必须是合法的域名,否则会无效;
3.txn_no是服务平台的流水号,由于本平台在授权时会利用ajax后台入库一条订单存入订单信息等,所有txn_no视为平台的唯一流水号,在授权时带上这个参数,微信在回调redirect_uri的时候,会将txn_no带上,这样我就能知道是哪条流水号,如果需要更多参数,也可以多带。
4.response_type=code&scope=snsapi_base&state=123#wechat_redirect:固定写法不做说明
跳转网页代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"
id="viewport" name="viewport">
<meta name="x5-fullscreen" content="true">
<meta name="full-screen" content="yes">
<title>正在跳转</title>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
</head>
<body>
</body>
<script>
String.prototype.getQueryString = function(name) {
var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r;
if (r = this.match(reg))
return r[2];
return null;
};
var appid;
var txn_no;
var addtxnurl = "http://testwx.fcbook.com/cashier/pay/UnifiedOrderAddTxn";//新增流水的后台接口
var redirect_uri = "http://testwx.fcbook.com/cashier/dynamicQrcode.html";//微信回调地址
var ua = window.navigator.userAgent.toLowerCase();
var plain = location.search.getQueryString("plain");
if(plain==null){
alert("plain参数不能为null!");
window.location.href="error.html";
}
var plains = decodeURI(plain);
var sign = location.search.getQueryString("sign");
$(function(){
addtxn();//异步登记流水
});
//异步入库,记录订单信息,商户在请求的时候会带上订单号,商品信息等参数,所以先去后台下单,成功后跳转
function addtxn(){
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
var pmc_code = "WXPAY";
$.ajax({
type: "POST",
dataType: "text",
data : "{\"version\":\"1.0\",\"plain\":\""+plains+"\",\"sign\":\""+sign+"\",\"pmc_code\":\""+pmc_code+"\"}",
url : addtxnurl,
async:false,
success : function(data) {//返回txn_no
dataObj = JSON.parse(data);
var returncode = dataObj.return_code;
var returnMsg = dataObj.return_message;
if("0000"!=returncode){//判断返回
alert(returnMsg);
window.location.href="error.html";
}else{
appid = dataObj.appid;
txn_no = dataObj.txn_no;
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+redirect_uri+"?txn_no="+ txn_no +"&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
}
},
error : function(e) {
window.location.href="error.html";
}
});
}else{
alert("请用微信浏览器打开");
return;
}
}
</script>
</html>