| Server IP : 156.238.232.47 / Your IP : 216.73.216.150 Web Server : nginx/1.25.3 System : Linux C202504152095410 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : www ( 1000) PHP Version : 8.3.25 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /www/data/wwwroot/2026_06_04_02/core/weixin/ |
Upload File : |
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2019年05月27日
* 微信网页授权
*/
namespace core\weixin;
use core\basic\Config;
class WxJsSDK
{
protected $appid;
protected $secret;
protected $noncestr;
public function __construct()
{
$this->appid = Config::get('weixin_appid');
$this->secret = Config::get('weixin_secret');
$this->noncestr = get_uniqid();
}
// 获取JsAPI签名授权信息
public function getAuthInfo()
{
// 签名数据数组
$data['jsapi_ticket'] = $this->getJsapiTicket();
$data['noncestr'] = $this->noncestr;
$data['timestamp'] = time();
$data['url'] = get_current_url();
$signature = sha1(urldecode(http_build_query($data)));
// 返回数据数组
$result['appid'] = $this->appid;
$result['timestamp'] = $data['timestamp'];
$result['noncestr'] = $this->noncestr;
$result['signature'] = $signature;
return $result;
}
// 获取访问Ticket
private function getJsapiTicket()
{
if (! $this->checkJsapiTicket()) {
$access_token = WxAccessToken::get();
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$access_token&type=jsapi";
$result = json_decode(get_url($url));
if (isset($result->errcode) && $result->errcode) {
error('获取微信JsapiTicket发生错误:' . $result->errmsg . '(' . $result->errcode . ')');
return false;
} else {
$data['weixin_jsapi_ticket'] = $result->ticket;
$data['weixin_jsapi_ticket_expires_in'] = $result->expires_in;
$data['weixin_jsapi_ticket_timestamp'] = time();
Config::set(sha1('weixin_jsapi_ticket'), $data); // 缓存数据
return $result->ticket;
}
} else {
return Config::get('weixin_jsapi_ticket');
}
}
// 检查Ticket是否可用
private function checkJsapiTicket()
{
Config::assign(RUN_PATH . '/config/' . sha1('weixin_jsapi_ticket') . '.php');
if (Config::get('weixin_jsapi_ticket') && time() - Config::get('weixin_jsapi_ticket_timestamp') < Config::get('weixin_jsapi_ticket_expires_in')) {
return true;
} else {
return false;
}
}
}