全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件

PHP SDK

更新时间:2018-01-30 18:21:45

获取地址

  • GitHub,引入aliyun-php-sdk-corealiyun-php-sdk-cloudauth

注意:两个 SDK 都必须引入,其中aliyun-php-sdk-core为阿里云的核心 SDK,aliyun-php-sdk-cloudauth为实人认证的 SDK。

使用说明

参看 GitHub 中的说明,或者 阿里云 SDK 开发指南 - PHP SDK 目录下的章节。

实人认证示例

RPBasic认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php';
  4. use Cloudauth\Request\V20171117 as cloudauth;
  5. // 创建DefaultAcsClient实例并初始化
  6. $iClientProfile = DefaultProfile::getProfile(
  7. "cn-hangzhou", // 默认
  8. "YourAccessKeyID", // 您的Access Key ID
  9. "YourAccessKeySecret"); // 您的Access Key Secret
  10. $iClientProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "Cloudauth", "cloudauth.aliyuncs.com");
  11. $client = new DefaultAcsClient($iClientProfile);
  12. $biz = "YourRPBasicBiz"; // 您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  13. $ticketId = guid(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  14. $token = null; // 认证token, 用来串联认证请求中的各个接口
  15. $statusCode = -1; // -1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  16. // 1. 服务端发起认证请求, 获取到token
  17. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  18. $getVerifyTokenRequest = new cloudauth\GetVerifyTokenRequest();
  19. $getVerifyTokenRequest->setBiz($biz);
  20. $getVerifyTokenRequest->setTicketId($ticketId);
  21. try {
  22. $response = $client->getAcsResponse($getVerifyTokenRequest);
  23. $token = $response->Data->VerifyToken->Token;
  24. } catch (Exception $e) {
  25. print $e->getTrace();
  26. }
  27. // 2. 服务端将token传递给无线客户端
  28. // 3. 无线客户端用token调起无线认证SDK
  29. // 4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  30. // 5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  31. // 6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  32. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  33. $getStatusRequest = new cloudauth\GetStatusRequest();
  34. $getStatusRequest->setBiz($biz);
  35. $getStatusRequest->setTicketId($ticketId);
  36. try {
  37. $response = $client->getAcsResponse($getStatusRequest);
  38. $statusCode = $response->Data->StatusCode;
  39. } catch (ServerException $e) {
  40. print $e->getMessage();
  41. } catch (ClientException $e) {
  42. print $e->getMessage();
  43. }
  44. // 7. 服务端获取认证资料
  45. // GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  46. $getMaterialsRequest = new cloudauth\GetMaterialsRequest();
  47. $getMaterialsRequest->setBiz($biz);
  48. $getMaterialsRequest->setTicketId($ticketId);
  49. if (1 == $statusCode or 2 == $statusCode) { // 认证通过 or 认证不通过
  50. try {
  51. $response = $client->getAcsResponse($getMaterialsRequest);
  52. } catch (ServerException $e) {
  53. print $e->getMessage();
  54. } catch (ClientException $e) {
  55. print $e->getMessage();
  56. }
  57. }

RPManual认证方案

代码示例同 RPBasic,其中biz须传入您在控制台上创建的、采用RPManual认证方案的认证场景标识。

RPBioOnly认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php';
  4. use Cloudauth\Request\V20171117 as cloudauth;
  5. // 创建DefaultAcsClient实例并初始化
  6. $iClientProfile = DefaultProfile::getProfile(
  7. "cn-hangzhou", // 默认
  8. "YourAccessKeyID", // 您的Access Key ID
  9. "YourAccessKeySecret"); // 您的Access Key Secret
  10. $iClientProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "Cloudauth", "cloudauth.aliyuncs.com");
  11. $client = new DefaultAcsClient($iClientProfile);
  12. $biz = "YourRPBioOnlyBiz"; // 您在控制台上创建的、采用RPBioOnly认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  13. $ticketId = guid(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  14. $token = null; // 认证token, 用来串联认证请求中的各个接口
  15. $statusCode = -1; // -1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  16. // 1. 服务端发起认证请求, 获取到token
  17. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  18. $getVerifyTokenRequest = new cloudauth\GetVerifyTokenRequest();
  19. $getVerifyTokenRequest->setBiz($biz);
  20. $getVerifyTokenRequest->setTicketId($ticketId);
  21. // 若需要binding图片(如身份证正反面等), 且使用base64上传, 需要设置请求方法为POST
  22. // $getVerifyTokenRequest->setMethod("POST");
  23. // binding 内容请根据 认证方案 中的说明传入相应字段
  24. $getVerifyTokenRequest->setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  25. try {
  26. $response = $client->getAcsResponse($getVerifyTokenRequest);
  27. $token = $response->Data->VerifyToken->Token;
  28. } catch (Exception $e) {
  29. print $e->getTrace();
  30. }
  31. // 2. 服务端将token传递给无线客户端
  32. // 3. 无线客户端用token调起无线认证SDK
  33. // 4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  34. // 5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  35. // 6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  36. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  37. $getStatusRequest = new cloudauth\GetStatusRequest();
  38. $getStatusRequest->setBiz($biz);
  39. $getStatusRequest->setTicketId($ticketId);
  40. try {
  41. $response = $client->getAcsResponse($getStatusRequest);
  42. $statusCode = $response->Data->StatusCode;
  43. } catch (ServerException $e) {
  44. print $e->getMessage();
  45. } catch (ClientException $e) {
  46. print $e->getMessage();
  47. }
  48. // 7. 服务端获取认证资料
  49. // GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  50. $getMaterialsRequest = new cloudauth\GetMaterialsRequest();
  51. $getMaterialsRequest->setBiz($biz);
  52. $getMaterialsRequest->setTicketId($ticketId);
  53. if (1 == $statusCode or 2 == $statusCode) { // 认证通过 or 认证不通过
  54. try {
  55. $response = $client->getAcsResponse($getMaterialsRequest);
  56. } catch (ServerException $e) {
  57. print $e->getMessage();
  58. } catch (ClientException $e) {
  59. print $e->getMessage();
  60. }
  61. }

RPMin认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php';
  4. use Cloudauth\Request\V20171117 as cloudauth;
  5. // 创建DefaultAcsClient实例并初始化
  6. $iClientProfile = DefaultProfile::getProfile(
  7. "cn-hangzhou", // 默认
  8. "YourAccessKeyID", // 您的Access Key ID
  9. "YourAccessKeySecret"); // 您的Access Key Secret
  10. $iClientProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "Cloudauth", "cloudauth.aliyuncs.com");
  11. $client = new DefaultAcsClient($iClientProfile);
  12. $biz = "YourRPMinBiz"; // 您在控制台上创建的、采用RPMin认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  13. $ticketId = guid(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  14. $token = null; // 认证token, 用来串联认证请求中的各个接口
  15. // 1. 服务端发起认证请求, 获取到token
  16. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  17. $getVerifyTokenRequest = new cloudauth\GetVerifyTokenRequest();
  18. $getVerifyTokenRequest->setBiz($biz);
  19. $getVerifyTokenRequest->setTicketId($ticketId);
  20. try {
  21. $response = $client->getAcsResponse($getVerifyTokenRequest);
  22. $token = $response->Data->VerifyToken->Token;
  23. } catch (Exception $e) {
  24. print $e->getTrace();
  25. }
  26. // 2. 用token提交认证材料
  27. // SubmitMaterials接口文档:https://help.aliyun.com/document_detail/58176.html
  28. $submitRequest = new cloudauth\SubmitMaterialsRequest();
  29. $submitRequest->setVerifyToken($token);
  30. // 若使用base64上传图片, 需要设置请求方法为POST
  31. $submitRequest->setMethod("POST");
  32. $identificationNumber = array("MaterialType" => "IdentificationNumber", "Value" => "330110201711110101");
  33. $name = array("MaterialType" => "Name", "Value" => "张三");
  34. $facePic = array("MaterialType" => "FacePic", "Value" => "base64://iVBORw0KGgoA..."); // base64方式上传图片, 格式为base64://<图片base64字符串>, 其中图片base64字符串需要去掉头部描述(如"data:image/png;base64,"), 并请注意控制单个接口请求的Body在8M以内
  35. $idCardFrontPic = array("MaterialType" => "IdCardFrontPic", "Value" => "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg");// http方式上传图片, 此http地址须可公网访问
  36. $idCardBackPic = array("MaterialType" => "IdCardBackPic", "Value" => "oss://verify-img:715559d76a40774OSS.JPG");// oss方式上传图片, 此oss文件地址须可公开访问
  37. $verifyMaterials = array($identificationNumber, $name, $facePic, $idCardFrontPic, $idCardBackPic);
  38. $submitRequest->setMaterials($verifyMaterials);
  39. try {
  40. $SubmitMaterialsResponse = $client->getAcsResponse($submitRequest);
  41. // 通常SubmitMaterials接口会同步返回认证结果,但是考虑到内部服务超时等情况,接口无法等到最终结果,会返回认证中状态, 此时需要使用GetStatus接口轮询。
  42. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  43. // 后续业务处理
  44. } catch (ServerException $e) {
  45. print $e->getMessage();
  46. } catch (ClientException $e) {
  47. print $e->getMessage();
  48. }

人脸验证示例

人脸比对验证

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. use Cloudauth\Request\V20171117 as cloudauth;
  4. // 创建DefaultAcsClient实例并初始化
  5. $iClientProfile = DefaultProfile::getProfile(
  6. "cn-hangzhou", // 默认
  7. "YourAccessKeyID", // 您的Access Key ID
  8. "YourAccessKeySecret"); // 您的Access Key Secret
  9. $iClientProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "Cloudauth", "cloudauth.aliyuncs.com");
  10. $client = new DefaultAcsClient($iClientProfile);
  11. // 创建API请求并设置参数
  12. // CompareFaces接口文档:https://help.aliyun.com/document_detail/59317.html
  13. $request = new cloudauth\CompareFacesRequest();
  14. // 若使用base64上传图片, 需要设置请求方法为POST
  15. $request->setMethod("POST");
  16. $request->setSourceImageType("FacePic");
  17. $request->setSourceImageValue("base64://iVBORw0KGgoA..."); // base64方式上传图片, 格式为base64://<图片base64字符串>, 其中图片base64字符串需要去掉头部描述(如"data:image/png;base64,"), 并请注意控制单个接口请求的Body在8M以内
  18. $request->setTargetImageType("FacePic");// 若为身份证芯片照则传"IDPic"
  19. $request->setTargetImageValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg");// http方式上传图片, 此http地址须可公网访问
  20. // 发起请求并处理异常
  21. try {
  22. $response = $client->getAcsResponse($request);
  23. // 后续业务处理
  24. } catch (ServerException $e) {
  25. print $e->getMessage();
  26. } catch (ClientException $e) {
  27. print $e->getMessage();
  28. }

附录

生成 GUID

  1. <?php
  2. function guid(){
  3. if (function_exists('com_create_guid')){
  4. return com_create_guid();
  5. }else{
  6. mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
  7. $charid = strtoupper(md5(uniqid(rand(), true)));
  8. $hyphen = chr(45);// "-"
  9. $uuid = chr(123)// "{"
  10. .substr($charid, 0, 8).$hyphen
  11. .substr($charid, 8, 4).$hyphen
  12. .substr($charid,12, 4).$hyphen
  13. .substr($charid,16, 4).$hyphen
  14. .substr($charid,20,12)
  15. .chr(125);// "}"
  16. return $uuid;
  17. }
  18. }
本文导读目录