tp5框架,前端的微信支付

本文详细记录了微信静默登录获取openid和access_token的步骤,以及结合jQuery实现的点击支付功能,包括调用微信支付接口和处理支付结果的方法。通过分析URL参数和发起AJAX请求与后台交互,确保了支付过程的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	本文是最近写项目遇到的一些问题,纯属个人笔记,目的是为了使作者忘不了。
	静默登录获取code和openid等信息,至于用处看自己情况来
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> //引入jquery,个人爱好,比较喜欢用jq,自己看情况使用
<script type="text/javascript">
$(function () { //页面加载就会触发,会用jq
      const APPid = "要使用的appid";//自己看自己情况获取,可以走接口,让后台传递,也可以直接写上去。
      let local = window.location.href;//获取当前网址链接。
      var zt = jequcode('code');//截取字段,这里是下边呢个函数的用法。
      // alert(zt);
      if( zt == null || zt === ''){
        window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+APPid+"&redirect_uri=" + encodeURIComponent(local)+ "&response_type=code&scope=snsapi_base#wechat_redirect";//scope=snsapi_base静默登录,#wechat_redirect必加项,appid必传项,网址不可变,除非微信换网址。
      }else{
        $.ajax({
          data:{"code":zt},//将获取的code给后台
          url:'后台接口地址',//用来换取openid的接口地址
          type:"POST",
          dataType:"json",
          success:function (data) {
          	console.log(data);//打印返回的东西
            var a = JSON.parse(data)//json处理一下微信返回给后台,然后后台又返给自己的数据
            var b= a.openid;//获取openid
            var c = a.access_token;//获取access_token
            $.ajax({
              url:"后台接口地址",//后台获取openid等参数的地址
              data:{"openid":b,"access_token":c,"refresh_token":a.refresh_token},//根据需要给后台传递参数。
              dataType:'json',
              type:'POST',
              success:function (res) {
                console.log(res);//打印返回的东西,根据需要处理
              },error:function (res) {
                console.log(res);
              }
            })
          
          },
          error:function (data) {
            alert("失败");
            // console.log(data);
          }
        })
      }
      //截取get传参,某一字段的值
      function jequcode(name) {
        var reg = new RegExp('(^|$)'+name+'=([^&]*)(&|$)')
        var r = window.location.search.substr(1).match(reg)
        if (r != null) return unescape(r[2]);
        return null;
      }
 }
点击支付按钮支付
<script type="text/javascript">
$("#ljzf").click(function () {
        $("#ljzf").attr("disabled","disabled");//因为用的input的button,所以点击一次让他禁用,防止多次触发支付,自己看情况加。
        $.ajax({
            data: {"orderid":"我是订单号"},//订单号,必传项
            url:"后台获取订单号,返回appid、微信签名等",
            type:'POST',
            dataType:'json',
            success:function (res) {
                if (typeof WeixinJSBridge == "undefined"){
                    if( document.addEventListener ){
                        document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
                    }else if (document.attachEvent){
                        document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
                        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
                    }
                }else{
                    onBridgeReady(JSON.stringify(res));
                }
                // console.log(res);

            },
            error:function (res) {
                console.log(res);
            }
        })

    })
    //支付结果
    function zhifujieguo() {
        var datas = {"orderid":"我是订单号"};//订单号,必传项
        $.ajax({
            url:"后台获取支付结果的接口",
            data: datas ,
            type: "POST",
            dataType: "json",
            success:function (ress) {
                if(ress == "支付成功"){
                    alert(ress);
                    window.location.href="看情况写跳转网址";
                }else{
                    alert(ress);
                }

            },
            error:function (ress) {
                alert(ress)
            }
        })
    }
    //调支付
    function onBridgeReady(a){
        var data = JSON.parse(a)
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest',{
                "appId":String(data.appId),     //公众号名称,由商户传入
                "timeStamp":String(data.timeStamp),//时间戳,自1970年以来的秒数
                "nonceStr":String(data.nonceStr), //随机串
                "package":String(data.package),//订单详情扩展字符串 
                "signType":String(data.signType),//微信签名方式:
                "paySign":String(data.paySign),//微信签名
            },
            function (res) {
                zhifujieguo();//调取支付结果函数
            });

    }
 </script>
仅供参考,纯属个人笔记。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值