黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信封装的调用微信签名包的类库

来源:黔优媒体网   时间:2024-09-19

这篇文章主要介绍了微信封装的调用微信签名包的类库的相关资料,需要的朋友可以参考下

废话不多说了,直接给大家贴代码了,具体代码如下所示:

 ?php
namespace Home\Model;
use Think\Model;
class WechatModel extends Model {
private $_token = #39; #39;; //令牌
 private $appid;
 private $appsecret;
 public function __construct()
 $this- appid = C( #39;APPID #39;);//公众号的appid
 $this- appsecret = C( #39;APPSECRET #39;);//公众号的秘钥
 //调用js-sdk的签名包
 public function getSignPackage() {
 $jsapiTicket = $this- getJsApiTicket();
 // 注意 URL 一定要动态获取,不能 hardcode.(获取当前网页的url)
 $protocol = (!empty($_SERVER[ #39;HTTPS #39;]) $_SERVER[ #39;HTTPS #39;] !== #39;off #39; || $_SERVER[ #39;SERVER_PORT #39;] == 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; 
 //使用会员卡领取的签名包
 public function getHuiYuanSignPackage() {
 $apiTicket = $this- getApiTicket();
 // 注意 URL 一定要动态获取,不能 hardcode.(获取当前网页的url)
 $protocol = (!empty($_SERVER[ #39;HTTPS #39;]) $_SERVER[ #39;HTTPS #39;] !== #39;off #39; || $_SERVER[ #39;SERVER_PORT #39;] == 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[ #39;HTTP_HOST #39;] . $_SERVER[ #39;REQUEST_URI #39;]; 
 if (!isset($_GET[ #39;code #39;])) {
 //获取组装的url
 $openidUrl = $this- snsapi_base($url);
 redirect($openidUrl);
 }else{
 $openidAccess_token = $this- openidAccess_token($_GET[ #39;code #39;]);
 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;
}

以上就是微信封装的调用微信签名包的类库的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


上一篇: 没有了
下一篇:没有了
【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信封装的调用微信签名包的类库;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)