微信分享

Posted yanyanyanyanliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信分享相关的知识,希望对你有一定的参考价值。

 最近项目用tp3写的  整理了下一下微信分享,直接上代码。

var  url = ":U(‘Index/share‘)",articleTitle = "$Activity.rules",articlePic= "$Activity.pay_img",articleBrief=" $Activity.title";
//调用方法
share(url,articleTitle,articlePic,articleBrief);

/**
* 分享
*/
  function share(url,articleTitle,articlePic,articleBrief) 
         var url1 =location.href.split(‘#‘)[0];
           $.ajax(
                   url: url,
                   async: false,
                   data:  "url": url1 ,
                   dataType: ‘text‘,
                    success: function(data) 
                        var data1 = eval("(" + data + ")");
                        var timestamp = data1.timestamp;
                        var nonceStr = data1.noncestr;
                        var signature = data1.signature;
                        wx.config(
                             debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                             appId: "wx9903dba5a4b35192", // 必填,公众号的唯一标识
                             timestamp: timestamp, // 必填,生成签名的时间戳
                             nonceStr: nonceStr, // 必填,生成签名的随机串
                             signature: signature,// 必填,签名
                             jsApiList: [‘onMenuShareAppMessage‘,‘onMenuShareTimeline‘] // 必填,需要使用的JS接口列表
                            );
                        wx.ready(function()
                             wx.onMenuShareAppMessage(
                              title: articleTitle, // 分享标题
                              desc: articleBrief, // 分享描述
                              link: data1.url, // 分享链接
                              imgUrl: articlePic, // 分享图标
                              type: ‘‘, // 分享类型,music、video或link,不填默认为link
                              dataUrl: ‘‘, // 如果type是music或video,则要提供数据链接,默认为空
                              success: function ()  
                               $(‘body‘).append(‘<div class="error-msg">分享成功!</div>‘);
                               setTimeout(function () 
                                  $(‘body‘).find(‘.error-msg‘).remove();
                                , 1500);
                              ,
                              cancel: function ()  
                                 $(‘body‘).append(‘<div class="error-msg">分享失败!</div>‘);
                                   setTimeout(function () 
                                      $(‘body‘).find(‘.error-msg‘).remove();
                                    , 1500);
                              
                             );
                             wx.onMenuShareTimeline(
                              title: articleTitle, // 分享标题
                              link: data1.url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                              imgUrl: articlePic, // 分享图标
                              success: function () 
                               // 用户确认分享后执行的回调函数
                               $(‘body‘).append(‘<div class="error-msg">分享成功!</div>‘);
                               setTimeout(function () 
                                  $(‘body‘).find(‘.error-msg‘).remove();
                                , 1500);
                              ,
                              cancel: function () 
                               // 用户取消分享后执行的回调函数
                               $(‘body‘).append(‘<div class="error-msg">分享失败!</div>‘);
                                   setTimeout(function () 
                                      $(‘body‘).find(‘.error-msg‘).remove();
                                    , 1500);
                              
                             );
                            );
                   

             );
    
/**
 * 分享
 */
    public function share()
       
        $time = time();
        $str = ‘QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz‘;
        for ($i=0;$i<32;$i++)
            $result .= $str[rand(0,48)];
           
        
        $wxconfig[‘appid‘] = $this->appid;
        $wxconfig[‘noncestr‘] = $result;
        $wxconfig[‘timestamp‘] = "$time";
        $jsapi_ticket =   S(‘jsapi_ticket‘.session(‘shopid‘));
        if(empty($jsapi_ticket))
             $res = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret);// 获得token
                $ress = json_decode($res,True);

                $token = $ress[‘access_token‘];// 取出 至于存储代码就不列举了 
                $js = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi");
                $jss = json_decode($js,True);
                 S(‘jsapi_ticket‘.session(‘shopid‘),$jss[‘ticket‘],7000);
                $jsapi_ticket = $jss[‘ticket‘];// 取出JS凭证, 至于存储代码就不列举了
        
        
        $dataa[‘noncestr‘] = $wxconfig[‘noncestr‘];
        $dataa[‘jsapi_ticket‘] = $jsapi_ticket;
        $dataa[‘timestamp‘] = $wxconfig[‘timestamp‘];
        $dataa[‘url‘] = I(‘get.url‘);
        ksort($dataa);
        $signature = ‘‘;
        foreach($dataa as $k => $v)
            $signature .= $k.‘=‘.$v.‘&‘;
        
        $signature = substr($signature, 0, strlen($signature)-1); 
        $wxconfig[‘signature‘] = sha1($signature);
        $wxconfig[‘url‘] = $dataa[‘url‘];

        echo json_encode($wxconfig);die;
        
    
//我这边有点问题,需要过滤下链接,我用php来简单处理了下
$str = $_SERVER[‘HTTP_HOST‘].$_SERVER[‘REQUEST_URI‘];
        $tourl =  substr($str,0,strrpos($str,"?"));

 

以上是关于微信分享的主要内容,如果未能解决你的问题,请参考以下文章

js处理微信分享配置

H5 中能实现分享到微信的功能吗

微信开发 分享按钮怎么做

apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享

新版微信分享--图片和描述

微信小程序 - 分享功能