全部产品
阿里云办公

Java SDK

获取地址

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

若您使用的是 aliyun-java-sdk-core 4.0.0~4.0.2 版本,调用 https 接口时需要 profile 额外加一句:profile.getHttpClientConfig().setIgnoreSSLCerts(true);

安装说明

方法1:使用 Maven(推荐)

如果您使用 Maven 管理 Java 项目,可以通过在pom.xml文件中添加 Maven 依赖:

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-core</artifactId>
  4. <version>4.1.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.aliyun</groupId>
  8. <artifactId>aliyun-java-sdk-cloudauth</artifactId>
  9. <version>1.1.5</version>
  10. </dependency>

注意:version 的值以 SDK 获取地址中的最新版本为准。

方法2:在集成开发环境(IDE)中导入 jar 文件

Eclipse 安装

  1. 将下载的 aliyun-java-sdk-xxx.jar 文件复制到您的项目文件夹中。
  2. 在 Eclipse 中打开您的项目,右键单击该项目,单击 Properties。
  3. 在弹出的对话框中,单击 Java Build Path > Libraries > Add JARs 添加下载的 JAR 文件。
  4. 单击 Apply and Close。

IntelliJ 安装

  1. 将下载的 aliyun-java-sdk-xxx.jar 文件复制到您的项目文件夹中。
  2. 在 IntelliJ 中打开您的项目,在菜单栏中单击 File > Project Structure。
  3. 单击 Apply,然后单击 OK。

使用示例

RPBasic认证方案

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPBasicBiz"; //您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; //认证token, 表达一次认证会话
  10. int statusCode = -1; //-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. //1. 服务端发起认证请求, 获取到token
  12. //GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. try {
  17. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  18. token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
  19. } catch (ServerException e) {
  20. e.printStackTrace();
  21. } catch (ClientException e) {
  22. e.printStackTrace();
  23. }
  24. //2. 服务端将token传递给无线客户端
  25. //3. 无线客户端用token调起无线认证SDK
  26. //4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  27. //5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  28. //6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  29. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  30. GetStatusRequest getStatusRequest = new GetStatusRequest();
  31. getStatusRequest.setBiz(biz);
  32. getStatusRequest.setTicketId(ticketId);
  33. try {
  34. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  35. statusCode = response.getData().getStatusCode();
  36. } catch (ServerException e) {
  37. e.printStackTrace();
  38. } catch (ClientException e) {
  39. e.printStackTrace();
  40. }
  41. //7. 服务端获取认证资料
  42. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  43. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  44. getMaterialsRequest.setBiz(biz);
  45. getMaterialsRequest.setTicketId(ticketId);
  46. if( 1 == statusCode || 2 == statusCode ) { //认证通过or认证不通过
  47. try {
  48. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  49. //后续业务处理
  50. } catch (ServerException e) {
  51. e.printStackTrace();
  52. } catch (ClientException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPManual认证方案

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

RPBioID认证方案

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPBioIDBiz"; //您在控制台上创建的、采用RPBioID认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; //认证token, 表达一次认证会话
  10. int statusCode = -1; //-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. //1. 服务端发起认证请求, 获取到token
  12. //GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. getVerifyTokenRequest.setMethod(MethodType.POST);
  17. //通过binding参数传入业务已经采集的认证资料,其中姓名、身份证号为必要字段
  18. //若需要binding图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  19. getVerifyTokenRequest.setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  20. try {
  21. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  22. token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
  23. } catch (ServerException e) {
  24. e.printStackTrace();
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }
  28. //2. 服务端将token传递给无线客户端
  29. //3. 无线客户端用token调起无线认证SDK
  30. //4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  31. //5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  32. //6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  33. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  34. GetStatusRequest getStatusRequest = new GetStatusRequest();
  35. getStatusRequest.setBiz(biz);
  36. getStatusRequest.setTicketId(ticketId);
  37. try {
  38. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  39. statusCode = response.getData().getStatusCode();
  40. } catch (ServerException e) {
  41. e.printStackTrace();
  42. } catch (ClientException e) {
  43. e.printStackTrace();
  44. }
  45. //7. 服务端获取认证资料
  46. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  47. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  48. getMaterialsRequest.setBiz(biz);
  49. getMaterialsRequest.setTicketId(ticketId);
  50. if( 1 == statusCode || 2 == statusCode ) { //认证通过or认证不通过
  51. try {
  52. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  53. //后续业务处理
  54. } catch (ServerException e) {
  55. e.printStackTrace();
  56. } catch (ClientException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPBioOnlyPro认证方案

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

RPBioOnly认证方案

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

FVBioOnly认证方案

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourFVBioOnlyBiz"; //您在控制台上创建的、采用FVBioOnly认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; //认证token, 表达一次认证会话
  10. int statusCode = -1; //-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. //1. 服务端发起认证请求, 获取到token
  12. //GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. getVerifyTokenRequest.setMethod(MethodType.POST);
  17. //通过binding参数传入业务已经采集的认证资料,其中人像留底照片为必要字段
  18. //请控制单张图片大小在 2M 内,避免拉取超时
  19. getVerifyTokenRequest.setBinding("{\"FaceRetainedPic\": \"http://...\"}");
  20. try {
  21. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  22. token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
  23. } catch (ServerException e) {
  24. e.printStackTrace();
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }
  28. //2. 服务端将token传递给无线客户端
  29. //3. 无线客户端用token调起无线认证SDK
  30. //4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  31. //5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  32. //6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  33. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  34. GetStatusRequest getStatusRequest = new GetStatusRequest();
  35. getStatusRequest.setBiz(biz);
  36. getStatusRequest.setTicketId(ticketId);
  37. try {
  38. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  39. statusCode = response.getData().getStatusCode();
  40. } catch (ServerException e) {
  41. e.printStackTrace();
  42. } catch (ClientException e) {
  43. e.printStackTrace();
  44. }
  45. //7. 服务端获取认证资料
  46. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  47. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  48. getMaterialsRequest.setBiz(biz);
  49. getMaterialsRequest.setTicketId(ticketId);
  50. if( 1 == statusCode || 2 == statusCode ) { //认证通过or认证不通过
  51. try {
  52. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  53. //后续业务处理
  54. } catch (ServerException e) {
  55. e.printStackTrace();
  56. } catch (ClientException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPH5BioOnly认证方案

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPH5BioOnlyBiz"; //您在控制台上创建的、采用RPH5BioOnly认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; //认证token, 表达一次认证会话
  10. int statusCode = -1; //-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. //1. 服务端发起认证请求, 获取到token
  12. //GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. getVerifyTokenRequest.setMethod(MethodType.POST);
  17. //通过binding参数传入业务已经采集的认证资料,其中姓名、身份证号为必要字段
  18. //若需要binding图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  19. getVerifyTokenRequest.setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  20. try {
  21. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  22. token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
  23. } catch (ServerException e) {
  24. e.printStackTrace();
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }
  28. //2. 服务端将认证URL(带token)传递给H5前端
  29. //3. H5前端跳转认证URL
  30. //4. 用户按照认证H5流程页面的指引,提交认证资料
  31. //5. 认证流程结束跳转指定的重定向URL
  32. //6. 服务端查询认证状态(建议以服务端调接口确认的为准)
  33. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  34. GetStatusRequest getStatusRequest = new GetStatusRequest();
  35. getStatusRequest.setBiz(biz);
  36. getStatusRequest.setTicketId(ticketId);
  37. try {
  38. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  39. statusCode = response.getData().getStatusCode();
  40. } catch (ServerException e) {
  41. e.printStackTrace();
  42. } catch (ClientException e) {
  43. e.printStackTrace();
  44. }
  45. //7. 服务端获取认证资料
  46. //GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  47. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  48. getMaterialsRequest.setBiz(biz);
  49. getMaterialsRequest.setTicketId(ticketId);
  50. if( 1 == statusCode || 2 == statusCode ) { //认证通过or认证不通过
  51. try {
  52. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  53. //后续业务处理
  54. } catch (ServerException e) {
  55. e.printStackTrace();
  56. } catch (ClientException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. //常见问题:https://help.aliyun.com/document_detail/57640.html

RPMin认证方案

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPMinBiz"; //您在控制台上创建的、采用RPMin认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; //认证token, 表达一次认证会话
  10. //1. 发起认证请求, 获取到token
  11. //GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  12. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  13. getVerifyTokenRequest.setBiz(biz); //传入采用RPMin认证方案的认证场景标识(biz)
  14. getVerifyTokenRequest.setTicketId(ticketId);
  15. try {
  16. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  17. token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. //2. 用token提交认证材料
  22. //SubmitMaterials接口文档:https://help.aliyun.com/document_detail/58176.html
  23. SubmitMaterialsRequest submitRequest = new SubmitMaterialsRequest();
  24. submitRequest.setVerifyToken(token);
  25. submitRequest.setMethod(MethodType.POST);
  26. //创建要提交的认证材料列表, 请根据 认证方案 中的说明传入相应字段
  27. List<SubmitMaterialsRequest.Material> verifyMaterials = new ArrayList<SubmitMaterialsRequest.Material>();
  28. SubmitMaterialsRequest.Material identificationNumber = new SubmitMaterialsRequest.Material();
  29. identificationNumber.setMaterialType("IdentificationNumber");
  30. identificationNumber.setValue("330110201711110101");
  31. verifyMaterials.add(identificationNumber);
  32. SubmitMaterialsRequest.Material name = new SubmitMaterialsRequest.Material();
  33. name.setMaterialType("Name");
  34. name.setValue("张三");
  35. verifyMaterials.add(name);
  36. //传入图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  37. SubmitMaterialsRequest.Material facePic = new SubmitMaterialsRequest.Material();
  38. facePic.setMaterialType("FacePic");
  39. facePic.setValue("base64://iVBORw0KGgoA..."); //base64方式上传图片, 格式为"base64://图片base64字符串", 以"base64://"开头且图片base64字符串去掉头部描述(如"data:image/png;base64,"), 并注意控制接口请求的Body在8M以内
  40. verifyMaterials.add(facePic);
  41. SubmitMaterialsRequest.Material idCardFrontPic = new SubmitMaterialsRequest.Material();
  42. idCardFrontPic.setMaterialType("IdCardFrontPic");
  43. idCardFrontPic.setValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); //http方式上传图片, 此http地址须可公网访问
  44. verifyMaterials.add(idCardFrontPic);
  45. SubmitMaterialsRequest.Material idCardBackPic = new SubmitMaterialsRequest.Material();
  46. idCardBackPic.setMaterialType("IdCardBackPic");
  47. idCardBackPic.setValue("oss://verify-img:715559d76a40774OSS.JPG"); //oss方式上传图片, 此oss文件地址须可公开访问
  48. verifyMaterials.add(idCardBackPic);
  49. submitRequest.setMaterials(verifyMaterials);
  50. try {
  51. SubmitMaterialsResponse response = client.getAcsResponse(submitRequest);
  52. //由于审核需要时间,SubmitMaterials接口并不保证同步返回认证结果,可能会返回认证中状态, 此时需要使用GetStatus接口轮询认证结果。
  53. //GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  54. //GetStatusRequest getStatusRequest = new GetStatusRequest();
  55. //getStatusRequest.setBiz(biz);
  56. //getStatusRequest.setTicketId(ticketId);
  57. //GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  58. //int statusCode = response.getData().getStatusCode();
  59. //后续业务处理
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. }
  63. //常见问题:https://help.aliyun.com/document_detail/57640.html

人脸比对验证

  1. //创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", //默认
  4. "YourAccessKeyID", //您的Access Key ID
  5. "YourAccessKeySecret"); //您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. //创建API请求并设置参数
  8. //CompareFaces接口文档:https://help.aliyun.com/document_detail/59317.html
  9. CompareFacesRequest request = new CompareFacesRequest();
  10. request.setMethod(MethodType.POST);
  11. //传入图片资料,请控制单张图片大小在 2M 内,避免拉取超时
  12. request.setSourceImageType("FacePic");
  13. request.setSourceImageValue("base64://iVBORw0KGgoA..."); //base64方式上传图片, 格式为"base64://图片base64字符串", 以"base64://"开头且图片base64字符串去掉头部描述(如"data:image/png;base64,"), 并注意控制接口请求的Body在8M以内
  14. request.setTargetImageType("FacePic"); //若为身份证芯片照则传"IDPic"
  15. request.setTargetImageValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); //http方式上传图片, 此http地址须可公网访问
  16. //发起请求并处理异常
  17. try {
  18. CompareFacesResponse response = client.getAcsResponse(request);
  19. //后续业务处理
  20. } catch (ServerException e) {
  21. e.printStackTrace();
  22. } catch (ClientException e) {
  23. e.printStackTrace();
  24. }
  25. //常见问题:https://help.aliyun.com/document_detail/57640.html