最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 基于thinkPHP实现的微信自定义分享功能示例_微信开发教程


    本文实例讲述了基于thinkPHP实现的微信自定义分享功能。分享给大家供大家参考,具体如下:

    在许多大的网站我们都会看到点击分享就可以把数据分享到微信或QQ或其它的平台了,下面我们来看一段php版微信自定义分享代码,代码参考官方开发的没有任何问题.

    分享需要认证微信订阅号或者服务号.

    php 代码(thinkphp):

    $appid='xxx';
    $appsecret='xxxx';
    $timestamp = time();
    $noncestr = $this->getRandStr(15);
    // dump();
    $url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='. $this->get_token($appid,$appsecret) .'&type=jsapi';
    $ret_json = $this->curl_get_contents($url);
    $ret = json_decode($ret_json);
    $ticket = $ret-> ticket;
    //var_dump($ret);
    $strvalue = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'&timestamp='.$timestamp.'&url=http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $signature = sha1($strvalue);
    $this->assign('timestamp',$timestamp);
    $this->assign('nonceStr',$noncestr);
    $this->assign('signature',$signature);
    function get_token($appid,$appsecret){
     if(S('access_token')) return S('access_token');
     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
     $ret_json = $this->curl_get_contents($url);
     $ret = json_decode($ret_json);
     if($ret -> access_token){
     S('access_token',$ret -> access_token,7200);
     return $ret -> access_token;
     }
    }
    function is_weixin(){
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
    return true;
    }
    return false;
    }
    function getRandStr($length){
     $str = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     $randString = '';
     $len = strlen($str)-1;
     for($i = 0;$i < $length;$i ++){
     $num = mt_rand(0, $len);
     $randString .= $str[$num];
     }
     return $randString;
    }
    function curl_get_contents($url){
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_TIMEOUT, 1);
     curl_setopt($ch, CURLOPT_MAXREDIRS, 200);
     curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
     curl_setopt($ch, CURLOPT_REFERER, _REFERER_);
     @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     $r = curl_exec($ch);
     curl_close($ch);
     return $r;
    }

    js代码:需要引入:http://res.wx.qq.com/open/js/jweixin-1.0.0.js

    wx.config({
     debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
     appId: 'wxae7c36a1349c5868', // 必填,公众号的唯一标识
     timestamp: '{$timestamp}', // 必填,生成签名的时间戳
     nonceStr: '{$nonceStr}', // 必填,生成签名的随机串
     signature: '{$signature}',// 必填,签名,见附录1
     jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });
    wx.ready(function(){
    wx.onMenuShareTimeline({
     title: '{$contentInfo.title}', // 分享标题
     link: window.location.href, // 分享链接
     imgUrl: 'http://'+window.location.host+'{$categoryInfo.image}', // 分享图标
     success: function () {
     // 用户确认分享后执行的回调函数
     //alert(1111);
     //fxfunc();
     },
     cancel: function () {
     // 用户取消分享后执行的回调函数
     //alert("您取消了分享");
     }
    });
    wx.onMenuShareAppMessage({
     title: '{$contentInfo.title}', // 分享标题
     desc: removeHTMLTag('{$contentInfo.content}'), // 分享描述
     link: window.location.href, // 分享链接
     imgUrl: 'http://'+window.location.host+'{$categoryInfo.image}', // 分享图标
     type: '', // 分享类型,music、video或link,不填默认为link
     dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
     success: function () {
     // 用户确认分享后执行的回调函数
     //fxfunc();
     },
     cancel: function () {
     //alert("您取消了分享");
     // 用户取消分享后执行的回调函数
     }
    });
     // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    });
    function removeHTMLTag(str) {
     str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
     str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
     //str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
     str=str.replace(/ /ig,'');//去掉 
     return str;
    }

    更多基于thinkPHP实现的微信自定义分享功能示例相关文章请关注liyege!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1017会员总数(位)
    • 111838资源总数(个)
    • 6本周发布(个)
    • 0 今日发布(个)
    • 211稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐