fgdfg 发表于 2017-12-29 17:10:54

php实现微信分享朋友圈

  class
JSSDK {private $appId;private $appSecret;  

public function __construct($appId, $appSecret) {$this->appId = $appId;$this->appSecret = $appSecret;  }
  

public function getSignPackage() {$jsapiTicket = $this->getJsApiTicket();$url = "http://$_SERVER$_SERVER";$timestamp = ();$nonceStr = $this->createNonceStr();  

// 这里参数的顺序要按照 key 值 ASCII 码升序排序  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
  

  $signature = ($string);
  

  $signPackage = array(
  "appId"   => $this->appId,
  "nonceStr"=> $nonceStr,
  "timestamp" => $timestamp,
  "url"       => $url,
  "signature" => $signature,
  "rawString" => $string
  );
  return $signPackage;
  }
  

  private function createNonceStr($length = 16) {
  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $str = "";
  for ($i = 0; $i < $length; $i++) {
  $str .= ($chars, (0, ($chars) - 1), 1);
  }
  return $str;
  }
  

  private function getJsApiTicket() {
  // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
  $data = json_decode(("jsapi_ticket.json"));
  if ($data->expire_time < ()) {
  $accessToken = $this->getAccessToken();
  $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
  $res = json_decode($this->httpGet($url));
  $ticket = $res->ticket;
  if ($ticket) {
  $data->expire_time = () + 7000;
  $data->jsapi_ticket = $ticket;
  $fp = ("jsapi_ticket.json", "w");
  ($fp, json_encode($data));
  ($fp);
  }
  } else {
  $ticket = $data->jsapi_ticket;
  }
  return $ticket;
  }
  

  private function getAccessToken() {
  // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
  $data = json_decode(("access_token.json"));
  if ($data->expire_time < ()) {
  $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appId}&secret={$this->appSecret}";
  $res = json_decode($this->httpGet($url));
  $access_token = $res->access_token;
  if ($access_token) {
  $data->expire_time = () + 7000;
  $data->access_token = $access_token;
  $fp = ("access_token.json", "w");
  ($fp, json_encode($data));
  ($fp);
  }
  } else {
  $access_token = $data->access_token;
  }
  return $access_token;
  }
  

  private function httpGet($url) {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  curl_setopt($curl, CURLOPT_URL, $url);
  

  $res = curl_exec($curl);
  curl_close($curl);
  

  return $res;
  }
  
}
页: [1]
查看完整版本: php实现微信分享朋友圈