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

2018-10-15 17:59

阅读:504

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

<?php namespace 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 一定要动态获取,不能 hardcode.(获取当前网页的url) $protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off $_SERVER[SERVER_PORT] == 443) ? 时间戳 $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[HTTPS]) && $_SERVER[HTTPS] !== off $_SERVER[SERVER_PORT] == 443) ? 时间戳 $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 = 获取随机字符串 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 = 获取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 = 获取用户的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 = 获取用户信息 public function getUserInfo($openid, $access_token){ $url = 请求 } 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; } }

以上所述是小编给大家介绍的微信封装的调用微信签名包的类库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!


评论


亲,登录后才可以留言!