本文介绍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(); }
反馈
- 本页导读
文档反馈