一、分析
H5人脸识别大致分为两步
- 获取H5人脸识别链接
- 查询识别结果
所以最外层的方法就有两个
1. 创建订单(获取H5人脸识别链接)
2. 查询订单(查询识别结果)
二、定义方法
package com.starter.example;
public class FaceRecognitionService {
public void createOrder() {
}
public void queryOrder() {
}
}
三、createOrder()定义参数
1.姓名、身份证号
创建订单首先姓名、身份证号,因为通道需要通过姓名身份证号和当前人员做对比
2. 通道编号
首先在每个通道上开通账户之后,都会提供一些参数,如appId、appKey之类的,但是我们这里不能直接把这些参数作为参数,因为我们的starter定位是支持多个通道,而每个通道的参数数量可能不一样。所以抽象出来一个通道编号,一个通道编号可以对应不通的通道,或相同通道的不同参数。然后通过通道编号去拿通道的信息。
以通道信息配置在数据库为例,大致如下
ID | 通道编号 | 通道类型 | app_id | app_key |
---|
1 | TD00001 | tencent | appid00001 | appkey00001 |
1 | TD00002 | alibaba | appid00002 | appkey00002 |
3.订单编号
既然是创建订单,那么肯定有订单号,要通过订单号去查询订单
4.回调url
认证完成之后会回调一个接口,返回认证结果
四、createOrder()定义返回值
返回值是订单编号和H5链接,如果是其他错误,直接抛异常
五、queryOrder()定义参数
1.订单编号
没说的,查询订单肯定需要订单编号
2.通道编号
要去哪个通道查,需要通道编号
六、queryOrder()定义返回值
返回订单的状态和此订单是否收费,因为订单只有认证才收费,如果创建了订单,不去认证,是不收费的
五、总结
综上所诉,最终的方法为
public class FaceRecognitionService {
/**
* 创建订单
* @param orderNo
* @param passNo
* @param name
* @param idNo
* @param callbackUrl
* @return
*/
public CreateOrderBo createOrder(String orderNo, String passNo, String name, String idNo, String callbackUrl) {
return null;
}
/**
* 查询订单
* @param orderNo
* @param passNo
* @return
*/
public QueryOrderBo queryOrder(String orderNo, String passNo) {
return null;
}
}
@Data
public class CreateOrderBo {
private String orderNo;// 订单编号
private String h5Url;// 认证地址
}
@Data
public class QueryOrderBo {
private boolean isPass;// 认证是否通过
private boolean isCharge;// 是否收费
}