WokerTask/app/middleapi/service/ApiSignService.php

39 lines
1.0 KiB
PHP

<?php
namespace app\middleapi\service;
class ApiSignService
{
//创建sign
public static function makeSign($data,$appSecret): string
{
ksort($data);
$string = "";
foreach ($data as $k => $v) {
if ($k == "sign" || is_array($v)) {
continue;
}
$string .= $k . "=" . $v . "&";
}
$string = trim($string, "&");
$string = $string . "&key=" . $appSecret;
$string = md5(md5($string));
return strtolower($string);
}
//检验sign是否正确
public static function verifySign($data,$appSecret): array
{
// 验证请求, 10秒钟失效
if (time() - $data['timestamp'] > 10) {
return ['code' => 0, 'msg' => '签名已失效'];
}
//比对签名
$clientSign = $data['sign'];
$serverSign = self::makeSign($data,$appSecret);
if ($clientSign == $serverSign) {
return ['code' => 1, 'msg' => '验证通过'];
} else {
return ['code' => 0, 'msg' => '签名校验失败'];
}
}
}