微信分享demo

PHP实现微信分享朋友圈
1、先加载微信自带的接口代码

  1. class JSSDK { 
  2.   private $appId; 
  3.   private $appSecret; 
  4.  
  5.   public function __construct($appId, $appSecret) { 
  6.     $this->appId = $appId; 
  7.     $this->appSecret = $appSecret; 
  8.   } 
  9.  
  10.   public function getSignPackage() { 
  11.     $jsapiTicket = $this->getJsApiTicket(); 
  12.  
  13.     // 注意 URL 一定要动态获取,不能 hardcode. 
  14.     $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; 
  15.     $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
  16.  
  17.     $timestamp = time(); 
  18.     $nonceStr = $this->createNonceStr(); 
  19.  
  20.     // 这里参数的顺序要按照 key 值 ASCII 码升序排序 
  21.     $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url"; 
  22.  
  23.     $signature = sha1($string); 
  24.  
  25.     $signPackage = array( 
  26.       "appId"     => $this->appId, 
  27.       "nonceStr"  => $nonceStr, 
  28.       "timestamp" => $timestamp, 
  29.       "url"       => $url, 
  30.       "signature" => $signature, 
  31.       "rawString" => $string 
  32.     ); 
  33.     return $signPackage;  
  34.   } 
  35.  
  36.   private function createNonceStr($length = 16) { 
  37.     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 
  38.     $str = ""; 
  39.     for ($i = 0; $i < $length; $i++) { 
  40.       $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); 
  41.     } 
  42.     return $str; 
  43.   } 
  44.  
  45.   private function getJsApiTicket() { 
  46.     // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 
  47.     $data = json_decode($this->get_php_file("jsapi_ticket.php")); 
  48.     if ($data->expire_time < time()) { 
  49.       $accessToken = $this->getAccessToken(); 
  50.       // 如果是企业号用以下 URL 获取 ticket 
  51.       // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; 
  52.       $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken"; 
  53.       $res = json_decode($this->httpGet($url)); 
  54.       $ticket = $res->ticket; 
  55.       if ($ticket) { 
  56.         $data->expire_time = time() + 7000; 
  57.         $data->jsapi_ticket = $ticket; 
  58.         $this->set_php_file("jsapi_ticket.php", json_encode($data)); 
  59.       } 
  60.     } else { 
  61.       $ticket = $data->jsapi_ticket; 
  62.     } 
  63.  
  64.     return $ticket; 
  65.   } 
  66.  
  67.   private function getAccessToken() { 
  68.     // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 
  69.     $data = json_decode($this->get_php_file("access_token.php")); 
  70.     if ($data->expire_time < time()) { 
  71.       // 如果是企业号用以下URL获取access_token 
  72.       // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; 
  73.       $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; 
  74.       $res = json_decode($this->httpGet($url)); 
  75.       $access_token = $res->access_token; 
  76.       if ($access_token) { 
  77.         $data->expire_time = time() + 7000; 
  78.         $data->access_token = $access_token; 
  79.         $this->set_php_file("access_token.php", json_encode($data)); 
  80.       } 
  81.     } else { 
  82.       $access_token = $data->access_token; 
  83.     } 
  84.     return $access_token; 
  85.   } 
  86.  
  87.   private function httpGet($url) { 
  88.     $curl = curl_init(); 
  89.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
  90.     curl_setopt($curl, CURLOPT_TIMEOUT, 500); 
  91.     // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。 
  92.     // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。 
  93.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); 
  94.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); 
  95.     curl_setopt($curl, CURLOPT_URL, $url); 
  96.  
  97.     $res = curl_exec($curl); 
  98.     curl_close($curl); 
  99.  
  100.     return $res; 
  101.   } 
  102.  
  103.   private function get_php_file($filename) { 
  104.     return trim(substr(file_get_contents($filename), 15)); 
  105.   } 
  106.   private function set_php_file($filename, $content) { 
  107.     $fp = fopen($filename, "w"); 
  108.     fwrite($fp, "" . $content); 
  109.     fclose($fp); 
  110.   } 
  111. }

复制代码

 

2、修改自己的配制信息用微信浏览器打开就可以了

  1. require_once "jssdk.php"; 
  2. $appid = 'wx110'; 
  3. $APPSECRET = '110'; 
  4. $jssdk = new JSSDK($appid, $APPSECRET); 
  5. $signPackage = $jssdk->GetSignPackage(); 
  6. ?> 
  7.  
  8.  
  9.  
  10.      
  11.          
  12.         js微信自定义分享标题、链接和图标 
  13.           
  14.          
  15.      
  16.      
  17.  
  18.      
  19.      
  20.      
  21.     请用微信浏览器打开,并打开右上方按钮。分享到朋友圈试试。

     

你可能感兴趣的:(微信分享demo)