PayToolApi.php

```php <?php /* * @Author: 无名 577813810@qq.com * @Date: 2023-02-10 00:40:14 * @LastEditors: 无名 577813810@qq.com * @LastEditTime: 2023-03-06 05:23:36 */ class PayToolApi { //Api版本号,勿改 protected $systemApiVer = 3; protected $pcTitle = ''; protected $panDownloadUrl = ''; protected $adsArr = []; public function index() { // apiVer 版本1 参数 ver、guid、ip、system // 1.0.4.8 增加参数getVerType获取后续更新版本类型,0为稳定版,1为测试版 $ver = isset($_REQUEST['ver']) ? $_REQUEST['ver'] : ''; //版本号,软件版本号 $guid = isset($_REQUEST['guid']) ? $_REQUEST['guid'] : ''; //guid,每一个软件启动的唯一标识 $ip = isset($_REQUEST['ip']) ? $_REQUEST['ip'] : ''; //ip,用户电脑的外网IP $apiVer = isset($_REQUEST['apiVer']) ? $_REQUEST['apiVer'] : ''; //软件内部请求的Api版本号 $system = isset($_REQUEST['system']) ? $_REQUEST['system'] : ''; //用户电脑操作系统名称,如:Microsoft Windows 11 专业版 if (empty($ver)) { $this->returnData(1, '参数不完整[ver]'); } if (empty($guid)) { $this->returnData(2, '参数不完整[guid]'); } if (empty($ip)) { $this->returnData(3, '参数不完整[ip]'); } if (empty($apiVer)) { $this->returnData(4, '参数不完整[apiVer]'); } if (empty($system)) { $this->returnData(5, '参数不完整[system]'); } /* 自己写代码实现某些功能 可通过IP、GUID、Ver配合Redis实现下列统计方案(一般连接平台后一分钟请求一次该接口) 1、获取软件总运行数(GUID) 2、获取某一个版本的总运行数(Ver、Guid) 3、获取某一个IP下运行数(IP、GUID) 等等...... */ // pcTitle参数:设置软件左上角标题 $this->pcTitle = '无名支付工具'; /* 1.0.4.18 增加功能 【panDownloadUrl参数:设置软件内置网盘跳转地址】 自定义跳转下载网盘地址是除了在线更新默认走我的网盘下载之外,一切将跳转到pan.4ee.ee的情况(包括在线更新错误弹出的提示)均跳转为您设置的自定义下载地址 网盘可使用支持Webdav的程序或者使用Alist进行实时同步我的网盘 建议使用Alist,Alist支持隐藏特定文件夹,可以同步之后隐藏“3合1工具站长必看内容”文件夹 [推荐]Alist V3中文文档:https://alist.nn.ci/zh/ pan.4ee.ee网盘是采用Alist V3版本 WebDav链接:http://pan.4ee.ee/dav/ 账号&密码:PayTool */ $this->panDownloadUrl = 'http://pan.4ee.ee/Ypay'; /* 添加广告位 广告位大小:200 × 75 即比例为8:3 软件内置广告位上限6个,如果添加超过6个,则会按照顺序计算获取出符合条件的前6个展示 */ // 这个广告因为时间格式不对,则时间会被解析为1970-01-01 00:00:00 $this->addAd('这里是广告开始时间', '这里是广告到期时间', '这里是图片链接', '这里是点击打开的链接'); // 广告添加的正确例子,时间也可以填写到日结束(例如:2024-01-01),这样就默认指当天0点0分0秒 $this->addAd('2023-2-10 00:00:00', '2024-01-01 00:00:00', 'https://i.postimg.cc/XJzmP80F/QQ-20230210030807.png', 'http://pan.4ee.ee/Ypay'); $return_data = [ 'title' => $this->pcTitle, //软件左上角标题 'panDownloadUrl' => $this->panDownloadUrl, //自定义跳转网盘地址 'systemApiVer' => $this->systemApiVer, //系统Api版本号 'ads' => $this->adsArr, //广告位信息 ]; // 返回数据 $this->returnData(0, '', $return_data); } // 返回数据 json格式 private function returnData($code = 0, $msg = '', $dataArr = []) { $retrun_data = [ 'code' => $code, // 状态码 0为正常 'msg' => $msg, //返回信息、错误信息等 'timemap' => time(), ]; if (!empty($dataArr) && is_array($dataArr)) { foreach ($dataArr as $k => $v) { $retrun_data[$k] = $v; } } // 状态码为0则生成签名 if ($code == 0) { $retrun_data['sign'] = $this->getSign($retrun_data); } exit(json_encode($retrun_data)); } // 添加广告 private function addAd($startTime = '', $endTime = '', $picUrl = '#', $openUrl = '#') { $timemap = time(); $startTime = empty($startTime) ? date('Y-m-d H:i:s', time()) : $startTime; $endTime = empty($endTime) ? date('Y-m-d H:i:s', time()) : $endTime; $tempStartTime = strtotime($startTime); $tempEndTime = strtotime($endTime); $adArr = [ 'stratTime' => $tempStartTime ? $tempStartTime : 0, 'endTime' => $tempEndTime ? $tempEndTime : 0, 'picUrl' => $picUrl, 'openUrl' => $openUrl, ]; // 过滤广告输出,将未开始或者已过期的广告不输出,能减少接口输出耗时 // PS:这个判断可以取消掉,这样子就交给软件去处理,软件内置处理广告有效期显示功能 if($adArr['stratTime'] <= $timemap && $adArr['endTime'] > $timemap){ array_push($this->adsArr, $adArr); } } // 生成签名 private function getSign($data = []) { switch ($this->systemApiVer) { case '1': case '2': $temp = $data['code'] . $data['msg'] . $data['title'] . $data['systemApiVer'] . count($data['ads']); break; case '3': $temp = $data['code'] . $data['msg'] . $data['title'] . $data['panDownloadUrl'] . $data['systemApiVer'] . count($data['ads']); break; default: $temp = $data['code'] . $data['msg'] . $data['title'] . $data['systemApiVer'] . count($data['ads']); } foreach ($data['ads'] as $k => $v) { $temp .= $v['stratTime'] . $v['endTime'] . $v['picUrl'] . $v['openUrl']; } $temp .= $data['timemap']; $sign = md5($temp); return $sign; } } $PayToolApi = new PayToolApi(); echo $PayToolApi->index(); ```