大家好,我是小悟
作为开发者,当然希望开发的系统,对使用者能够更友好,使用的越简单,越方便越好,缩短工作时间,提高效率。也可以说是一种使用体验,体验效果越好那当然说明系统越棒了。
二级商户进件的时候,需要提交的资料不少,有一个繁琐的地方就是,不管选择哪种主体类型,都需要上传身份证人像面、身份证国徽面、身份证姓名、身份证号码、身份证居住地址、身份证开始时间和身份证结束时间这些要素。
如果主体类型是企业或者个体户,还需要上传营业执照、营业执照注册号、商户名称和经营者/法定代表人姓名这几个要素。
除了照片是需要上传外,其他要素都是手动填写的,既容易出错又浪费时间。解决问题的方法就是自动识别。
为了提高进件效率,在进件提交功能上做了优化,优化内容如下。
1、在上传身份证人像面后,自动识别出身份证姓名、身份证号码和身份证居住地址并自动填充显示,无需手动填写。
2、在上传身份证国徽面后,自动识别出身份证开始时间和身份证结束时间并自动填充显示,无需手动填写。
3、在上传营业执照后,自动识别出营业执照注册号、商户名称和经营者/法定代表人姓名并自动填充显示,无需手动填写。
通过后台设置参数,随时修改,立即生效。
/**
* 身份证正面自动识别
* @param imgFile 图片二进制数据的base64编码/图片url
*/
public static IdCardFaceResult ocrIdCardFace(String imgFile, String appCode) {
String host = "https://cardnumber.market.alicloudapi.com";
String path = "/rest/160601/ocr/ocr_idcard.json";
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appCode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
// 对图像进行base64编码
String imgBase64 = img_base64(imgFile);
//configure配置
JSONObject configObj = new JSONObject();
configObj.put("side", "face");
String config_str = configObj.toString();
// 拼装请求body的json字符串
JSONObject requestObj = new JSONObject();
requestObj.put("image", imgBase64);
if(configObj.size() > 0) {
requestObj.put("configure", config_str);
}
String bodys = requestObj.toString();
try {
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
int stat = response.getStatusLine().getStatusCode();
if(stat != 200){
System.out.println("Http code: " + stat);
System.out.println("http header error msg: "+ response.getFirstHeader("X-Ca-Error-Message"));
System.out.println("Http body error msg:" + EntityUtils.toString(response.getEntity()));
IdCardFaceResult result = new IdCardFaceResult();
result.setSuccess(false);
return result;
}
String res = EntityUtils.toString(response.getEntity());
IdCardFaceResult result = JSON.parseObject(res, IdCardFaceResult.class);
System.out.println(JSON.toJSONString(result));
return result;
} catch (Exception e) {
e.printStackTrace();
throw new BaseException("请稍后再试");
}
}
/**
* 身份证反面自动识别
* @param imgFile 图片二进制数据的base64编码/图片url
*/
public static IdCardBackResult ocrIdCardBack(String imgFile, String appCode) {
String host = "https://cardnumber.market.alicloudapi.com";
String path = "/rest/160601/ocr/ocr_idcard.json";
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appCode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
// 对图像进行base64编码
String imgBase64 = img_base64(imgFile);
//configure配置
JSONObject configObj = new JSONObject();
configObj.put("side", "back");
String config_str = configObj.toString();
// 拼装请求body的json字符串
JSONObject requestObj = new JSONObject();
requestObj.put("image", imgBase64);
if(configObj.size() > 0) {
requestObj.put("configure", config_str);
}
String bodys = requestObj.toString();
try {
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
int stat = response.getStatusLine().getStatusCode();
if(stat != 200){
System.out.println("Http code: " + stat);
System.out.println("http header error msg: "+ response.getFirstHeader("X-Ca-Error-Message"));
System.out.println("Http body error msg:" + EntityUtils.toString(response.getEntity()));
IdCardBackResult result = new IdCardBackResult();
result.setSuccess(false);
return result;
}
String res = EntityUtils.toString(response.getEntity());
IdCardBackResult result = JSON.parseObject(res, IdCardBackResult.class);
System.out.println(JSON.toJSONString(result));
return result;
} catch (Exception e) {
e.printStackTrace();
throw new BaseException("请稍后再试");
}
}
/**
* 营业执照自动识别 图片二进制数据的base64编码/图片url
* @param imgFile
*/
public static BusinessLicenseResult ocrBusinessLicense(String imgFile, String appCode) {
String host = "https://bizlicense.market.alicloudapi.com";
String path = "/rest/160601/ocr/ocr_business_license.json";
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appCode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
// 对图像进行base64编码
String imgBase64 = img_base64(imgFile);
// 拼装请求body的json字符串
JSONObject requestObj = new JSONObject();
requestObj.put("image", imgBase64);
String bodys = requestObj.toString();
try {
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
int stat = response.getStatusLine().getStatusCode();
if(stat != 200){
System.out.println("Http code: " + stat);
System.out.println("http header error msg: "+ response.getFirstHeader("X-Ca-Error-Message"));
System.out.println("Http body error msg:" + EntityUtils.toString(response.getEntity()));
BusinessLicenseResult result = new BusinessLicenseResult();
result.setSuccess(false);
return result;
}
String res = EntityUtils.toString(response.getEntity());
BusinessLicenseResult result = JSON.parseObject(res, BusinessLicenseResult.class);
System.out.println(JSON.toJSONString(result));
return result;
} catch (Exception e) {
e.printStackTrace();
throw new BaseException("请稍后再试");
}
}
上传身份证、营业执照自动识别相关信息功能已实现,节省时间,减少手动填写可能出现的错误,整体增强系统使用体验和提高系统进件效率。
收付通在手,生意你有。
公众号【悟空码字】后台回复【收付通升级】获取账号密码。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
标签:自动识别,进件,result,身份证,put,new,电商,response,String From: https://blog.51cto.com/wukongmazi/6116902