设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php版微信自定义共享代码

发布时间:2022-02-23 15:15 所属栏目:121 来源:互联网
导读:在许多大的网站我们都会看到点击分享就可以把数据分享到微信或QQ或其它的平台了,下面我们来看一段php版微信自定义分享代码,代码参考官方开发的没有任何问题. 分享需要认证微信订阅号或者服务号. php 代码(thinkphp): $appid=xxx; $appsecret=xxxx; $timest
  在许多大的网站我们都会看到点击分享就可以把数据分享到微信或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.'×tamp='.$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("您取消了分享");
   }
  });
  
    // 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;
   }
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读