当前位置:首页 > PHP教程 > php高级应用 > 列表

php版微信自定义分享代码

发布:smiling 来源: PHP粉丝网  添加日期:2016-01-20 16:02:16 浏览: 评论:0 

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

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

php 代码(thinkphp):

  1. $appid='xxx'
  2.  $appsecret='xxxx'
  3.  
  4.  $timestamp = time(); 
  5.  $noncestr = $this->getRandStr(15); 
  6.  
  7.  // dump(); 
  8.  
  9.  $url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='$this->get_token($appid,$appsecret) .'&type=jsapi'
  10.  $ret_json = $this->curl_get_contents($url); 
  11.  $ret = json_decode($ret_json); 
  12.  $ticket = $ret-> ticket; 
  13.  //var_dump($ret); 
  14.  $strvalue = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'&timestamp='.$timestamp.'&url=http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
  15.  $signature = sha1($strvalue); 
  16.  
  17.  $this->assign('timestamp',$timestamp); 
  18.  $this->assign('nonceStr',$noncestr); 
  19.  $this->assign('signature',$signature); 
  20.  
  21.  
  22. function get_token($appid,$appsecret){ 
  23.  if(S('access_token')) return S('access_token'); 
  24.  $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"
  25.  $ret_json = $this->curl_get_contents($url); 
  26.  $ret = json_decode($ret_json); 
  27.  if($ret -> access_token){ 
  28.  S('access_token',$ret -> access_token,7200); 
  29.  return $ret -> access_token; 
  30.  } 
  31.  
  32.  
  33. function is_weixin(){ 
  34. if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { 
  35. return true; 
  36. return false; 
  37.  
  38. function getRandStr($length){ 
  39.  $str = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  40.  $randString = ''
  41.  $len = strlen($str)-1; 
  42.  for($i = 0;$i < $length;$i ++){ 
  43.  $num = mt_rand(0, $len); 
  44.  $randString .= $str[$num]; 
  45.  } 
  46.  return $randString
  47.  
  48. &nbsp; 
  49.  
  50. function curl_get_contents($url){ 
  51.  $ch = curl_init(); 
  52.  curl_setopt($ch, CURLOPT_URL, $url); 
  53.  curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
  54.  curl_setopt($ch, CURLOPT_MAXREDIRS, 200); 
  55.  curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); 
  56.  curl_setopt($ch, CURLOPT_REFERER, _REFERER_); 
  57.  @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  58.  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  59.  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  60.  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  61.  $r = curl_exec($ch); 
  62.  curl_close($ch); 
  63.  return $r

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

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

Tags: php自定义代码 php微信代码

分享到: