一些好用的工具类
接口签名
//校验信息
public function __construct(Request $request)
{
//生成签名
$request = $request->all();
$sign = $request['sign'];
unset($request['sign']);
if ((time() - intval($request['timestamp'])) > 300) {
throw new ErrorException(1, 'sign超时');
}
ksort($request);
$keys = array_keys($request);
$values = array_values($request);
$str = 'abcd123@2022';
foreach ($keys as $key => $value) {
$str .= $value .'='. $values[$key] .'&';
}
$str = rtrim($str, '&');
if (md5($str) == $sign) {
return true;
}
throw new ErrorException(1, '解密失败');
}
给图片加前缀
/**
* 数组图片
* @param $img
* @return int[]|string[]
*/
function formatImgArr($img)
{
if (empty($img)) return [];
if (strpos($img, ",") !== false) {
$result = array_filter(explode(',', $img));
} else {
$result = [$img];
}
$arr = array();
foreach ($result as $key => $value) {
if (!empty($value)) {
$arr[] = config('oss.domain') . '/' . $value;
}
}
return array_values($arr);
}
生成支付单编号
/**
* 生成支付单编号(两位随机 + 从2000-01-01 00:00:00 到现在的秒数+微秒+会员ID%1000),该值会传给第三方支付接口
* 长度 =2位 + 10位 + 3位 + 3位 = 18位
* 1000个会员同一微秒提订单,重复机率为1/100
* @return string
*/
function makePaySn($member_id)
{
return mt_rand(10, 99)
. sprintf('%010d', time() - 946656000)
. sprintf('%03d', (float)microtime() * 1000)
. sprintf('%03d', (int)$member_id % 1000);
}
机器人群消息推送
//机器人群消息推送
public static function DingRobotWarning($type, $message){
$message = json_encode($message);
if($type == 'ssh') {
$token = '';
}
$remote_server = 'https://oapi.dingtalk.com/robot/send?access_token='.$token;
$data = array ('msgtype' => 'text','text' => array ('content' => 'APP_NAME:'.env('APP_NAME').'>>>'.'APP_URL:'.env('APP_URL').'>>'.$message));
$post_string = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
laravel 框架下的成功失败api响应
if (!function_exists('success')) {
/**
* 返回成功
* @param $data
* @param string $msg
* @param int $code
* @return \Illuminate\Http\JsonResponse
*/
function success($data = [], $msg = '', $code = \App\Enum\Api\ApiCodeEnum::SUCCESS)
{
!$msg && $msg = \App\Enum\Api\ApiCodeEnum::CODE_TEXT[$code];
return response_api($code, $msg, $data);
}
}
if (!function_exists('error')) {
/**
* 错误返回
* @param string $msg
* @param int $code
* @param array $data
* @return \Illuminate\Http\JsonResponse
*/
function error($msg = '', $code = \App\Enum\Api\ApiCodeEnum::FAIL, $data = [])
{
!$msg && $msg = \App\Enum\Api\ApiCodeEnum::CODE_TEXT[$code];
return response_api($code, $msg, $data);
}
}
if (!function_exists('response_json')) {
/**
* api响应
* @param $code
* @param $msg
* @param array $data
* @return \Illuminate\Http\JsonResponse
*/
function response_api($code, $msg, $data = [])
{
return response()->json([
'data' => empty($data) ? [] : $data,
'msg' => $msg,
'code' => $code
], 200, [], JSON_UNESCAPED_UNICODE);
}
}
标签:code,return,curl,ch,msg,一些,工具,data,好用
From: https://www.cnblogs.com/zyhtzxy/p/16798475.html