jssdk.php

/*** Created by PhpStorm.* Date: 17/8/19* Time: 下午2:24*/
class JSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this->appId = $appId;$this->appSecret = $appSecret;}public function getSignPackage() {$jsapiTicket = $this->getJsApiTicket();// 注意 URL 一定要動態獲取,不能 hardcode.$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();// 這里參數的順序要按照 key 值 ASCII 碼升序排序$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";$signature = sha1($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 .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}private function getJsApiTicket() {// jsapi_ticket 應該全局存儲與更新,以下代碼以寫入到文件中做示例$data = json_decode(file_get_contents("./jsapi_ticket.json"));if (!empty($data->expire_time)&&$data->expire_time < time()) {$accessToken = $this->getAccessToken();// 如果是企業號用以下 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;}private function getAccessToken() {// access_token 應該全局存儲與更新,以下代碼以寫入到文件中做示例$data = json_decode(file_get_contents("./access_token.json"));if ($data->expire_time < time()) {// 如果是企業號用以下URL獲取access_token//$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";$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;}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;}
}

  

轉載于:https://www.cnblogs.com/NicholasFugui/p/7467048.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282517.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GNU/Linux與開源文化的那些人和事

一、計算機的發明 世上本無路&#xff0c;走的人多了&#xff0c;就有了路。世上本無計算機&#xff0c;琢磨的人多了……沒有計算機&#xff0c;一切無從談起。 三個人對計算機的發明功不可沒&#xff0c;居功至偉。阿蘭圖靈&#xff08;Alan Mathison Turing&#xff09;、阿…

PHP使用PHPMailer發送郵件

1. 首先下載phpmailer插件,并將插件復制到目錄下 下載地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python學習記錄2

一、兩個模塊&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印環境變量6 print(sys.argv[0])#當前文件相對路徑,sys.argv是一個列表&#xff0c;第一個元素為程序本身的相對路徑&#xf…

cordova-config.xml配置應用圖標

1. <icon src"res/icon/ios/browser.png"/> 2.規格&#xff1a; iphone平臺一般要求3種規格的圖片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有圖標的圓角效果由系統生成&#xff0c;給到的圖標本身不…

將 Figma 設計轉換為 .NET MAUI Graphics 代碼

原文鏈接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻譯&#xff1a;沙漠盡頭的狼(谷歌翻譯加持)&#xff0c;翻譯別扭&#xff0c;建議直接閱讀原文使用FigmaSharp.Maui.Graphics將Figma設計轉換為 .NET MAUI Graphi…

Android之上下文context

Context&#xff0c;中文直譯為“上下文”&#xff0c;SDK中對其說明如下&#xff1a; 1、它描述的是一個應用程序環境的信息&#xff0c;即上下文。 2、該類是一個抽象(abstract class)類&#xff0c;Android提供了該抽象類的具體實現類。 3、通過它我們可以獲取應用程序的資…

論壇中,無限分類的原理

1.創建數據表 CREATE TABLE category( cat_id SMALLINT unsigned not null auto_increment comment 類別id, cat_name VARCHAR(30) not null default comment 類別名稱, par_id SMALLINT unsigned not null default 0 comment 類別父id, PRIMARY KEY (cat_id) )enginemyisam …

mooc- 基本程序設計方法week1,week2

學習了第一單元我們幾本可以寫出10行左右的代碼。 week1:python編程之基本方法 1、從計算機到程序設計語言&#xff1a; 理解計算機&#xff1a;計算機是能夠根據一組指令操作數據的機器。 功能性&#xff1a;可以進行數據計算 可編程性&#xff1a;根據一系列指令來執行 計算機…

Windows 11 的 2022 更新為每個人帶來了新的東西

Windows 網站發布博客&#xff0c;宣布今天在 190 多個國家/地區推出 Windows 11 2022 更新。微軟在過去一年中對 Windows 11 進行了非常大的改進&#xff0c;感覺每個月都有一次更新。對于之前的 Windows 11&#xff0c;相信很多人在使用過程中也遇到過或大或小的問題。而一部…

goaccess_nginx日志分析工具

在控制臺分析nginx日志goaccess -f b.log生成html文件分析nginx日志vi ~/.goacce***ctime-format %Tdate-format %d/%b/%Ylog-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"各參數詳解&#xff1a; man goaccess或Nginx Variable …

HTML5 Canvas 繪制六葉草

注意&#xff1a; context.arc(橫坐標,縱坐標,弧半徑,起始角度,終止角度,逆順時針);這個函數挺難用&#xff0c;主要原因是最后參數和角度的關系。不管文檔怎么說&#xff0c;按我的實際經驗&#xff0c;逆順時針false時&#xff0c;是逆時針旋轉&#xff1b;逆順時針true時&am…

tp框架中執行事務

function tran() {//定義事務成功失敗的標志$mark true;//1. 實例化模型$model D(student);//2. 開啟事務處理$model->startTrans();//3. ls減少2000$sql "update student set moneymoney-2000 where unamels";$result $model->execute($sql);//判斷sql執行…

哪些聽起來像段子一樣的故事?

杭州海底世界&#xff0c;一個小走廊兩邊都是各種爬行動物展覽。有兩只蜥蜴當時是這個樣子人還年輕&#xff0c;還比較猥瑣&#xff0c;看到一個趴在另一個身上就覺得在做什么羞羞的事。于是就拍下來&#xff0c;發到群里&#xff0c;然后說了句交配中。然后一天就光拍照&#…

Event 事件 - 基礎

事件驅動三要素 事件源&#xff1a;即觸發事件的元素 事件&#xff1a;被JavaScript檢測到的行為。例如&#xff1a; 鼠標點擊 鍵盤按鍵 選輸入框 事件處理函數&#xff1a;事件發生時要進行的操作&#xff0c;又叫做“事件句柄”或“事件監聽器” 事件分類&#xff1a; 鼠標事…

String 與 StringBuilder 區別與用法

String用final修飾&#xff0c;實際上是不可更改的。我們平常用的“”來連接&#xff0c;實際執行過程中是將原字符串連接之后生成新的對象重新賦值給這個名字的字符串。Testpublic void myStrTest(){String s "str_s";System.out.println(s);String ss s.toUpperC…

防跳墻訪問

出現場景: 1. 沒有登錄&#xff0c;也能訪問網頁 2. 沒有相關權限&#xff0c;也能訪問對應的控制器和方法 解決方案: 定義一個CommonController,其他控制器繼承CommonController,在CommonController中定義初始化方法_initialize 注:這里用的是tp3.2框架,如果我們直接在Commo…

windows編譯libevent時報告“缺少print_winsock_errors.obj”的解決

一、綜述 Libevent 是一個用C語言編寫的、輕量級的開源高性能事件通知庫。 在libevent官網(http://libevent.org)下載源碼包&#xff0c;在Windows平臺編譯時&#xff0c;會報缺少“print_winsock_errors.obj”的錯誤。 二、原因及解決 經檢查&#xff0c;這是因為源碼包中缺少…

7.python之正則表達式re模塊

一.正則表達式中常用元字符的復習。通配符系列.(點)匹配任意一個除換行符以外的字符。*(星號)用來匹配*星號前面的字符或者一組字符0到無窮次。可以寫為0(加號)匹配加號前面的一個字符或者一組字符1到無窮次。可以寫為1?(問號)匹配問號前面的一個字符或者一組字符0到1次。可以…

C# WPF開源控件庫HandyControl用法舉例

概述HandyControl是一款免費開源的WPF控件庫&#xff0c;Github可以獲取到源代碼&#xff0c;相關的示例代碼也在github上能獲取到&#xff0c;但是沒有詳細的中文說明文檔&#xff0c;對于新手而言使用起來還是會有一些困擾&#xff0c;網上也很難搜到相關的用法示例&#xff…

nginx服務器,訪問時顯示目錄,不直接顯示index.php

一、效果 二、解決方案 修改網站配置文件&#xff0c;添加如下代碼&#xff1a; autoindex on; autoindex_exact_size off; autoindex_localtime on; 修改后的網站配置文件如下&#xff1a; server {listen 80;server_name test.haveyb.com;charset utf-8;error_log …