微信公众号支付(一)授权


  微信公众号支付第一步要去微信获取授权,使用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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值