微信开发中封装调用微信签名包的类库的示例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"微信开发中封装调用微信签名包的类库的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"微信开发中封装调用微信签名包的类库的示
千家信息网最后更新 2026年11月02日微信开发中封装调用微信签名包的类库的示例分析
这篇文章主要为大家展示了"微信开发中封装调用微信签名包的类库的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"微信开发中封装调用微信签名包的类库的示例分析"这篇文章吧。
appid = C('APPID');//公众号的appid $this->appsecret = C('APPSECRET');//公众号的秘钥 } //调用js-sdk的签名包 public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 URL 一定要动态获取,不能 hardcode.(获取当前网页的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(); // 这里参数的顺序要按照 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 一定要动态获取,不能 hardcode.(获取当前网页的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(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = $timestamp.$apiTicket."car_id";//card_id为自己创建的会员卡的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是将数组转换为json字符串,json_decode("",true) 如果加true是将json字符串转化为php数组,不加true转换为PHP对象) $data = json_decode(file_get_contents("access_token.json")); if ($data->expire_time < time()) { // 如果是企业号用以下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接口的临时票据) private function getJsApiTicket() { // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents("jsapi_ticket.json")); if ($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; } //获取用户的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/oauth3/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/oauth3/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; }}以上是"微信开发中封装调用微信签名包的类库的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
字符
字符串
示例
分析
封装
开发
会员
会员卡
公众
内容
用户
篇文章
动态
升序
参数
时间
网页
顺序
学习
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网科技公司起名
厦门中拓互联网络科技有限公司
互联网科技与金融科技
睿民互联网科技
米客互联网科技
深圳艾佳互联网科技
四川狮子座互联网科技
北京大学互联网科技怎么样
字节跳动和互联网科技
互联网企业和科技型企业
互联网科技公司有风险吗
互联网在线教育科技创业
晋城互联网科技
长沙互联网科技
国大互联网教育科技有限公司薪资
南通创西澳互联网科技有限公司
半导体是互联网高科技吗
版纳互联网科技选哪家
长沙渺峰互联网科技有限公司
网络科技有限互联网
无线互联网科技
互联网 科技馆
互联网和高科技公司
贵州叶脉互联网科技有限公司所属行业
畅思互联网科技
互联网科技公司营业执照怎么办理
互联网第三次科技革命特征
长沙渺峰互联网科技有限公司
颐高云石互联网科技