国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

微信封裝的調用微信簽名包的類庫

2024-05-04 23:57:54
字體:
來源:轉載
供稿:網(wǎng)友

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

<?phpnamespace Home/Model;use Think/Model;class WechatModel extends Model {private $_token = ''; //令牌    private $appid;    private $appsecret;  public function __construct()  {    $this->appid = C('APPID');//公眾號的appid    $this->appsecret = C('APPSECRET');//公眾號的秘鑰  }  //調用js-sdk的簽名包  public function getSignPackage() {  $jsapiTicket = $this->getJsApiTicket();  // 注意 URL 一定要動態(tài)獲取,不能 hardcode.(獲取當前網(wǎng)頁的url)  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";  //時間戳  $timestamp = time();  //隨機字符串獲取  $nonceStr = $this->createNonceStr();  // 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";  //生成字符串是用來簽名用的  $signature = sha1($string);  $signPackage = array(   "appId"   => $this->appid,   "nonceStr" => $nonceStr,   "timestamp" => $timestamp,   "url"    => $url,   "signature" => $signature,   "rawString" => $string  );  return $signPackage;  } //使用會員卡領取的簽名包 public function getHuiYuanSignPackage() {  $apiTicket = $this->getApiTicket();  // 注意 URL 一定要動態(tài)獲取,不能 hardcode.(獲取當前網(wǎng)頁的url)  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";  //時間戳  $timestamp = time();  //隨機字符串獲取  // $nonceStr = $this->createNonceStr();  // 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序  $string = $timestamp.$apiTicket."car_id";//card_id為自己創(chuàng)建的會員卡的id  //生成字符串是用來簽名用的  $signature = sha1($string);  $signPackage = array(   "timestamp" => $timestamp,   "signature" => $signature,  );  return $signPackage;  } //獲取會員卡的api_ticket public function getApiTicket(){ $data = json_decode(file_get_contents("api_ticket.json"));  if ($data->expire_time < time()) {   $accessToken = $this->getAccessToken();   $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=wx_card&access_token=$accessToken";   $res = json_decode($this->httpGet($url));   $ticket = $res->ticket;   if ($ticket) {    $data->expire_time = time() + 7000;    $data->jsapi_ticket = $ticket;    $fp = fopen("api_ticket.json", "w");    fwrite($fp, json_encode($data));    fclose($fp);   }  } else {   $ticket = $data->jsapi_ticket;  }  return $ticket; } //獲取隨機字符串 private function createNonceStr($length = 16) {  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  $str = "";  for ($i = 0; $i < $length; $i++) {   $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);  }  return $str; }  //獲取Access Token  public function getAccessToken(){  //將json字符串轉換為json對象(json_encode是將數(shù)組轉換為json字符串,json_decode("",true) 如果加true是將json字符串轉化為php數(shù)組,不加true轉換為PHP對象)  $data = json_decode(file_get_contents("access_token.json"));  if ($data->expire_time < time()) {   // 如果是企業(yè)號用以下URL獲取access_token   $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 = time() + 7000;    $data->access_token = $access_token;    $fp = fopen("access_token.json", "w");    fwrite($fp, json_encode($data));    fclose($fp); }  } else {   $access_token = $data->access_token;  }  return $access_token;  } //獲取jsapi_ticket(jsapi_ticket是公眾號用于調用微信JS接口的臨時票據(jù))  private function getJsApiTicket() {  // jsapi_ticket 應該全局存儲與更新,以下代碼以寫入到文件中做示例  $data = json_decode(file_get_contents("jsapi_ticket.json"));  if ($data->expire_time < time()) {   $accessToken = $this->getAccessToken();   // 如果是企業(yè)號用以下 URL 獲取 ticket   // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";   $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 = time() + 7000;    $data->jsapi_ticket = $ticket;    $fp = fopen("jsapi_ticket.json", "w");    fwrite($fp, json_encode($data));    fclose($fp);   }  } else {   $ticket = $data->jsapi_ticket;  }  return $ticket; }  //獲取用戶的openid  public function openId(){  $url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];     if (!isset($_GET['code'])) {     //獲取組裝的url      $openidUrl = $this->snsapi_base($url);      redirect($openidUrl);    }else{      $openidAccess_token = $this->openidAccess_token($_GET['code']);      return $openidAccess_token;    }  }   //獲取微信用戶的opnid  public function getOpenId($openid,$access_token)  {    $userInfo = $this->getUserInfo($openid,$access_token);    return $userInfo;  }   public function snsapi_base($redirect_uri, $scope = "snsapi_userinfo", $state = 0)  {    $appId = $this->appid;    $url = "https://open.weixin.qq.com/connect/oauth2/authorize";    $url .= "?appid=$appId";    $url .= "&redirect_uri=http://$redirect_uri";    $url .= "&response_type=code";    $url .= "&scope=$scope";    $url .= "&state=$state#wechat_redirect";    return $url;  }public function openidAccess_token($code){    $appId = $this->appid;    $appSecret= $this->appsecret;    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appId&secret=$appSecret&code=$code&grant_type=authorization_code";    return json_decode($this->httpGet($url),true);  }  //獲取用戶信息  public function getUserInfo($openid, $access_token){  $url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN ";    return json_decode($this->httpGet($url),true);   //請求  }private function httpGet($url) {  $curl = curl_init();  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  curl_setopt($curl, CURLOPT_TIMEOUT, 500);  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  curl_setopt($curl, CURLOPT_URL, $url);  $res = curl_exec($curl);  curl_close($curl);  return $res; }}

以上所述是小編給大家介紹的微信封裝的調用微信簽名包的類庫,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 尖扎县| 嘉祥县| 隆化县| 东乌| 靖边县| 黄梅县| 诸暨市| 英吉沙县| 舒城县| 海兴县| 建宁县| 桐梓县| 平谷区| 抚松县| 吴桥县| 邵武市| 财经| 当雄县| 新晃| 屯昌县| 内江市| 安庆市| 冀州市| 莱阳市| 察隅县| 肃南| 沁源县| 五莲县| 丹巴县| 游戏| 万全县| 彩票| 白水县| 子洲县| 东源县| 金阳县| 吉木乃县| 红原县| 祥云县| 溧阳市| 九龙县|