PHP SDK调用示例

本文介绍了卡证核身方案纯服务端集成的PHP SDK调用示例。

前提条件

  • 需要使用的PHP版本在5.6版本及以上。

  • 已添加认证场景,并获取对应的场景ID。具体操作,请参见添加认证场景

安装SDK

关于PHP SDK源代码,请参见PHP SDK包

  • 通过Composer来管理项目依赖(推荐)

    composer require alibabacloud/cloudauth-20200618 1.0.3
  • 使用composer.json文件

    {
       "require": {
           "alibabacloud/cloudauth-20200618": "1.0.3"    
        }
    }

如果因网络问题导致无法按照上述操作安装SDK,您可以使用阿里云Composer全量镜像

示例

  • 方式一:不使用本地证件示例

    <?php
    require __DIR__ . '/vendor/autoload.php';
    
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ElementSmartVerifyRequest;
    use AlibabaCloud\Tea\Rpc\Rpc\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    // 通过以下代码创建Config实例并初始化。
    
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/document_detail/311677.html。 
    $credential = new Credential([]);
    $config = new Config();
    $config->credential = $credential;
    $config->regionId = "cn-hangzhou";
    // 设置您的endpoint,endpoint为固定值。
    $config->endpoint = "cloudauth.aliyuncs.com";
    // 设置http代理。
    //$config->httpProxy = "http://xxx.xxx.xxx.xxx:9999";
    // 设置https代理。
    //$config->httpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999";
    $client = new Cloudauth($config);
    
    // 通过以下代码创建RuntimeObject实例并设置运行参数。
    $runtime = new RuntimeOptions();
    // 设置连接超时时间(单位ms)。
    $runtime->connectTimeout = 10000;
    // 设置调用超时时间(单位ms)。
    $runtime->readTimeout = 10000;
    
    // 通过以下代码创建API请求并设置参数。
    $request = new ElementSmartVerifyRequest();
    $request->sceneId=2000xxxx;
    //设置商户请求的唯一标识。
    $request->outerOrderNo='xxx';   
    // 模式。
    $request->mode='OCR_VERIFY_ID_NAME';
    $request->certType='IDENTITY_CARD';
    // $request->certName='张三';
    // $request->certNo='18位身份证号';
    // $request->certNationalEmblemUrl='https://www.aliyun.com/test.jpeg';
    $request->certUrl='https://www.aliyun.com/test.jpeg';
    
    // 通过以下代码发起请求并处理应答和异常。
    try {
        $response = $client->elementSmartVerify($request, $runtime);
        var_dump($response->requestId);
        var_dump($response->code);
        var_dump($response->message);
        var_dump($response->resultObject->passed);
        var_dump($response->resultObject->certifyId);
        var_dump($response->resultObject->subCode);
        var_dump($response->resultObject->materialInfo);
    } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
    } catch (Exception $e) {
        var_dump($e->getMessage());
        var_dump($e->getCode());
    }
  • 方式二:使用本地证件示例

    <?php
    require __DIR__ . '/vendor/autoload.php';
    
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ElementSmartVerifyAdvanceRequest;
    use AlibabaCloud\Tea\Rpc\Rpc\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use GuzzleHttp\Psr7\Stream;
    
    // 通过以下代码创建Config实例并初始化。
    
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/document_detail/311677.html。 
    $credential = new Credential([]);
    $config = new Config();
    $config->credential = $credential;
    // 设置您的regionId,regionId为固定值。
    $config->regionId = "cn-hangzhou";
    // 设置您的endpoint,endpoint为固定值。
    $config->endpoint = "cloudauth.aliyuncs.com";
    // 设置http代理。
    //$config->httpProxy = "http://xxx.xxx.xxx.xxx:9999";
    // 设置https代理。
    //$config->httpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999";
    $client = new Cloudauth($config);
    
    // 通过以下代码创建RuntimeObject实例并设置运行参数。
    $runtime = new RuntimeOptions();
    // 设置连接超时时间(单位ms)。
    $runtime->connectTimeout = 10000;
    // 设置调用超时时间(单位ms)。
    $runtime->readTimeout = 10000;
    
    // 通过以下代码创建API请求并设置参数。
    $request = new ElementSmartVerifyAdvanceRequest();
    $request->sceneId=2000xxx;
    //设置商户请求的唯一标识。
    $request->outerOrderNo='xxx';  
    // 模式。
    $request->mode='OCR_VERIFY_ID_NAME';
    $request->certType='IDENTITY_CARD';
    // $request->certName='张三';
    // $request->certNo='18位身份证号';
    // $request->certNationalEmblemUrl='https://www.aliyun.com/test.jpeg';
    $file = fopen('xxx', 'r');   //设置本地文件路径。
    $request->certFileObject = new Stream($file);
    
    // 通过以下代码发起请求并处理应答。
    try {
        $response = $client->elementSmartVerifyAdvance($request, $runtime);
        var_dump($response->requestId);
        var_dump($response->code);
        var_dump($response->message);
        var_dump($response->resultObject->passed);
        var_dump($response->resultObject->certifyId);
        var_dump($response->resultObject->subCode);
        var_dump($response->resultObject->materialInfo);
    } catch (TeaUnableRetryError $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
    } catch (Exception $e) {
        var_dump($e->getMessage());
        var_dump($e->getCode());
    }
    
    // 通过以下代码关闭资源。
    fclose($file);