diff --git a/common/config/params.php b/common/config/params.php index feb1cef..c70042e 100644 --- a/common/config/params.php +++ b/common/config/params.php @@ -19,6 +19,6 @@ return [ 'sms'=>[ 'smsKey'=>'LTAI4Fs7QiKCF4ZpZmEGFkcD', 'smsSecret'=>'iVs6oI0KknlR2PrRhvQl6f4Xwsudlf', - 'smsSignName'=>'周合立科技', + 'smsSignName'=>'周和利科技', ], ]; diff --git a/common/helpers/CheckActiveHelper.php b/common/helpers/CheckActiveHelper.php index d9fa883..67c45a3 100644 --- a/common/helpers/CheckActiveHelper.php +++ b/common/helpers/CheckActiveHelper.php @@ -34,7 +34,7 @@ class CheckActiveHelper * status string 状态码【待定】(authentic:正品 fake:假货 其他状态码:请闵总帮忙补充) * imgUrl file 返回的图片状态 备注:请返回完整的URL路径,例如:http://check1.bosch-smartlife.com/images/success.png */ - public static function checkAppQrv($imageFullPath, $fileName, $token) + public static function checkAppQrv_old($imageFullPath, $fileName, $token) { try { $curl = curl_init(); @@ -63,8 +63,8 @@ class CheckActiveHelper curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // 超时时间 - curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); - curl_setopt($curl, CURLOPT_TIMEOUT, 30); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60); + curl_setopt($curl, CURLOPT_TIMEOUT, 60); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 返回内容 $callbcak = curl_exec($curl); @@ -85,6 +85,133 @@ class CheckActiveHelper } /** + * http post请求--CURL模拟表单上传文件 + * @param $url string 请求地址 + * @param $params array 请求参数 + * @param $header array 请求头 + * @return mixed + */ + public static function checkAppQrv($imageFullPath, $fileName, $token) + { + try { + + // 获取图片内容 + $filename_root = $_SERVER['DOCUMENT_ROOT']; + $path = $filename_root. '/tmp/'. date("Ymd"); + $saveFilePath = $path.'/'.$fileName; + //以下代码适合PHP7.x PHP5.6 + $file = new \CURLFile(realpath($saveFilePath),'multipart/form-data', 'img'); + //或者使用下面过程化的写法 + //$file = curl_file_create('@' .realpath($saveFilePath),'multipart/form-data'); + $postfields = [ + 'fileName' => $fileName, + //'token' => $token, + 'img' => $file + ]; + Log::DEBUG("请求checkAppQrv参数:" . json_encode($postfields)); + $url = self::CHECK_URL; + //---------------------------- + $ch = curl_init(); + $params[CURLOPT_URL] = $url; //请求url地址 + $params[CURLOPT_HEADER] = true; //是否返回响应头信息 + $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回 + $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向 + $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'; + $params[CURLOPT_POST] = true; + $params[CURLOPT_POSTFIELDS] = $postfields; + $header = array('Content-Type: multipart/form-data'); //请求头记得变化-不同的上传方式 + $params[CURLOPT_HTTPHEADER] = $header; + // 超时时间 + $params[CURLOPT_CONNECTTIMEOUT] = 30; + $params[CURLOPT_TIMEOUT] = 30; + + curl_setopt_array($ch, $params); //传入curl参数 + $content = curl_exec($ch); //执行 + //http状态码 + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + Log::DEBUG("checkAppQrv返回码:" .$httpCode); + if ($httpCode == 200) { + $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); + Log::DEBUG("checkAppQrv返回headerSize:" .$headerSize); + $header = substr($content, 0, $headerSize); + $content = substr($content, $headerSize); + } + //打印请求的header信息 + //$request_header = curl_getinfo($ch, CURLINFO_HEADER_OUT); + //状态处理 + if (in_array($httpCode, array(400, 403))) + return ""; + curl_close($ch); //关闭连接 + Log::DEBUG("checkAppQrv返回结果为:" .$content); + //返回内容JSON_DECODE + return json_decode($content, true); + } catch (Exception $e) { + Log::DEBUG("检查图片出错:" . $e->getTraceAsString()); + return false; + } + } + + public static function checkAppQrv_fsockopen($imageFullPath, $fileName, $token) + { + //第二种方法:fsockopen方法上传 + // 获取图片内容 + $filename_root = $_SERVER['DOCUMENT_ROOT']; + $path = $filename_root. '/tmp/'. date("Ymd"); + $saveFilePath = $path.'/'.$fileName; + + $arr_data = array('fileName' => $fileName, + 'token' => $token); //普通参数 + $var_file='img'; //文件变量名 + $file_type='image/jpeg'; //文件类型 + + $filepath = realpath($saveFilePath); //文件路径 + $filestring = @file_get_contents($filepath) or exit('not found file ( '.$filepath.' )'); //生成文件流 + $host = "check1.bosch-smartlife.com"; + $requestPath = self::CHECK_URL; + + + + //构造post请求的头 + $boundary = substr(md5(time()),8,16); //分隔符 + $header = "POST {$requestPath} HTTP/1.1\r\n";//一般有post, get这两种 + $header .= "Host: {$host}\r\n"; + $header .= "Content-Type: multipart/form-data; boundary={$boundary}\r\n"; + + $data = ""; + //请求普通数据 + foreach($arr_data as $k=>$v){ + $data .= "--{$boundary}\r\n"; + $data .= "Content-Disposition: form-data; name=\"{$k}\"\r\n"; + $data .= "\r\n{$v}\r\n"; + $data .= "--{$boundary}\r\n"; + } + //请求图片数据 + $filename = basename($filepath); //文件名 + $data .= "--{$boundary}\r\n"; + $data .= "Content-Disposition: form-data; name=\"$var_file\"; filename=\"$filename\"\r\n"; + $data .= "Content-Type: $file_type\r\n"; //\r\n不可少 + $data .= "\r\n$filestring\r\n"; //\r\n不可少 + $data .= "--{$boundary}\r\n"; //\r\n不可少 + $header .= "Content-Length: ".strlen($data)."\r\n\r\n"; //\r\n不可少 + + //发送post的数据 + $fp = fsockopen($host,80,$errno,$errstr,10) or exit($errstr."--->".$errno); + fputs($fp,$header.$data); + + $inheader = 0; //1去除请求包的头只显示页面的返回数据 0-保留头 + while (!feof($fp)) { + $line = fgets($fp,1024); + if ($inheader && ($line == "\n" || $line == "\r\n")) { + $inheader = 0; + } + if ($inheader == 0) { + Log::DEBUG("返回信息:" . $line); + } + } + return ""; + } + + /** * 防伪标签的激活 * @param $uuid string 是 防伪标签uuid * @param $token string 是 访问令牌 diff --git a/domain/system/message/SmsMessage.php b/domain/system/message/SmsMessage.php index 96c94b2..b63dad8 100644 --- a/domain/system/message/SmsMessage.php +++ b/domain/system/message/SmsMessage.php @@ -70,7 +70,7 @@ class SmsMessage * @param $signName * @return mixed */ - public function sendRegCode($phone, $code, $signName = '周合立科技') + public function sendRegCode($phone, $code, $signName = '周和利科技') { $this->send($phone, $signName, "SMS_179880510", ["code" => $code]); } @@ -82,7 +82,7 @@ class SmsMessage * @param $phone * @return mixed */ - public function sendGetCode($phone, $code, $signName = '周合立科技') + public function sendGetCode($phone, $code, $signName = '周和利科技') { $this->send($phone, $signName, "SMS_180755775", ["code" => $code]); } -- libgit2 0.21.0