微信jssdk分享及验签

来源:互联网 发布:mysql查询语句 编辑:程序博客网 时间:2024/06/04 18:39

                                                                                                                     微信jssdk分享及验签


第一步:绑定微信安全域名(详情见微信文档)

第二步:验签(服务器验签传递数据验签数据给前台页面)

后台控制器(yii2的框架):

 public function actionShow(){


        $session=YII::$app->session;
        $obj=new WxController('Wx','','');        
        $sess_token="";$session->get("access_token");
        $sess_ticket=$session->get("ticket");
        //echo $sess_ticket;
        if($sess_token){
            $access_tokens=$sess_token;
        }else{
            $access_token=$obj->actionToken();
            $session->set('access_token',$access_token);
            $access_tokens=$session->get("access_token"); 
        }
        if($sess_ticket){
           $ticket=$sess_ticket;
        }else{
            $jsapiticket=$this->actionJstoken($access_tokens);
            $session->set('ticket',$jsapiticket);
            $ticket=$session->get("ticket");
        }
           
        $timestamp=time();
        $nonceStr="Dsfegd234asdfffgssd";        
        $signature=$this->actionSign($nonceStr,$ticket,$timestamp);
        
        $value['timestamp']=$timestamp;
        $value['noncestr']=$nonceStr;
        $value['signature']=$signature;          
        return $this->renderPartial('show',array('value'  => $value));
    }


服务器验签:

 public function actionSign($nonceStr,$ticket,$timestamp){
        $arr['url']="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $arr['timestamp']=$timestamp;
        $arr['noncestr']=$nonceStr;
        $arr['jsapi_ticket']=$ticket;
        ksort($arr);       
        $op_str="";
        foreach($arr as $k=>$val){
           $op_str.="$k=$val"."&";
           
        }       
        $str=substr($op_str,0,-1);              
        return sha1($str);
    }


第三步:前台jssdk调用

wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。        
        appId:"wx0ee271dc566db53c", // 必填,公众号的唯一标识
        timestamp:<?php echo $value['timestamp'];?> , // 必填,生成签名的时间戳
        nonceStr: "<?php echo $value['noncestr'];?>", // 必填,生成签名的随机串
        signature: "<?php echo $value['signature'];?>",// 必填,签名,见附录1
        jsApiList: [
        'onMenuShareTimeline',
        'onMenuShareAppMessage',
        'startRecord',
        ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 onMenuShareTimeline,onMenuShareAppMessage
    });




wx.ready(function(){
        //分享到好友
        wx.onMenuShareAppMessage({
            title: '海豹app,你值得拥有!', // 分享标题
            desc: '海豹app,是一个视频直播个性社区!', // 分享描述
            link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
            imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
            type: '', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () { 
                alert("分享成功!");
            },
            cancel: function () { 
               alert("取消分享!");
            }
        });
        //分享到朋友圈
        wx.onMenuShareTimeline({
            title: '海豹app,你值得拥有!', // 分享标题
            link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
            imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
            success: function () { 
                // 用户确认分享后执行的回调函数
            },
            cancel: function () { 
                // 用户取消分享后执行的回调函数
            }
        });


        document.querySelector('#haibao').onclick = function () {
           wx.startRecord();
        }
});


0 0
原创粉丝点击