php版微信自訂分享代碼

來源:互聯網
上載者:User


分享需要認證微信訂閱號或者服務號。

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;
}
 
&nbsp;
 
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("您取消了分享");
 }
});
 
&nbsp;
 
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(/&nbsp;/ig,'');//去掉&nbsp;
 return str;
 }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.