mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-02-17 21:56:28 +08:00
🆕 #1527 微信小程序增加OCR身份证识别和银行卡识别等接口
This commit is contained in:
@@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.api;
|
||||
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
||||
import me.chanjar.weixin.common.api.WxOcrService;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.common.service.WxService;
|
||||
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
|
||||
@@ -288,4 +289,10 @@ public interface WxMaService extends WxService {
|
||||
*/
|
||||
WxMaLiveGoodsService getLiveGoodsService();
|
||||
|
||||
/**
|
||||
* 获取ocr实现接口服务对象
|
||||
*
|
||||
* @return 。
|
||||
*/
|
||||
WxOcrService getOcrService();
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.common.WxType;
|
||||
import me.chanjar.weixin.common.api.WxOcrService;
|
||||
import me.chanjar.weixin.common.bean.WxAccessToken;
|
||||
import me.chanjar.weixin.common.error.WxError;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
@@ -57,6 +58,7 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
|
||||
private final WxMaCloudService cloudService = new WxMaCloudServiceImpl(this);
|
||||
private final WxMaLiveService liveService = new WxMaLiveServiceImpl(this);
|
||||
private final WxMaLiveGoodsService liveGoodsService = new WxMaLiveGoodsServiceImpl(this);
|
||||
private final WxOcrService ocrService = new WxMaOcrServiceImpl(this);
|
||||
|
||||
private int retrySleepMillis = 1000;
|
||||
private int maxRetryTimes = 5;
|
||||
@@ -401,4 +403,9 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
|
||||
return this.liveGoodsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrService getOcrService() {
|
||||
return this.ocrService;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
package cn.binarywang.wx.miniapp.api.impl;
|
||||
|
||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import me.chanjar.weixin.common.api.WxOcrService;
|
||||
import me.chanjar.weixin.common.bean.ocr.*;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.util.requestexecuter.ocr.OcrDiscernRequestExecutor;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* ocr 接口实现.
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
* @date 2019-06-22
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class WxMaOcrServiceImpl implements WxOcrService {
|
||||
private static final String IDCARD = "https://api.weixin.qq.com/cv/ocr/idcard?img_url=%s";
|
||||
private static final String FILEIDCARD = "https://api.weixin.qq.com/cv/ocr/idcard";
|
||||
private static final String BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard?img_url=%s";
|
||||
private static final String FILE_BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard";
|
||||
private static final String DRIVING = "https://api.weixin.qq.com/cv/ocr/driving?img_url=%s";
|
||||
private static final String FILE_DRIVING = "https://api.weixin.qq.com/cv/ocr/driving";
|
||||
private static final String DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense?img_url=%s";
|
||||
private static final String FILE_DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense";
|
||||
private static final String BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense?img_url=%s";
|
||||
private static final String FILE_BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense";
|
||||
private static final String COMM = "https://api.weixin.qq.com/cv/ocr/comm?img_url=%s";
|
||||
private static final String FILE_COMM = "https://api.weixin.qq.com/cv/ocr/comm";
|
||||
|
||||
private final WxMaService mainService;
|
||||
|
||||
@Override
|
||||
public WxOcrIdCardResult idCard(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(IDCARD, imgUrl), null);
|
||||
return WxOcrIdCardResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrIdCardResult idCard(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILEIDCARD, imgFile);
|
||||
return WxOcrIdCardResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrBankCardResult bankCard(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(BANK_CARD, imgUrl), null);
|
||||
return WxOcrBankCardResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrBankCardResult bankCard(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILE_BANK_CARD, imgFile);
|
||||
return WxOcrBankCardResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrDrivingResult driving(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(DRIVING, imgUrl), null);
|
||||
return WxOcrDrivingResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrDrivingResult driving(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILE_DRIVING, imgFile);
|
||||
return WxOcrDrivingResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(DRIVING_LICENSE, imgUrl), null);
|
||||
return WxOcrDrivingLicenseResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILE_DRIVING_LICENSE, imgFile);
|
||||
return WxOcrDrivingLicenseResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(BIZ_LICENSE, imgUrl), null);
|
||||
return WxOcrBizLicenseResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILE_BIZ_LICENSE, imgFile);
|
||||
return WxOcrBizLicenseResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrCommResult comm(String imgUrl) throws WxErrorException {
|
||||
try {
|
||||
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// ignore cannot happen
|
||||
}
|
||||
|
||||
final String result = this.mainService.get(String.format(COMM, imgUrl), null);
|
||||
return WxOcrCommResult.fromJson(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxOcrCommResult comm(File imgFile) throws WxErrorException {
|
||||
String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()),
|
||||
FILE_COMM, imgFile);
|
||||
return WxOcrCommResult.fromJson(result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user