全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 ET大脑 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件

PHP SDK

更新时间:2018-08-10 21:46:07

获取地址

  • 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'; //参见https://help.aliyun.com/document_detail/64081.html#guid
  4. use Cloudauth\Request\V20180504 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; //token默认30分钟时效,每次发起认证时都必须实时获取
  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. }
  58. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPManual认证方案

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

RPBioID认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php'; //参见https://help.aliyun.com/document_detail/64081.html#guid
  4. use Cloudauth\Request\V20180504 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 = "YourRPBioIDBiz"; //您在控制台上创建的、采用RPBioID认证方案的认证场景标识, 创建方法: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. //若需要binding图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  25. $getVerifyTokenRequest->setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  26. try {
  27. $response = $client->getAcsResponse($getVerifyTokenRequest);
  28. $token = $response->Data->VerifyToken->Token; //token默认30分钟时效,每次发起认证时都必须实时获取
  29. } catch (Exception $e) {
  30. print $e->getTrace();
  31. }
  32. //2. 服务端将token传递给无线客户端
  33. //3. 无线客户端用token调起无线认证SDK
  34. //4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  35. //5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  36. //6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  37. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  38. $getStatusRequest = new cloudauth\GetStatusRequest();
  39. $getStatusRequest->setBiz($biz);
  40. $getStatusRequest->setTicketId($ticketId);
  41. try {
  42. $response = $client->getAcsResponse($getStatusRequest);
  43. $statusCode = $response->Data->StatusCode;
  44. } catch (ServerException $e) {
  45. print $e->getMessage();
  46. } catch (ClientException $e) {
  47. print $e->getMessage();
  48. }
  49. //7. 服务端获取认证资料
  50. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  51. $getMaterialsRequest = new cloudauth\GetMaterialsRequest();
  52. $getMaterialsRequest->setBiz($biz);
  53. $getMaterialsRequest->setTicketId($ticketId);
  54. if (1 == $statusCode or 2 == $statusCode) { //认证通过or认证不通过
  55. try {
  56. $response = $client->getAcsResponse($getMaterialsRequest);
  57. } catch (ServerException $e) {
  58. print $e->getMessage();
  59. } catch (ClientException $e) {
  60. print $e->getMessage();
  61. }
  62. }
  63. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPBioOnlyPro认证方案

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

RPBioOnly认证方案

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

RPH5BioOnly认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php'; //参见https://help.aliyun.com/document_detail/64081.html#guid
  4. use Cloudauth\Request\V20180504 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 = "YourRPH5BioOnlyBiz"; //您在控制台上创建的、采用RPH5BioOnly认证方案的认证场景标识, 创建方法: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. //若需要binding图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  25. $getVerifyTokenRequest->setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  26. try {
  27. $response = $client->getAcsResponse($getVerifyTokenRequest);
  28. $token = $response->Data->VerifyToken->Token; //token默认30分钟时效,每次发起认证时都必须实时获取
  29. } catch (Exception $e) {
  30. print $e->getTrace();
  31. }
  32. //2. 服务端将认证URL(带token)传递给H5前端
  33. //3. H5前端跳转认证URL
  34. //4. 用户按照认证H5流程页面的指引,提交认证资料
  35. //5. 认证流程结束跳转指定的重定向URL
  36. //6. 服务端查询认证状态(建议以服务端调接口确认的为准)
  37. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  38. $getStatusRequest = new cloudauth\GetStatusRequest();
  39. $getStatusRequest->setBiz($biz);
  40. $getStatusRequest->setTicketId($ticketId);
  41. try {
  42. $response = $client->getAcsResponse($getStatusRequest);
  43. $statusCode = $response->Data->StatusCode;
  44. } catch (ServerException $e) {
  45. print $e->getMessage();
  46. } catch (ClientException $e) {
  47. print $e->getMessage();
  48. }
  49. //7. 服务端获取认证资料
  50. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  51. $getMaterialsRequest = new cloudauth\GetMaterialsRequest();
  52. $getMaterialsRequest->setBiz($biz);
  53. $getMaterialsRequest->setTicketId($ticketId);
  54. if (1 == $statusCode or 2 == $statusCode) { //认证通过or认证不通过
  55. try {
  56. $response = $client->getAcsResponse($getMaterialsRequest);
  57. } catch (ServerException $e) {
  58. print $e->getMessage();
  59. } catch (ClientException $e) {
  60. print $e->getMessage();
  61. }
  62. }
  63. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPMin认证方案

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. include_once 'Guid.php'; //参见https://help.aliyun.com/document_detail/64081.html#guid
  4. use Cloudauth\Request\V20180504 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; //token默认30分钟时效,每次发起认证时都必须实时获取
  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. //传入图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  35. $facePic = array("MaterialType" => "FacePic", "Value" => "base64://iVBORw0KGgoA..."); //base64方式上传图片, 格式为"base64://图片base64字符串", 以"base64://"开头且图片base64字符串去掉头部描述(如"data:image/png;base64,"), 并注意控制接口请求的Body在8M以内
  36. $idCardFrontPic = array("MaterialType" => "IdCardFrontPic", "Value" => "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); //http方式上传图片, 此http地址须可公网访问
  37. $idCardBackPic = array("MaterialType" => "IdCardBackPic", "Value" => "oss://verify-img:715559d76a40774OSS.JPG"); //oss方式上传图片, 此oss文件地址须可公开访问
  38. $verifyMaterials = array($identificationNumber, $name, $facePic, $idCardFrontPic, $idCardBackPic);
  39. $submitRequest->setMaterials($verifyMaterials);
  40. try {
  41. $SubmitMaterialsResponse = $client->getAcsResponse($submitRequest);
  42. //由于审核需要时间,SubmitMaterials接口并不保证同步返回认证结果,可能会返回认证中状态, 此时需要使用GetStatus接口轮询认证结果。
  43. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  44. //$getStatusRequest = new cloudauth\GetStatusRequest();
  45. //$getStatusRequest->setBiz($biz);
  46. //$getStatusRequest->setTicketId($ticketId);
  47. //$response = $client->getAcsResponse($getStatusRequest);
  48. //$statusCode = $response->Data->StatusCode;
  49. //后续业务处理
  50. } catch (ServerException $e) {
  51. print $e->getMessage();
  52. } catch (ClientException $e) {
  53. print $e->getMessage();
  54. }
  55. //常见问题:https://help.aliyun.com/document_detail/57640.html

人脸验证示例

人脸比对验证

  1. <?php
  2. include_once './aliyun-php-sdk-core/Config.php';
  3. use Cloudauth\Request\V20180504 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. //传入图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  17. $request->setSourceImageType("FacePic");
  18. $request->setSourceImageValue("base64://iVBORw0KGgoA..."); //base64方式上传图片, 格式为"base64://图片base64字符串", 以"base64://"开头且图片base64字符串去掉头部描述(如"data:image/png;base64,"), 并注意控制接口请求的Body在8M以内
  19. $request->setTargetImageType("FacePic"); //若为身份证芯片照则传"IDPic"
  20. $request->setTargetImageValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); //http方式上传图片, 此http地址须可公网访问
  21. //发起请求并处理异常
  22. try {
  23. $response = $client->getAcsResponse($request);
  24. // 后续业务处理
  25. } catch (ServerException $e) {
  26. print $e->getMessage();
  27. } catch (ClientException $e) {
  28. print $e->getMessage();
  29. }
  30. //常见问题:https://help.aliyun.com/document_detail/57640.html

附录

生成 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. }
本文导读目录