文档

PHP SDK调用示例

更新时间:

本文介绍PHP SDK集成纯服务端认证方案的操作方法。

SDK使用说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口。该工具会自动生成相应API的SDK调用示例代码,详细信息,请参见调试ContrastSmartVerify接口

前提条件

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

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

安装SDK

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

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

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

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

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

调用示例

  • 方式一:不使用本地图片示例

    <?php
    namespace AlibabaCloud\SDK\Sample {
    
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ContrastSmartVerifyRequest;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ContrastSmartVerifyResponse;
    use AlibabaCloud\Tea\Utils\Utils;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    
    use AlibabaCloud\Tea\Rpc\Rpc\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    class ContrastSmartVerify {
    
        /**
         * @param string $endpoint
         * @return Cloudauth
         */
        public static function createClient($endpoint){
           // 阿里云账号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([
    	        // 使用credential配置凭证
        		    "credential" => $credential,
                // 设置HTTP代理。
                // "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
                // 设置HTTPS代理
                // "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
                "endpoint" => $endpoint
    
            ]);
            return new Cloudauth($config);
        }
    
        /**
         * @return void
         */
        public static function main(){
            $request = new ContrastSmartVerifyRequest([
                // 请输入场景ID。
                "sceneId" => xxx,
                "outerOrderNo" => "商户请求的唯一标识",
                // 增强版实人认证的业务场景类型。取值:
                // CERT_SAFE:纯认证模式。
                // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。
                // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。
                // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。
                // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。
                "mode" => "CERT_SAFE",
                "certType" => "IDENTITY_CARD",
                "certName" => "xxx",
                "certNo" => "xxx",
                // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。
                // "mobile" => "137xxxxxxxx",
                // 公网可以访问的HTTP、HTTPS链接。
                "facePicUrl" => "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg",
                // 使用图片Base64编码方式。
                // "facePicString" => "xxxxx",
                // "ip" => "xx.xx.xxx.xxx",
                // "userId" => "xxx",
            ]);
            // 推荐,支持服务路由。
            $response = self::contrastSmartVerifyAutoRoute($request);
            // 不支持服务自动路由。
            // $response = self::contrastSmartVerify("cloudauth.cn-shanghai.aliyuncs.com", $request);
            var_dump($response->requestId);
            var_dump($response->code);
            var_dump($response->message);
            var_dump($response->resultObject->passed);
            var_dump($response->resultObject->subCode);
            var_dump($response->resultObject->verifyInfo);
            var_dump($response->resultObject->riskInfo);
        }
    
        /**
         * @param ContrastSmartVerifyRequest $request
         * @return ContrastSmartVerifyResponse
         */
        public static function contrastSmartVerifyAutoRoute(ContrastSmartVerifyRequest $request){
            $endpoints = [
                "cloudauth.cn-shanghai.aliyuncs.com",
                "cloudauth.cn-beijing.aliyuncs.com"
            ];
            foreach($endpoints as $endpoint){
                try {
                    $response = self::contrastSmartVerify($endpoint, $request);
                    if (Utils::equalString("500", $response->code)) {
                        continue;
                    }
                    return $response;
                }
                catch (Exception $err) {
                    if (!($err instanceof TeaError)) {
                        $err = new TeaError([], $err->getMessage(), $err->getCode(), $err);
                    }
                    // 网络异常,切换到下个区域调用。
                    if (Utils::equalString("ServiceUnavailable", $err->code)) {
                        continue;
                    }
                }
            }
            return null;
        }
    
        /**
         * @param string $endpoint
         * @param ContrastSmartVerifyRequest $request
         * @return ContrastSmartVerifyResponse
         */
        public static function contrastSmartVerify($endpoint, $request){
            $client = self::createClient($endpoint);
            // 创建RuntimeObject实例并设置运行参数。
            $runtime = new RuntimeOptions([]);
            $runtime->readTimeout = 10000;
            $runtime->connectTimeout = 10000;
            return $client->contrastSmartVerify($request, $runtime);
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    ContrastSmartVerify::main();
    }
  • 方式二:使用本地图片示例

    <?php
    namespace AlibabaCloud\SDK\Sample {
      
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ContrastSmartVerifyAdvanceRequest;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ContrastSmartVerifyRequest;
    use AlibabaCloud\SDK\Cloudauth\V20200618\Models\ContrastSmartVerifyResponse;
    use AlibabaCloud\Tea\Utils\Utils;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    
    use AlibabaCloud\Tea\Rpc\Rpc\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use GuzzleHttp\Psr7\Stream;
    
    class ContrastSmartVerify {
    
        /**
         * @param string $endpoint
         * @return Cloudauth
         */
        public static function createClient($endpoint){
           // 阿里云账号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([
    	        // 使用credential配置凭证
        		    "credential" => $credential,
                // 设置HTTP代理。
                // "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
                // 设置HTTPS代理
                // "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
                "endpoint" => $endpoint
    
            ]);
            return new Cloudauth($config);
        }
    
        /**
         * @return void
         */
        public static function main(){
            $file = new Stream(fopen('/xxx.png', 'r'));
            $request = new ContrastSmartVerifyAdvanceRequest([
                // 请输入场景ID。
                "sceneId" => xxx,
                "outerOrderNo" => "商户请求的唯一标识",
                // 增强版实人认证的业务场景类型。取值:
                // CERT_SAFE:纯认证模式。
                // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。
                // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。
                // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。
                // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。
                "mode" => "CERT_PHOTO_SAFE",
                "certType" => "IDENTITY_CARD",
                "certName" => "xxx",
                "certNo" => "xxx",
                // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。
                // "mobile" => "137xxxxxxxx",
                "facePicFileObject" => $file,
                // "ip" => "xx.xx.xxx.xxx",
                // "userId" => "xxx",
            ]);
            try {
            // 推荐,支持服务路由。
            $response = self::contrastSmartVerifyAdvanceAutoRoute($request);
            // 不支持服务自动路由。
            // $response = self::contrastSmartVerifyAdvance("cloudauth.cn-shanghai.aliyuncs.com", $request);
            var_dump($response->requestId);
            var_dump($response->code);
            var_dump($response->message);
            var_dump($response->resultObject->passed);
            var_dump($response->resultObject->subCode);
            var_dump($response->resultObject->verifyInfo);
            var_dump($response->resultObject->riskInfo);
            } finally {
                fclose($file);
            }
        }
    
        /**
         * @param ContrastSmartVerifyAdvanceRequest $request
         * @return ContrastSmartVerifyResponse
         */
        public static function contrastSmartVerifyAdvanceAutoRoute(ContrastSmartVerifyAdvanceRequest $request){
            $endpoints = [
                "cloudauth.cn-shanghai.aliyuncs.com",
                "cloudauth.cn-beijing.aliyuncs.com"
            ];
            foreach($endpoints as $endpoint){
                try {
                    $response = self::contrastSmartVerifyAdvance($endpoint, $request);
                    if (Utils::equalString("500", $response->code)) {
                        continue;
                    }
                    return $response;
                }
                catch (Exception $err) {
                    if (!($err instanceof TeaError)) {
                        $err = new TeaError([], $err->getMessage(), $err->getCode(), $err);
                    }
                    // 网络异常,切换到下个区域调用。
                    if (Utils::equalString("ServiceUnavailable", $err->code)) {
                        continue;
                    }
                }
            }
            return null;
        }
    
        /**
         * @param string $endpoint
         * @param ContrastSmartVerifyAdvanceRequest $request
         * @return ContrastSmartVerifyResponse
         */
        public static function contrastSmartVerifyAdvance($endpoint, $request){
            $client = self::createClient($endpoint);
            // 创建RuntimeObject实例并设置运行参数。
            $runtime = new RuntimeOptions([]);
            $runtime->readTimeout = 10000;
            $runtime->connectTimeout = 10000;
            return $client->contrastSmartVerifyAdvance($request, $runtime);
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    ContrastSmartVerify::main();
    }
  • 本页导读
文档反馈