curlMobileRequest($url, $method, $headers, $bodys); if (isset($aliData['code']) && $aliData['code'] == 200) { ThirdMobileLogs::query()->insert([ 'mobile' => $mobile, 'area' => $aliData['data']['area'], 'originalIsp' => $aliData['data']['originalIsp'], ]); } return $aliData['data'] ?? []; } /** * @param $url * @param $method * @param $headers * @param $bodys * @return mixed */ private function curlMobileRequest($url, $method, $headers, $bodys){ $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //设定返回信息中是否包含响应信息头,启用时会将响应信息头作为数据流输出,true 表示输出信息头, false表示不输出信息头 //如果想将响应结果json字符串转为json数组,建议将 CURLOPT_HEADER 设置成 false curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$url, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); curl_close($curl); list($header, $body) = explode("\r\n\r\n", curl_exec($curl), 2); return json_decode($body, true); } /** * 发送企微提醒 * @param $message * @return mixed */ public function weComNotice($os) { $url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e138b55c-2886-4729-922e-9a8c753f75ee'; $method = 'POST'; $message = sprintf($this->notice, Orders::OSS[$os] ?? ''); $bodys = [ 'msgtype' => 'text', 'text' => [ 'content' => $message ] ]; if (Redis::setNx('notice-' . $os, 600, 1)) { $this->curlRequest($url, $method, [], $bodys); } return true; } /** * @param $url * @param $method * @param $headers * @param $bodys * @return mixed */ private function curlRequest($url, $method, $headers, $bodys){ $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //设定返回信息中是否包含响应信息头,启用时会将响应信息头作为数据流输出,true 表示输出信息头, false表示不输出信息头 //如果想将响应结果json字符串转为json数组,建议将 CURLOPT_HEADER 设置成 false curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$url, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } if (is_array($bodys)) { $bodys = json_encode($bodys); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); curl_setopt($curl, CURLOPT_HTTPHEADER, array_merge($headers, [ 'Content-Type: application/json', 'Content-Length: ' . strlen($bodys) ])); curl_close($curl); list($header, $body) = explode("\r\n\r\n", curl_exec($curl), 2); Log::info(sprintf('third req:%s, res:%s', $url, $body)); return json_decode($body, true); } }