setEndpoint($endpoint); $clientProfile = new ClientProfile(); $clientProfile->setHttpProfile($httpProfile); $client = new FaceidClient($cred, $region, $clientProfile); $req = new IdCardOCRVerificationRequest(); $params = json_encode($data); $req->fromJsonString($params); $resp = $client->IdCardOCRVerification($req); $params_data = json_decode($resp->toJsonString(), true); return $params_data; // var_dump( json_decode($resp->toJsonString(), true)); // print_r($resp->toJsonString()); } catch (TencentCloudSDKException $e) { return array("code" => $e->getErrorCode(), "msg" => $e->getMessage(), "data" => ""); } } /** * @param json $params ImageBase64格式 * @param string $status|'FRONT','BACK' 识别身份证正反 * @return array|mixed */ public static function checkcardocr($params, $status = 'FRONT') { $card_config = get_addon_config('cardocr'); $secretId = $card_config['secretid']; $secretKey = $card_config['secretkey']; $endpoint = $card_config['endpoint_ocr']; $region = $card_config['region']; $cardside['FRONT'] = "身份证正面"; $cardside['BACK'] = "身份证反面"; try { $cred = new Credential($secretId, $secretKey); $httpProfile = new HttpProfile(); $httpProfile->setEndpoint($endpoint); $clientProfile = new ClientProfile(); $clientProfile->setHttpProfile($httpProfile); $client = new OcrClient($cred, $region, $clientProfile); $req = new IDCardOCRRequest(); $req->fromJsonString($params); $resp = $client->IDCardOCR($req); $params_data = json_decode($resp->toJsonString(), true); // var_dump($params_data); return $params_data; } catch (TencentCloudSDKException $e) { return array("code" => $e->getErrorCode(), "msg" => $cardside[$status] . $e->getMessage(), "data" => ""); } } /** * @param $image_file 图片url绝对地址 * @return array|string */ public static function base64EncodeImage($image_file) { try { $base64_image=self::geturlbase64($image_file, 2); return !empty($base64_image['data']) ?$base64_image['data']:""; } catch (Exception $exception) { return array("code" => 0, "msg" => $exception->getMessage()); } } /** * 将一个字符串部分字符用$re替代隐藏 * @param string $string 待处理的字符串 * @param int $start 规定在字符串的何处开始, * 正数 - 在字符串的指定位置开始 * 负数 - 在从字符串结尾的指定位置开始 * 0 - 在字符串中的第一个字符处开始 * @param int $length 可选。规定要隐藏的字符串长度。默认是直到字符串的结尾。 * 正数 - 从 start 参数所在的位置隐藏 * 负数 - 从字符串末端隐藏 * @param string $re 替代符 * @return string 处理后的字符串 */ public static function hidestr($string, $start = 0, $length = 0, $re = '*') { if (empty($string)) { return false; } $strarr = array(); $mb_strlen = mb_strlen($string); while ($mb_strlen) {//循环把字符串变为数组 $strarr[] = mb_substr($string, 0, 1, 'utf8'); $string = mb_substr($string, 1, $mb_strlen, 'utf8'); $mb_strlen = mb_strlen($string); } $strlen = count($strarr); $begin = $start >= 0 ? $start : ($strlen - abs($start)); $end = $last = $strlen - 1; ; if ($length > 0) { $end = $begin + $length - 1; } elseif ($length < 0) { $end -= abs($length); } for ($i = $begin; $i <= $end; $i++) { $strarr[$i] = $re; } // if ($begin >= $end || $begin >= $last || $end > $last) return false; return implode('', $strarr); } /** * @param $url * @param int $type 0普通数据 2获取base64 * @param int $timeout * @return array */ public static function geturlbase64($url, $type=0, $timeout=30) { $msg = ['code'=>2100,'status'=>'error','msg'=>'未知错误!']; $imgs= ['image/jpeg'=>'jpeg', 'image/jpg'=>'jpg', 'image/gif'=>'gif', 'image/png'=>'png', 'text/html'=>'html', 'text/plain'=>'txt', 'image/pjpeg'=>'jpg', 'image/x-png'=>'png', 'image/x-icon'=>'ico' ]; if (!stristr($url, 'http')) { $msg['code']= 2101; $msg['msg'] = 'url地址不正确!'; return $msg; } $dir= pathinfo($url); //var_dump($dir); $host = $dir['dirname']; $refer= $host.'/'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_REFERER, $refer); //伪造来源地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回变量内容还是直接输出字符串,0输出,1返回内容 curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);//在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出 curl_setopt($ch, CURLOPT_HEADER, 0); //是否输出HEADER头信息 0否1是 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //超时时间 $data = curl_exec($ch); //$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE); //$httpContentType = curl_getinfo($ch,CURLINFO_CONTENT_TYPE); $info = curl_getinfo($ch); curl_close($ch); $httpCode = intval($info['http_code']); $httpContentType = $info['content_type']; $httpSizeDownload= intval($info['size_download']); if ($httpCode!='200') { $msg['code']= 2102; $msg['msg'] = 'url返回内容不正确!'; return $msg; } if ($type>0 && !isset($imgs[$httpContentType])) { $msg['code']= 2103; $msg['msg'] = 'url资源类型未知!'; return $msg; } if ($httpSizeDownload<1) { $msg['code']= 2104; $msg['msg'] = '内容大小不正确!'; return $msg; } $msg['code'] = 200; $msg['status']='success'; $msg['msg'] = '资源获取成功'; if ($type==0 or $httpContentType=='text/html') { $msg['data'] = $data; } $base_64 = base64_encode($data); if ($type==1) { $msg['data'] = $base_64; } elseif ($type==2) { $msg['data'] = "data:{$httpContentType};base64,{$base_64}"; } elseif ($type==3) { $msg['data'] = ""; } else { $msg['msg'] = '未知返回需求!'; } unset($info,$data,$base_64); return $msg; } }