diff --git a/spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpServiceAutoConfiguration.java b/spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpServiceAutoConfiguration.java index f46ebf8dc..491d0da58 100644 --- a/spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpServiceAutoConfiguration.java +++ b/spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpServiceAutoConfiguration.java @@ -1,6 +1,7 @@ package com.binarywang.spring.starter.wxjava.mp.config; import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties; +import me.chanjar.weixin.common.api.WxOcrService; import me.chanjar.weixin.mp.api.*; import me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; @@ -176,7 +177,7 @@ public class WxMpServiceAutoConfiguration { @Bean @Deprecated - public WxMpOcrService wxMpOcrService(WxMpService wxMpService) { + public WxOcrService wxMpOcrService(WxMpService wxMpService) { return wxMpService.getOcrService(); } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpOcrService.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxOcrService.java similarity index 67% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpOcrService.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxOcrService.java index f7986d24c..480ed3e95 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpOcrService.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxOcrService.java @@ -1,12 +1,12 @@ -package me.chanjar.weixin.mp.api; +package me.chanjar.weixin.common.api; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBankCardResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBizLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrCommResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrIdCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBankCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBizLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrCommResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrIdCardResult; import java.io.File; @@ -17,7 +17,7 @@ import java.io.File; * @author Binary Wang * @date 2019-06-22 */ -public interface WxMpOcrService { +public interface WxOcrService { /** * 身份证OCR识别接口. @@ -26,7 +26,7 @@ public interface WxMpOcrService { * @return WxMpOcrIdCardResult * @throws WxErrorException . */ - WxMpOcrIdCardResult idCard(String imgUrl) throws WxErrorException; + WxOcrIdCardResult idCard(String imgUrl) throws WxErrorException; /** * 身份证OCR识别接口. @@ -35,7 +35,7 @@ public interface WxMpOcrService { * @return WxMpOcrIdCardResult * @throws WxErrorException . */ - WxMpOcrIdCardResult idCard(File imgFile) throws WxErrorException; + WxOcrIdCardResult idCard(File imgFile) throws WxErrorException; /** * 银行卡OCR识别接口 @@ -44,7 +44,7 @@ public interface WxMpOcrService { * @return WxMpOcrBankCardResult * @throws WxErrorException . */ - WxMpOcrBankCardResult bankCard(String imgUrl) throws WxErrorException; + WxOcrBankCardResult bankCard(String imgUrl) throws WxErrorException; /** * 银行卡OCR识别接口 @@ -53,7 +53,7 @@ public interface WxMpOcrService { * @return WxMpOcrBankCardResult * @throws WxErrorException . */ - WxMpOcrBankCardResult bankCard(File imgFile) throws WxErrorException; + WxOcrBankCardResult bankCard(File imgFile) throws WxErrorException; /** * 行驶证OCR识别接口 @@ -62,7 +62,7 @@ public interface WxMpOcrService { * @return WxMpOcrDrivingResult * @throws WxErrorException . */ - WxMpOcrDrivingResult driving(String imgUrl) throws WxErrorException; + WxOcrDrivingResult driving(String imgUrl) throws WxErrorException; /** * 行驶证OCR识别接口 @@ -71,7 +71,7 @@ public interface WxMpOcrService { * @return WxMpOcrDrivingResult * @throws WxErrorException . */ - WxMpOcrDrivingResult driving(File imgFile) throws WxErrorException; + WxOcrDrivingResult driving(File imgFile) throws WxErrorException; /** * 驾驶证OCR识别接口 @@ -80,7 +80,7 @@ public interface WxMpOcrService { * @return WxMpOcrDrivingLicenseResult * @throws WxErrorException . */ - WxMpOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException; + WxOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException; /** * 驾驶证OCR识别接口 @@ -89,7 +89,7 @@ public interface WxMpOcrService { * @return WxMpOcrDrivingLicenseResult * @throws WxErrorException . */ - WxMpOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException; + WxOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException; /** * 营业执照OCR识别接口 @@ -98,7 +98,7 @@ public interface WxMpOcrService { * @return WxMpOcrBizLicenseResult * @throws WxErrorException . */ - WxMpOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException; + WxOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException; /** * 营业执照OCR识别接口 @@ -107,7 +107,7 @@ public interface WxMpOcrService { * @return WxMpOcrBizLicenseResult * @throws WxErrorException . */ - WxMpOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException; + WxOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException; /** * 通用印刷体OCR识别接口 @@ -117,7 +117,7 @@ public interface WxMpOcrService { * @return WxMpOcrCommResult * @throws WxErrorException . */ - WxMpOcrCommResult comm(String imgUrl) throws WxErrorException; + WxOcrCommResult comm(String imgUrl) throws WxErrorException; /** * 通用印刷体OCR识别接口 @@ -127,5 +127,5 @@ public interface WxMpOcrService { * @return WxMpOcrCommResult * @throws WxErrorException . */ - WxMpOcrCommResult comm(File imgFile) throws WxErrorException; + WxOcrCommResult comm(File imgFile) throws WxErrorException; } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBankCardResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBankCardResult.java new file mode 100644 index 000000000..d5ff0b901 --- /dev/null +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBankCardResult.java @@ -0,0 +1,29 @@ +package me.chanjar.weixin.common.bean.ocr; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; + +import java.io.Serializable; + +/** + * 银行卡OCR识别结果 + * + * @author Theo Nie + */ +@Data +public class WxOcrBankCardResult implements Serializable { + + private static final long serialVersionUID = 554136620394204143L; + @SerializedName("number") + private String number; + + @Override + public String toString() { + return WxGsonBuilder.create().toJson(this); + } + + public static WxOcrBankCardResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrBankCardResult.class); + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBizLicenseResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBizLicenseResult.java similarity index 79% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBizLicenseResult.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBizLicenseResult.java index aa97fc83f..2e83443e9 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBizLicenseResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrBizLicenseResult.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -10,7 +10,7 @@ import java.io.Serializable; * @author Theo Nie */ @Data -public class WxMpOcrBizLicenseResult implements Serializable { +public class WxOcrBizLicenseResult implements Serializable { private static final long serialVersionUID = -5007671093920178291L; /** @@ -82,26 +82,27 @@ public class WxMpOcrBizLicenseResult implements Serializable { * 图片大小 */ @SerializedName("img_size") - private WxMpOcrImgSize imgSize; + private WxOcrImgSize imgSize; - public static WxMpOcrBizLicenseResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrBizLicenseResult.class); + public static WxOcrBizLicenseResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrBizLicenseResult.class); } @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } @Data public static class CertPosition implements Serializable { private static final long serialVersionUID = 290286813344131863L; + @SerializedName("pos") - private WxMpOcrPos pos; + private WxOcrPos pos; @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrCommResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrCommResult.java similarity index 58% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrCommResult.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrCommResult.java index cc391bdfe..5f56d16e3 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrCommResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrCommResult.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; import java.util.List; @@ -11,35 +11,35 @@ import java.util.List; * @author Theo Nie */ @Data -public class WxMpOcrCommResult implements Serializable { +public class WxOcrCommResult implements Serializable { private static final long serialVersionUID = 455833771627756440L; @SerializedName("img_size") - private WxMpOcrImgSize imgSize; + private WxOcrImgSize imgSize; @SerializedName("items") private List items; - public static WxMpOcrCommResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrCommResult.class); + public static WxOcrCommResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrCommResult.class); } @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } @Data public static class Items implements Serializable { - private static final long serialVersionUID = 3066181677009102791L; + @SerializedName("text") private String text; @SerializedName("pos") - private WxMpOcrPos pos; + private WxOcrPos pos; @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingLicenseResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingLicenseResult.java similarity index 76% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingLicenseResult.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingLicenseResult.java index 3ef8fee91..c9306200d 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingLicenseResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingLicenseResult.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -10,7 +10,7 @@ import java.io.Serializable; * @author Theo Nie */ @Data -public class WxMpOcrDrivingLicenseResult implements Serializable { +public class WxOcrDrivingLicenseResult implements Serializable { private static final long serialVersionUID = -6984670645802585738L; /** @@ -71,10 +71,10 @@ public class WxMpOcrDrivingLicenseResult implements Serializable { @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } - public static WxMpOcrDrivingLicenseResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrDrivingLicenseResult.class); + public static WxOcrDrivingLicenseResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrDrivingLicenseResult.class); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingResult.java similarity index 83% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingResult.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingResult.java index 3e5576934..b486baf1c 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrDrivingResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrDrivingResult.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -10,9 +10,9 @@ import java.io.Serializable; * @author Theo Nie */ @Data -public class WxMpOcrDrivingResult implements Serializable { - +public class WxOcrDrivingResult implements Serializable { private static final long serialVersionUID = -7477484374200211303L; + /** * 车牌号码 */ @@ -107,26 +107,27 @@ public class WxMpOcrDrivingResult implements Serializable { * 图片大小 */ @SerializedName("img_size") - private WxMpOcrImgSize imgSize; + private WxOcrImgSize imgSize; @Data public static class CardPosition implements Serializable { private static final long serialVersionUID = 2884515165228160517L; + @SerializedName("pos") - private WxMpOcrPos pos; + private WxOcrPos pos; @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } - public static WxMpOcrDrivingResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrDrivingResult.class); + public static WxOcrDrivingResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrDrivingResult.class); } @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrIdCardResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrIdCardResult.java similarity index 59% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrIdCardResult.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrIdCardResult.java index fb1749682..0b1e0ff83 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrIdCardResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrIdCardResult.java @@ -1,9 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -14,7 +13,7 @@ import java.io.Serializable; * @date 2019-06-23 */ @Data -public class WxMpOcrIdCardResult implements Serializable { +public class WxOcrIdCardResult implements Serializable { private static final long serialVersionUID = 8184352486986729980L; @SerializedName("type") @@ -26,8 +25,8 @@ public class WxMpOcrIdCardResult implements Serializable { @SerializedName("valid_date") private String validDate; - public static WxMpOcrIdCardResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrIdCardResult.class); + public static WxOcrIdCardResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxOcrIdCardResult.class); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrImgSize.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrImgSize.java similarity index 62% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrImgSize.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrImgSize.java index f30a15399..f5446ab40 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrImgSize.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrImgSize.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -10,7 +10,7 @@ import java.io.Serializable; * @author Theo Nie */ @Data -public class WxMpOcrImgSize implements Serializable { +public class WxOcrImgSize implements Serializable { private static final long serialVersionUID = 5234409123551074168L; @SerializedName("w") @@ -20,6 +20,6 @@ public class WxMpOcrImgSize implements Serializable { @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrPos.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrPos.java similarity index 70% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrPos.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrPos.java index 0a4fe586e..54089f323 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrPos.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/ocr/WxOcrPos.java @@ -1,8 +1,8 @@ -package me.chanjar.weixin.mp.bean.ocr; +package me.chanjar.weixin.common.bean.ocr; import com.google.gson.annotations.SerializedName; import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import java.io.Serializable; @@ -10,7 +10,7 @@ import java.io.Serializable; * @author Theo Nie */ @Data -public class WxMpOcrPos implements Serializable { +public class WxOcrPos implements Serializable { private static final long serialVersionUID = 4204160206873907920L; @SerializedName("left_top") @@ -24,11 +24,11 @@ public class WxMpOcrPos implements Serializable { @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } @Data - public static class Coordinate implements Serializable{ + public static class Coordinate implements Serializable { private static final long serialVersionUID = 8675059935386304399L; @SerializedName("x") private int x; @@ -37,7 +37,7 @@ public class WxMpOcrPos implements Serializable { @Override public String toString() { - return WxMpGsonBuilder.create().toJson(this); + return WxGsonBuilder.create().toJson(this); } } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernApacheHttpRequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernApacheHttpRequestExecutor.java similarity index 100% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernApacheHttpRequestExecutor.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernApacheHttpRequestExecutor.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java similarity index 95% rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java rename to weixin-java-common/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java index 536097e49..dff256e47 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/mp/util/requestexecuter/ocr/OcrDiscernRequestExecutor.java @@ -12,8 +12,8 @@ import java.io.IOException; /** * . * - * @author zhayueran - * @date 2019/6/27 15:06 + * @author zhayueran + * @date 2019/6/27 15:06 */ public abstract class OcrDiscernRequestExecutor implements RequestExecutor { protected RequestHttp requestHttp; diff --git a/weixin-java-miniapp/pom.xml b/weixin-java-miniapp/pom.xml index e6c4858bd..6f18b6158 100644 --- a/weixin-java-miniapp/pom.xml +++ b/weixin-java-miniapp/pom.xml @@ -90,6 +90,12 @@ 1.0.0 true + + org.mockito + mockito-core + 3.3.3 + test + diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index f419bfea1..c7de9cc47 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -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(); } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index 5a2fa22b4..ac48ceda8 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -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 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 implements WxMaService, RequestH return this.liveGoodsService; } + @Override + public WxOcrService getOcrService() { + return this.ocrService; + } + } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java new file mode 100644 index 000000000..b7df6849e --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java @@ -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 Binary Wang + * @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); + } +} diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImplTest.java new file mode 100644 index 000000000..b52476fb9 --- /dev/null +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImplTest.java @@ -0,0 +1,385 @@ +package cn.binarywang.wx.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.test.ApiTestModule; +import cn.binarywang.wx.miniapp.test.TestConstants; +import me.chanjar.weixin.common.bean.ocr.*; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.fs.FileUtils; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import javax.inject.Inject; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +/** + * @author Binary Wang + * @date 2020-07-05 + */ +@Test +@Guice(modules = ApiTestModule.class) +public class WxMaOcrServiceImplTest { + @Inject + private WxMaService service; + + @Test + public void testIdCard() throws WxErrorException { + final WxOcrIdCardResult result = this.service.getOcrService().idCard( + "https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testIdCard2() throws Exception { + InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrIdCardResult result = this.service.getOcrService().idCard(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBankCard() throws WxErrorException { + final WxOcrBankCardResult result = this.service.getOcrService().bankCard("https://res.wx.qq.com/op_res/eP7PObYbBJj-_19EbGBL4PWe_zQ1NwET5NXSugjEWc-4ayns4Q-HFJrp-AOog8ih"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBankCard2() throws Exception { + InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/eP7PObYbBJj-_19EbGBL4PWe_zQ1NwET5NXSugjEWc-4ayns4Q-HFJrp-AOog8ih"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrBankCardResult result = this.service.getOcrService().bankCard(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDriving() throws WxErrorException { + final WxOcrDrivingResult result = this.service.getOcrService().driving("https://res.wx.qq.com/op_res/T051P5uWvh9gSJ9j78tWib53WiNi2pHSSZhoO8wnY3Av-djpsA4kA9whbtt6_Tb6"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDriving2() throws Exception { + InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrDrivingResult result = this.service.getOcrService().driving(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDrivingLicense() throws WxErrorException { + final WxOcrDrivingLicenseResult result = this.service.getOcrService().drivingLicense("https://res.wx.qq.com/op_res/kD4YXjYVAW1eaQqn9uTA0rrOFoZRvVINitNDSGo5gJ7SzTCezNq_ZDDmU1I08kGn"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDrivingLicense2() throws Exception { + InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/kD4YXjYVAW1eaQqn9uTA0rrOFoZRvVINitNDSGo5gJ7SzTCezNq_ZDDmU1I08kGn"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrDrivingLicenseResult result = this.service.getOcrService().drivingLicense(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBizLicense() throws WxErrorException { + final WxOcrBizLicenseResult result = this.service.getOcrService().bizLicense("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBizLicense2() throws Exception { + InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrBizLicenseResult result = this.service.getOcrService().bizLicense(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testComm() throws WxErrorException { + final WxOcrCommResult result = this.service.getOcrService().comm("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testComm2() throws Exception { + InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); + File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); + final WxOcrCommResult result = this.service.getOcrService().comm(tempFile); + assertThat(result).isNotNull(); + System.out.println(result); + } + + private InputStream getImageStream(String url) { + try { + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setReadTimeout(5000); + connection.setConnectTimeout(5000); + connection.setRequestMethod("GET"); + if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) { + return connection.getInputStream(); + } + } catch (IOException e) { + System.out.println("获取网络图片出现异常,图片路径为:" + url); + } + return null; + } + + public static class MockTest { + private final WxMaService wxService = mock(WxMaService.class); + + @Test + public void testIdCard() throws Exception { + String returnJson = "{\"type\":\"Back\",\"name\":\"张三\",\"id\":\"110101199909090099\",\"valid_date\":\"20110101-20210201\"}"; + + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl wxMpOcrService = new WxMaOcrServiceImpl(wxService); + + final WxOcrIdCardResult result = wxMpOcrService.idCard("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBankCard() throws Exception { + String returnJson = "{\"number\":\"24234234345234\"}"; + + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl ocrService = new WxMaOcrServiceImpl(wxService); + final WxOcrBankCardResult result = ocrService.bankCard("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDriving() throws Exception { + String returnJson = "{\n" + + " \"errcode\": 0,\n" + + " \"errmsg\": \"ok\",\n" + + " \"plate_num\": \"粤xxxxx\", //车牌号码\n" + + " \"vehicle_type\": \"小型普通客车\", //车辆类型\n" + + " \"owner\": \"东莞市xxxxx机械厂\", //所有人\n" + + " \"addr\": \"广东省东莞市xxxxx号\", //住址\n" + + " \"use_character\": \"非营运\", //使用性质\n" + + " \"model\": \"江淮牌HFCxxxxxxx\", //品牌型号\n" + + " \"vin\": \"LJ166xxxxxxxx51\", //车辆识别代号\n" + + " \"engine_num\": \"J3xxxxx3\", //发动机号码\n" + + " \"register_date\": \"2018-07-06\", //注册日期\n" + + " \"issue_date\": \"2018-07-01\", //发证日期\n" + + " \"plate_num_b\": \"粤xxxxx\", //车牌号码\n" + + " \"record\": \"441xxxxxx3\", //号牌\n" + + " \"passengers_num\": \"7人\", //核定载人数\n" + + " \"total_quality\": \"2700kg\", //总质量\n" + + " \"prepare_quality\": \"1995kg\", //整备质量\n" + + " \"overall_size\": \"4582x1795x1458mm\", //外廓尺寸\n" + + " \"card_position_front\": {//卡片正面位置(检测到卡片正面才会返回)\n" + + " \"pos\": {\n" + + " \"left_top\": {\n" + + " \"x\": 119, \n" + + " \"y\": 2925\n" + + " }, \n" + + " \"right_top\": {\n" + + " \"x\": 1435, \n" + + " \"y\": 2887\n" + + " }, \n" + + " \"right_bottom\": {\n" + + " \"x\": 1435, \n" + + " \"y\": 3793\n" + + " }, \n" + + " \"left_bottom\": {\n" + + " \"x\": 119, \n" + + " \"y\": 3831\n" + + " }\n" + + " }\n" + + " }, \n" + + " \"card_position_back\": {//卡片反面位置(检测到卡片反面才会返回)\n" + + " \"pos\": {\n" + + " \"left_top\": {\n" + + " \"x\": 1523, \n" + + " \"y\": 2849\n" + + " }, \n" + + " \"right_top\": {\n" + + " \"x\": 2898, \n" + + " \"y\": 2887\n" + + " }, \n" + + " \"right_bottom\": {\n" + + " \"x\": 2927, \n" + + " \"y\": 3831\n" + + " }, \n" + + " \"left_bottom\": {\n" + + " \"x\": 1523, \n" + + " \"y\": 3831\n" + + " }\n" + + " }\n" + + " }, \n" + + " \"img_size\": {//图片大小\n" + + " \"w\": 3120, \n" + + " \"h\": 4208\n" + + " }\n" + + "}"; + + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl ocrService = new WxMaOcrServiceImpl(wxService); + + final WxOcrDrivingResult result = ocrService.driving("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testDrivingLicense() throws Exception { + String returnJson = "{\n" + + " \"errcode\": 0,\n" + + " \"errmsg\": \"ok\",\n" + + " \"id_num\": \"660601xxxxxxxx1234\", //证号\n" + + " \"name\": \"张三\", //姓名\n" + + " \"sex\": \"男\", //性别\n" + + " \"nationality\": \"中国\", //国籍\n" + + " \"address\": \"广东省东莞市xxxxx号\", //住址\n" + + " \"birth_date\": \"1990-12-21\", //出生日期\n" + + " \"issue_date\": \"2012-12-21\", //初次领证日期\n" + + " \"car_class\": \"C1\", //准驾车型\n" + + " \"valid_from\": \"2018-07-06\", //有效期限起始日\n" + + " \"valid_to\": \"2020-07-01\", //有效期限终止日\n" + + " \"official_seal\": \"xx市公安局公安交通管理局\" //印章文字\n" + + "}"; + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl wxMpOcrService = new WxMaOcrServiceImpl(wxService); + + final WxOcrDrivingLicenseResult result = wxMpOcrService.drivingLicense("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testBizLicense() throws Exception { + String returnJson = "{\n" + + " \"errcode\": 0, \n" + + " \"errmsg\": \"ok\", \n" + + " \"reg_num\": \"123123\",//注册号\n" + + " \"serial\": \"123123\",//编号\n" + + " \"legal_representative\": \"张三\", //法定代表人姓名\n" + + " \"enterprise_name\": \"XX饮食店\", //企业名称\n" + + " \"type_of_organization\": \"个人经营\", //组成形式\n" + + " \"address\": \"XX市XX区XX路XX号\", //经营场所/企业住所\n" + + " \"type_of_enterprise\": \"xxx\", //公司类型\n" + + " \"business_scope\": \"中型餐馆(不含凉菜、不含裱花蛋糕,不含生食海产品)。\", //经营范围\n" + + " \"registered_capital\": \"200万\", //注册资本\n" + + " \"paid_in_capital\": \"200万\", //实收资本\n" + + " \"valid_period\": \"2019年1月1日\", //营业期限\n" + + " \"registered_date\": \"2018年1月1日\", //注册日期/成立日期\n" + + " \"cert_position\": { //营业执照位置\n" + + " \"pos\": {\n" + + " \"left_top\": {\n" + + " \"x\": 155, \n" + + " \"y\": 191\n" + + " }, \n" + + " \"right_top\": {\n" + + " \"x\": 725, \n" + + " \"y\": 157\n" + + " }, \n" + + " \"right_bottom\": {\n" + + " \"x\": 743, \n" + + " \"y\": 512\n" + + " }, \n" + + " \"left_bottom\": {\n" + + " \"x\": 164, \n" + + " \"y\": 525\n" + + " }\n" + + " }\n" + + " }, \n" + + " \"img_size\": { //图片大小\n" + + " \"w\": 966, \n" + + " \"h\": 728\n" + + " }\n" + + "}"; + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl ocrService = new WxMaOcrServiceImpl(wxService); + + final WxOcrBizLicenseResult result = ocrService.bizLicense("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + + @Test + public void testComm() throws Exception { + String returnJson = "{\n" + + " \"errcode\": 0, \n" + + " \"errmsg\": \"ok\", \n" + + " \"items\": [ //识别结果\n" + + " {\n" + + " \"text\": \"腾讯\", \n" + + " \"pos\": {\n" + + " \"left_top\": {\n" + + " \"x\": 575, \n" + + " \"y\": 519\n" + + " }, \n" + + " \"right_top\": {\n" + + " \"x\": 744, \n" + + " \"y\": 519\n" + + " }, \n" + + " \"right_bottom\": {\n" + + " \"x\": 744, \n" + + " \"y\": 532\n" + + " }, \n" + + " \"left_bottom\": {\n" + + " \"x\": 573, \n" + + " \"y\": 532\n" + + " }\n" + + " }\n" + + " }, \n" + + " {\n" + + " \"text\": \"微信团队\", \n" + + " \"pos\": {\n" + + " \"left_top\": {\n" + + " \"x\": 670, \n" + + " \"y\": 516\n" + + " }, \n" + + " \"right_top\": {\n" + + " \"x\": 762, \n" + + " \"y\": 517\n" + + " }, \n" + + " \"right_bottom\": {\n" + + " \"x\": 762, \n" + + " \"y\": 532\n" + + " }, \n" + + " \"left_bottom\": {\n" + + " \"x\": 670, \n" + + " \"y\": 531\n" + + " }\n" + + " }\n" + + " }\n" + + " ], \n" + + " \"img_size\": { //图片大小\n" + + " \"w\": 1280, \n" + + " \"h\": 720\n" + + " }\n" + + "}"; + when(wxService.get(anyString(), anyString())).thenReturn(returnJson); + final WxMaOcrServiceImpl ocrService = new WxMaOcrServiceImpl(wxService); + + final WxOcrCommResult result = ocrService.comm("abc"); + assertThat(result).isNotNull(); + System.out.println(result); + } + } +} diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConstants.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConstants.java new file mode 100644 index 000000000..091de1d3e --- /dev/null +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConstants.java @@ -0,0 +1,17 @@ +package cn.binarywang.wx.miniapp.test; + +/** + *
+ * 仅供测试使用的一些常量
+ * Created by Binary Wang on 2017-3-9.
+ * 
+ */ +public class TestConstants { + /////////////////////// + // 文件类型 + /////////////////////// + public static final String FILE_JPG = "jpeg"; + public static final String FILE_MP3 = "mp3"; + public static final String FILE_AMR = "amr"; + public static final String FILE_MP4 = "mp4"; +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index 3803ef979..a1841bff1 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -1,5 +1,6 @@ package me.chanjar.weixin.mp.api; +import me.chanjar.weixin.common.api.WxOcrService; import me.chanjar.weixin.common.bean.WxJsapiSignature; import me.chanjar.weixin.common.bean.WxNetCheckResult; import me.chanjar.weixin.common.error.WxErrorException; @@ -555,7 +556,7 @@ public interface WxMpService extends WxService { * * @return WxMpWifiService */ - WxMpOcrService getOcrService(); + WxOcrService getOcrService(); /** * 返回图像处理接口的实现类对象,以方便调用其各个接口. @@ -688,7 +689,7 @@ public interface WxMpService extends WxService { * * @param ocrService . */ - void setOcrService(WxMpOcrService ocrService); + void setOcrService(WxOcrService ocrService); /** * . diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java index 043ddd2be..0f2cb403e 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java @@ -10,6 +10,7 @@ import lombok.Getter; import lombok.Setter; 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.bean.WxJsapiSignature; import me.chanjar.weixin.common.bean.WxNetCheckResult; @@ -70,7 +71,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH private final WxMpWifiService wifiService = new WxMpWifiServiceImpl(this); private WxMpMarketingService marketingService = new WxMpMarketingServiceImpl(this); private WxMpCommentService commentService = new WxMpCommentServiceImpl(this); - private WxMpOcrService ocrService = new WxMpOcrServiceImpl(this); + private WxOcrService ocrService = new WxMpOcrServiceImpl(this); private WxMpImgProcService imgProcService = new WxMpImgProcServiceImpl(this); @Getter @@ -663,7 +664,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH } @Override - public WxMpOcrService getOcrService() { + public WxOcrService getOcrService() { return this.ocrService; } @@ -678,7 +679,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH } @Override - public void setOcrService(WxMpOcrService ocrService) { + public void setOcrService(WxOcrService ocrService) { this.ocrService = ocrService; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImpl.java index dbf3dd039..6b40c9822 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImpl.java @@ -2,14 +2,14 @@ package me.chanjar.weixin.mp.api.impl; import lombok.RequiredArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.api.WxMpOcrService; +import me.chanjar.weixin.common.api.WxOcrService; import me.chanjar.weixin.mp.api.WxMpService; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBankCardResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBizLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrCommResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrIdCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBankCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBizLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrCommResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrIdCardResult; import me.chanjar.weixin.mp.util.requestexecuter.ocr.OcrDiscernRequestExecutor; import java.io.File; @@ -37,11 +37,11 @@ import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.IDCARD; * @date 2019-06-22 */ @RequiredArgsConstructor -public class WxMpOcrServiceImpl implements WxMpOcrService { +public class WxMpOcrServiceImpl implements WxOcrService { private final WxMpService mainService; @Override - public WxMpOcrIdCardResult idCard(String imgUrl) throws WxErrorException { + public WxOcrIdCardResult idCard(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -50,18 +50,18 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(IDCARD.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrIdCardResult.fromJson(result); + return WxOcrIdCardResult.fromJson(result); } @Override - public WxMpOcrIdCardResult idCard(File imgFile) throws WxErrorException { + public WxOcrIdCardResult idCard(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILEIDCARD.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrIdCardResult.fromJson(result); + return WxOcrIdCardResult.fromJson(result); } @Override - public WxMpOcrBankCardResult bankCard(String imgUrl) throws WxErrorException { + public WxOcrBankCardResult bankCard(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -70,18 +70,18 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(BANK_CARD.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrBankCardResult.fromJson(result); + return WxOcrBankCardResult.fromJson(result); } @Override - public WxMpOcrBankCardResult bankCard(File imgFile) throws WxErrorException { + public WxOcrBankCardResult bankCard(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILE_BANK_CARD.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrBankCardResult.fromJson(result); + return WxOcrBankCardResult.fromJson(result); } @Override - public WxMpOcrDrivingResult driving(String imgUrl) throws WxErrorException { + public WxOcrDrivingResult driving(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -90,18 +90,18 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(DRIVING.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrDrivingResult.fromJson(result); + return WxOcrDrivingResult.fromJson(result); } @Override - public WxMpOcrDrivingResult driving(File imgFile) throws WxErrorException { + public WxOcrDrivingResult driving(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILE_DRIVING.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrDrivingResult.fromJson(result); + return WxOcrDrivingResult.fromJson(result); } @Override - public WxMpOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException { + public WxOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -110,18 +110,18 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(DRIVING_LICENSE.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrDrivingLicenseResult.fromJson(result); + return WxOcrDrivingLicenseResult.fromJson(result); } @Override - public WxMpOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException { + public WxOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILE_DRIVING_LICENSE.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrDrivingLicenseResult.fromJson(result); + return WxOcrDrivingLicenseResult.fromJson(result); } @Override - public WxMpOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException { + public WxOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -130,18 +130,18 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(BIZ_LICENSE.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrBizLicenseResult.fromJson(result); + return WxOcrBizLicenseResult.fromJson(result); } @Override - public WxMpOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException { + public WxOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILE_BIZ_LICENSE.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrBizLicenseResult.fromJson(result); + return WxOcrBizLicenseResult.fromJson(result); } @Override - public WxMpOcrCommResult comm(String imgUrl) throws WxErrorException { + public WxOcrCommResult comm(String imgUrl) throws WxErrorException { try { imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { @@ -150,13 +150,13 @@ public class WxMpOcrServiceImpl implements WxMpOcrService { final String result = this.mainService.get(String.format(COMM.getUrl(this.mainService.getWxMpConfigStorage()), imgUrl), null); - return WxMpOcrCommResult.fromJson(result); + return WxOcrCommResult.fromJson(result); } @Override - public WxMpOcrCommResult comm(File imgFile) throws WxErrorException { + public WxOcrCommResult comm(File imgFile) throws WxErrorException { String result = this.mainService.execute(OcrDiscernRequestExecutor.create(this.mainService.getRequestHttp()), FILE_COMM.getUrl(this.mainService.getWxMpConfigStorage()), imgFile); - return WxMpOcrCommResult.fromJson(result); + return WxOcrCommResult.fromJson(result); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBankCardResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBankCardResult.java deleted file mode 100644 index 9b76a3157..000000000 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/ocr/WxMpOcrBankCardResult.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.chanjar.weixin.mp.bean.ocr; - -import com.google.gson.annotations.SerializedName; -import lombok.Data; -import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; - -import java.io.Serializable; - -/** - * 银行卡OCR识别结果 - * @author Theo Nie - */ -@Data -public class WxMpOcrBankCardResult implements Serializable { - - private static final long serialVersionUID = 554136620394204143L; - @SerializedName("number") - private String number; - - @Override - public String toString() { - return WxMpGsonBuilder.create().toJson(this); - } - - public static WxMpOcrBankCardResult fromJson(String json) { - return WxMpGsonBuilder.create().fromJson(json, WxMpOcrBankCardResult.class); - } -} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java index 9bc0e1de0..7f3b45d24 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java @@ -199,8 +199,8 @@ public interface WxMpApiUrl { */ MENU_ADDCONDITIONAL(API_DEFAULT_HOST_URL, "/cgi-bin/menu/addconditional"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { @@ -224,8 +224,8 @@ public interface WxMpApiUrl { */ SHOW_QRCODE_WITH_TICKET(MP_DEFAULT_HOST_URL, "/cgi-bin/showqrcode?ticket=%s"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { @@ -252,8 +252,8 @@ public interface WxMpApiUrl { */ SHAKEAROUND_RELATION_SEARCH(API_DEFAULT_HOST_URL, "/shakearound/relation/search"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { @@ -272,8 +272,8 @@ public interface WxMpApiUrl { */ SEND_MESSAGE_URL(API_DEFAULT_HOST_URL, "/cgi-bin/message/template/subscribe"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { @@ -376,8 +376,8 @@ public interface WxMpApiUrl { */ TAGS_GETIDLIST(API_DEFAULT_HOST_URL, "/cgi-bin/tags/getidlist"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { @@ -426,8 +426,8 @@ public interface WxMpApiUrl { */ VOICE_QUERY_RESULT_URL(API_DEFAULT_HOST_URL, "/cgi-bin/media/voice/queryrecoresultfortext"); - private String prefix; - private String path; + private final String prefix; + private final String path; @Override public String getUrl(WxMpConfigStorage config) { diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImplTest.java index 55bfa0623..5f7178668 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImplTest.java @@ -5,12 +5,12 @@ import me.chanjar.weixin.common.util.fs.FileUtils; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.test.ApiTestModule; import me.chanjar.weixin.mp.api.test.TestConstants; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBankCardResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBizLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrCommResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingLicenseResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingResult; -import me.chanjar.weixin.mp.bean.ocr.WxMpOcrIdCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBankCardResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrBizLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrCommResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingLicenseResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrDrivingResult; +import me.chanjar.weixin.common.bean.ocr.WxOcrIdCardResult; import org.testng.annotations.Guice; import org.testng.annotations.Test; @@ -38,11 +38,11 @@ import static org.mockito.Mockito.when; @Guice(modules = ApiTestModule.class) public class WxMpOcrServiceImplTest { @Inject - private WxMpService mpService; + private WxMpService service; @Test public void testIdCard() throws WxErrorException { - final WxMpOcrIdCardResult result = this.mpService.getOcrService().idCard( + final WxOcrIdCardResult result = this.service.getOcrService().idCard( "https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6"); assertThat(result).isNotNull(); System.out.println(result); @@ -52,14 +52,14 @@ public class WxMpOcrServiceImplTest { public void testIdCard2() throws Exception { InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/E_oqdHqP4ETOJsT46sQnXz1HbeHOpqDQTuhkYeaLaJTf-JKld7de3091dwxCQwa6"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrIdCardResult result = this.mpService.getOcrService().idCard(tempFile); + final WxOcrIdCardResult result = this.service.getOcrService().idCard(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @Test public void testBankCard() throws WxErrorException { - final WxMpOcrBankCardResult result = this.mpService.getOcrService().bankCard("https://res.wx.qq.com/op_res/eP7PObYbBJj-_19EbGBL4PWe_zQ1NwET5NXSugjEWc-4ayns4Q-HFJrp-AOog8ih"); + final WxOcrBankCardResult result = this.service.getOcrService().bankCard("https://res.wx.qq.com/op_res/eP7PObYbBJj-_19EbGBL4PWe_zQ1NwET5NXSugjEWc-4ayns4Q-HFJrp-AOog8ih"); assertThat(result).isNotNull(); System.out.println(result); } @@ -68,14 +68,14 @@ public class WxMpOcrServiceImplTest { public void testBankCard2() throws Exception { InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/eP7PObYbBJj-_19EbGBL4PWe_zQ1NwET5NXSugjEWc-4ayns4Q-HFJrp-AOog8ih"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrBankCardResult result = this.mpService.getOcrService().bankCard(tempFile); + final WxOcrBankCardResult result = this.service.getOcrService().bankCard(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @Test public void testDriving() throws WxErrorException { - final WxMpOcrDrivingResult result = this.mpService.getOcrService().driving("https://res.wx.qq.com/op_res/T051P5uWvh9gSJ9j78tWib53WiNi2pHSSZhoO8wnY3Av-djpsA4kA9whbtt6_Tb6"); + final WxOcrDrivingResult result = this.service.getOcrService().driving("https://res.wx.qq.com/op_res/T051P5uWvh9gSJ9j78tWib53WiNi2pHSSZhoO8wnY3Av-djpsA4kA9whbtt6_Tb6"); assertThat(result).isNotNull(); System.out.println(result); } @@ -84,14 +84,14 @@ public class WxMpOcrServiceImplTest { public void testDriving2() throws Exception { InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrDrivingResult result = this.mpService.getOcrService().driving(tempFile); + final WxOcrDrivingResult result = this.service.getOcrService().driving(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @Test public void testDrivingLicense() throws WxErrorException { - final WxMpOcrDrivingLicenseResult result = this.mpService.getOcrService().drivingLicense("https://res.wx.qq.com/op_res/kD4YXjYVAW1eaQqn9uTA0rrOFoZRvVINitNDSGo5gJ7SzTCezNq_ZDDmU1I08kGn"); + final WxOcrDrivingLicenseResult result = this.service.getOcrService().drivingLicense("https://res.wx.qq.com/op_res/kD4YXjYVAW1eaQqn9uTA0rrOFoZRvVINitNDSGo5gJ7SzTCezNq_ZDDmU1I08kGn"); assertThat(result).isNotNull(); System.out.println(result); } @@ -100,14 +100,14 @@ public class WxMpOcrServiceImplTest { public void testDrivingLicense2() throws Exception { InputStream inputStream = this.getImageStream("https://res.wx.qq.com/op_res/kD4YXjYVAW1eaQqn9uTA0rrOFoZRvVINitNDSGo5gJ7SzTCezNq_ZDDmU1I08kGn"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrDrivingLicenseResult result = this.mpService.getOcrService().drivingLicense(tempFile); + final WxOcrDrivingLicenseResult result = this.service.getOcrService().drivingLicense(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @Test public void testBizLicense() throws WxErrorException { - final WxMpOcrBizLicenseResult result = this.mpService.getOcrService().bizLicense("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); + final WxOcrBizLicenseResult result = this.service.getOcrService().bizLicense("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); assertThat(result).isNotNull(); System.out.println(result); } @@ -116,14 +116,14 @@ public class WxMpOcrServiceImplTest { public void testBizLicense2() throws Exception { InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrBizLicenseResult result = this.mpService.getOcrService().bizLicense(tempFile); + final WxOcrBizLicenseResult result = this.service.getOcrService().bizLicense(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @Test public void testComm() throws WxErrorException { - final WxMpOcrCommResult result = this.mpService.getOcrService().comm("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); + final WxOcrCommResult result = this.service.getOcrService().comm("https://res.wx.qq.com/op_res/apCy0YbnEdjYsa_cjW6x3FlpCc20uQ-2BYE7aXnFsrB-ALHZNgdKXhzIUcrRnDoL"); assertThat(result).isNotNull(); System.out.println(result); } @@ -132,7 +132,7 @@ public class WxMpOcrServiceImplTest { public void testComm2() throws Exception { InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); - final WxMpOcrCommResult result = this.mpService.getOcrService().comm(tempFile); + final WxOcrCommResult result = this.service.getOcrService().comm(tempFile); assertThat(result).isNotNull(); System.out.println(result); } @@ -162,7 +162,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrIdCardResult result = wxMpOcrService.idCard("abc"); + final WxOcrIdCardResult result = wxMpOcrService.idCard("abc"); assertThat(result).isNotNull(); System.out.println(result); } @@ -174,7 +174,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrBankCardResult result = wxMpOcrService.bankCard("abc"); + final WxOcrBankCardResult result = wxMpOcrService.bankCard("abc"); assertThat(result).isNotNull(); System.out.println(result); } @@ -249,7 +249,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrDrivingResult result = wxMpOcrService.driving("abc"); + final WxOcrDrivingResult result = wxMpOcrService.driving("abc"); assertThat(result).isNotNull(); System.out.println(result); } @@ -274,7 +274,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrDrivingLicenseResult result = wxMpOcrService.drivingLicense("abc"); + final WxOcrDrivingLicenseResult result = wxMpOcrService.drivingLicense("abc"); assertThat(result).isNotNull(); System.out.println(result); } @@ -324,7 +324,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrBizLicenseResult result = wxMpOcrService.bizLicense("abc"); + final WxOcrBizLicenseResult result = wxMpOcrService.bizLicense("abc"); assertThat(result).isNotNull(); System.out.println(result); } @@ -386,7 +386,7 @@ public class WxMpOcrServiceImplTest { when(wxService.get(anyString(), anyString())).thenReturn(returnJson); final WxMpOcrServiceImpl wxMpOcrService = new WxMpOcrServiceImpl(wxService); - final WxMpOcrCommResult result = wxMpOcrService.comm("abc"); + final WxOcrCommResult result = wxMpOcrService.comm("abc"); assertThat(result).isNotNull(); System.out.println(result); } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java index 105532099..c3a2b7219 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java @@ -76,6 +76,8 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { @Override public ProfitSharingQueryResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException { + request.setAppid(null); + request.checkAndSign(this.payService.getConfig()); String url = this.payService.getPayBaseUrl() + "/pay/profitsharingquery";