Java 阿里云实人认证

阿里云实人认证 java 后台代码 前端请求后台后台返回token和自己创建的ticketId给前端

 @PostMapping("/AliAuthen")
    public ResultModel AliAuthen(){
        //创建DefaultAcsClient实例并初始化
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",             //默认
                "",         //您的Access Key ID
                "");    //您的Access Key Secret
        IAcsClient client = new DefaultAcsClient(profile);
        String biz = ""; //您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
        String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
        String token = null; //认证token, 表达一次认证会话
        int statusCode = -1; //-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
//1. 服务端发起认证请求, 获取到token
//GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
        GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
        getVerifyTokenRequest.setBiz(biz);
        getVerifyTokenRequest.setTicketId(ticketId);
        try {
            GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
            token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        Map<String,Object>  map = new HashMap();
        map.put("token",token);
        map.put("ticketId",ticketId);
        return ResultModel.success(map);
    }

前端认证通知结果请求后台(也可以不请求,建议以后台的返回认证结果为主)

@PostMapping("/getAliResult")
    public ResultModel getAliResult(Long userId,String ticketId,HttpServletRequest request) throws IOException {
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",             //默认
                "",         //您的Access Key ID
                "");    //您的Access Key Secret
        IAcsClient client = new DefaultAcsClient(profile);

        String biz = ""; //您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
      //  String ticketId = UUID.randomUUID().toString(); //认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
        int statusCode = -1;
        GetStatusRequest getStatusRequest = new GetStatusRequest();
        getStatusRequest.setBiz(biz);
        getStatusRequest.setTicketId(ticketId);
        try {
            GetStatusResponse response = client.getAcsResponse(getStatusRequest);
            statusCode = response.getData().getStatusCode();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
//7. 服务端获取认证资料
//GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
        GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
        getMaterialsRequest.setBiz(biz);
        getMaterialsRequest.setTicketId(ticketId);
        if( 1 == statusCode || 2 == statusCode ) { //认证通过or认证不通过
            try {
                if(1 == statusCode){
                    GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
                    GetMaterialsResponse.Data data = response.getData();
                    //身份证正反面图片 阿里云只会暂时保管,几小时就会失效,所以需要的把图片下载 
                     下来
                    String idCardFrontPic = data.getIdCardFrontPic()";
                    String idCardBackPic = data.getIdCardBackPic()";
                    String picturefront = getPicture(request,idCardFrontPic );
                    String pictureback =  getPicture(request,idCardBackPic );
                   
                }
                if(2== statusCode){
                    return   ResultModel.error(false);
                }
                //后续业务处理
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }
        return ResultModel.success(true);
    }

引用的pom

<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-cloudauth</artifactId>
            <version>1.3.1</version>
        </dependency>

 下载阿里云图片工具类

 //阿里云图片保存到本地
 public static String getPicture(HttpServletRequest request,String urlHttp){
        String name=System.currentTimeMillis() + ".jpg";
        String na = "/upimgs/" + name;
        String filename = request.getServletContext().getRealPath("/WEB-INF")+na;
        //String file = "D://aa" + "/" + new Date().getTime() + ".jpg";
        try {
            URL url = new URL(urlHttp);
            BufferedImage img = ImageIO.read(url);
            ImageIO.write(img, "jpg", new File(filename));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return filename;
    }

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值