当前位置:澳门新葡亰登入 > 澳门新葡亰网站所有平台 > 代码如下复制代码

代码如下复制代码

文章作者:澳门新葡亰网站所有平台 上传时间:2020-04-21

本篇文章主要为大家介绍了微信封装的调用微信签名包的类库的相关资料,很有参考价值,有需要的朋友就一起参考一下吧。

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

代码如下复制代码

?php

namespaceHome/Model;

useThink/Model;

classWechatModelextendsModel {

private$_token=//令牌

private$appid;

private$appsecret;

publicfunction__construct()

{

$this-appid = C(APPID);//公众号的appid

$this-appsecret = C(APPSECRET);//公众号的秘钥

}

//调用js-sdk的签名包

publicfunctiongetSignPackage() {

$jsapiTicket=$this-getJsApiTicket();

// 注意 URL 一定要动态获取,不能 hardcode.

$protocol= (!empty($_SERVER[HTTPS]) $_SERVER[HTTPS] !==off||$_SERVER[SERVER_PORT] == 443) ?;

$url=$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI];

//时间戳

$timestamp= time();

//随机字符串获取

$nonceStr=$this-createNonceStr();

// 这里参数的顺序要按照 key 值 ASCII 码升序排序

$string=jsapi_ticket=$jsapiTicketnoncestr=$nonceStr×tamp=$timestampurl=$url;

//生成字符串是用来签名用的

$signature= sha1($string);

$signPackage=array(

appId=$this-appid,

nonceStr=$nonceStr,

timestamp=$timestamp,

url=$url,

signature=$signature,

rawString=$string

);

return$signPackage;

}

//使用会员卡领取的签名包

publicfunctiongetHuiYuanSignPackage() {

$apiTicket=$this-getApiTicket();

// 注意 URL 一定要动态获取,不能 hardcode.

$protocol= (!empty($_SERVER[HTTPS]) $_SERVER[HTTPS] 澳门新葡亰网站所有平台,!==off||$_SERVER[SERVER_PORT] == 443) ?;

$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

publicfunctiongetApiTicket(){

$data= json_decode(file_get_contents(api_ticket.json));

if($data-expire_time time()) {

$accessToken=$this-getAccessToken();

$url=_cardaccess_token=$accessToken;

$res= json_decode($this-($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;

}

//获取随机字符串

privatefunctioncreateNonceStr($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

publicfunctiongetAccessToken(){

//将json字符串转换为json对象

$data= json_decode(file_get_contents(access_token.json));

if($data-expire_time time()) {

// 如果是企业号用以下URL获取access_token

$url=_type=client_credentialappid=$this-appidsecret=$this-appsecret;

$res= json_decode($this-($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接口的临时票据)

privatefunctiongetJsApiTicket() {

// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例

$data= json_decode(file_get_contents(jsapi_ticket.json));

if($data-expire_time time()) {

$accessToken=$this-getAccessToken();

// 如果是企业号用以下 URL 获取 ticket

// $url = _jsapi_ticket?access_token=$accessToken;

$url=_token=$accessToken;

$res= json_decode($this-($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

publicfunctionopenId(){

$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

publicfunctiongetOpenId($openid,$access_token)

{

$userInfo=$this-getUserInfo($openid,$access_token);

return$userInfo;

}

publicfunctionsnsapi_base($redirect_uri,$scope=snsapi_userinfo,$state= 0)

{

$appId=$this-appid;

$url=;

$url.=?appid=$appId;

$url.=redirect_uri=$redirect_uri;

$url.=response_type=code;

$url.=scope=$scope;

$url.=state=$state#wechat_redirect;

return$url;

}

publicfunctionopenidAccess_token($code){

$appId=$this-appid;

$appSecret=$this-appsecret;

$url=_token?appid=$appIdsecret=$appSecretcode=$codegrant_type=authorization_code;

returnjson_decode($this-($url),true);

}

//获取用户信息

publicfunctiongetUserInfo($openid,$access_token){

$url=_token=$access_tokenopenid=$openidlang=zh_CN ;

returnjson_decode($this-($url),true);

//请求

}

privatefunction($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;

}

}

本文由澳门新葡亰登入发布于澳门新葡亰网站所有平台,转载请注明出处:代码如下复制代码

关键词: