• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

腾讯云身份证信息识别php

武飞扬头像
Evelyn丶婉婷
帮助1

腾讯云识别身份证信息

<?php
class Ocr
{
    const SecretId  = "xxx";
    const SecretKey = "xxx";
    const Url       = "https://ocr.tencentcloudapi.com";

//算法
    const Algo = "sha256";
//规范请求串
    const HTTPRequestMethod    = "POST";
    const CanonicalURI         = "/";
    const CanonicalQueryString = "";
    const CanonicalHeaders     = "content-type:application/json; charset=utf-8\nhost:ocr.tencentcloudapi.com\n";
    const SignedHeaders        = "content-type;host"; //参与签名的头部信息

//签名字符串
    const Algorithm = "TC3-HMAC-SHA256";
    const Service   = "ocr";
    const Stop      = "tc3_request";

/**
 * 身份证
 */
    public function getOcr()
    {
        $param = [
            'ImageUrl' => "",
        ];
        return self::getCommonPostRequest("GeneralAccurateOCR", $param);
    }

/**
 * 鉴权
 * @param string $action 方法
 * @param array $param 参数
 * @param string $version 版本号
 * @return array
 */
    private static function getCommonPostRequest($action, array $param = [], $version = "2018-11-19")
    {
//时间戳
        $timeStamp = time();
//参数转化Json
        $paramJson = json_encode($param);
//规范请求串
        $hashedRequestPayload = self::HashEncryption($paramJson);
        $canonicalRequest     = self::HTTPRequestMethod . "\n" .
        self::CanonicalURI . "\n" .
        self::CanonicalQueryString . "\n" .
        self::CanonicalHeaders . "\n" .
        self::SignedHeaders . "\n" .
            $hashedRequestPayload;
//签名字符串
        $date                   = gmdate("Y-m-d", $timeStamp); //UTC 0时区的值
        $credentialScope        = $date . "/" . self::Service . "/" . self::Stop;
        $hashedCanonicalRequest = self::HashEncryption($canonicalRequest);
        $stringToSign           = self::Algorithm . "\n" .
            $timeStamp . "\n" .
            $credentialScope . "\n" .
            $hashedCanonicalRequest;

//计算签名
        $secretDate    = self::HashHmacSha256Encryption($date, 'TC3' . self::SecretKey);
        $secretService = self::HashHmacSha256Encryption(self::Service, $secretDate);
        $secretSigning = self::HashHmacSha256Encryption(self::Stop, $secretService);

//签名
        $signature     = self::HashHmacSha256Encryption($stringToSign, $secretSigning, false);
        $authorization = self::Algorithm . ' ' .
        'Credential=' . self::SecretId . '/' . $credentialScope . ', ' .
        'SignedHeaders=' . self::SignedHeaders . ', ' .
            'Signature=' . $signature;

//Header头部
        $headers = [
            "Authorization: $authorization",
            "Host: ocr.tencentcloudapi.com",
            "Content-Type: application/json; charset=utf-8",
            "X-TC-Action: $action",
            "X-TC-Version: $version",
            "X-TC-Timestamp: $timeStamp",
            "X-TC-Region: ap-guangzhou",
        ];
//请求
        $response = self::get_curl_request(self::Url, $paramJson, self::HTTPRequestMethod, $headers);
//解析
        if (!$response) {
            return ['code' => 0, 'codeError' => '1002', 'msg' => 'Interface request failed'];
        }
        $response = json_decode($response, true);
        if (!isset($response['Response'])) {
            return ['code' => 0, 'codeError' => '1003', 'msg' => 'Response error'];
        }
        if (isset($response['Response']['Error'])) {
            return [
                'code' => 0
                , 'codeError' => $response['Response']['Error']['Code']
                , 'msg' => $response['Response']['Error']['Message']
                , 'RequestId' => $response['Response']['RequestId'],
            ];
        } else {
            return ['code' => 1, 'msg' => 'ok', 'data' => $response['Response']];
        }
    }

    private static function HashEncryption($sign)
    {
        return strtolower(hash(self::Algo, $sign));
    }

    private static function HashHmacSha256Encryption($sign, $key, $flag = true)
    {
        return hash_hmac(self::Algo, $sign, $key, $flag);
    }

/**
 * @param $url
 * @param array $param
 * @param string $mothod
 * @param array $headers
 * @param int $return_status
 * @param int $flag
 * @return array|bool|string
 */
    public static function get_curl_request($url, $param = [], $mothod = 'POST', $headers = [], $return_status = 0, $flag = 0)
    {
        $ch = curl_init();
        if (!$flag) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }

//内网需要开启代理
        //curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1");
        //curl_setopt($ch, CURLOPT_PROXYPORT, 12639);

        curl_setopt($ch, CURLOPT_TIMEOUT, 6);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if (strtolower($mothod) == 'post') {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        } else {
            $url = $url . "?" . http_build_query($param);
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 2);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $ret  = curl_exec($ch);
        $code = curl_getinfo($ch);
        curl_close($ch);
        if ($return_status == "1") {
            return array($ret, $code);
        }
        return $ret;
    }
}

$model = new Ocr();
$data  = $model->getOcr();
var_dump($data);

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbabbf
系列文章
更多 icon
同类精品
更多 icon
继续加载