From d22edcebbc86ead23d0e18493a06101212d9f8a7 Mon Sep 17 00:00:00 2001 From: dingxw Date: Thu, 18 Nov 2021 21:51:39 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feature(=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=A8=A1=E5=9D=97):=20=E6=96=B0=E5=A2=9E=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E5=AE=89=E5=85=A8mediaCheckAsync=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.新增内容安全mediaCheckAsync新版本实现 --- .../wx/miniapp/api/WxMaSecCheckService.java | 24 +++++++++++++- .../api/impl/WxMaSecCheckServiceImpl.java | 19 ++++++++--- .../WxMaMedisSecCheckCheckRequest.java | 32 +++++++++++++++++++ 3 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java index 8b135adcdf..eecd009ae8 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java @@ -1,6 +1,7 @@ package cn.binarywang.wx.miniapp.api; import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult; +import cn.binarywang.wx.miniapp.bean.security.WxMaMedisSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse; import me.chanjar.weixin.common.error.WxErrorException; @@ -64,7 +65,7 @@ public interface WxMaSecCheckService { * * @param msgRequest * @return WxMaMsgSecCheckCheckResponse - * @throws WxErrorException + * @throws WxErrorException the wx error exception */ WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException; @@ -88,4 +89,25 @@ public interface WxMaSecCheckService { */ WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType) throws WxErrorException; + + /** + *
+   * 异步校验图片/音频是否含有违法违规内容。(新版本接口,主要对request和respone做了参数优化)
+   * 应用场景举例:
+   * 语音风险识别:社交类用户发表的语音内容检测;
+   * 图片智能鉴黄:涉及拍照的工具类应用(如美拍,识图类应用)用户拍照上传检测;电商类商品上架图片检测;媒体类用户文章里的图片检测等;
+   * 敏感人脸识别:用户头像;媒体类用户文章里的图片检测;社交类用户上传的图片检测等。
+   * 频率限制:
+   * 单个 appId 调用上限为 2000 次/分钟,200,000 次/天;文件大小限制:单个文件大小不超过10M
+   * 详情请见:
+   * https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.mediaCheckAsync.html
+   * 
+ * + * @param medisRequest + * @return wx ma media async check result + * @throws WxErrorException the wx error exception + */ + + WxMaMediaAsyncCheckResult mediaCheckAsync(WxMaMedisSecCheckCheckRequest medisRequest) throws WxErrorException; + } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java index 332a47ad7a..03ba6c3e72 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java @@ -3,6 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaSecCheckService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult; +import cn.binarywang.wx.miniapp.bean.security.WxMaMedisSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse; import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; @@ -68,10 +69,7 @@ public boolean checkMessage(String msgString) throws WxErrorException { @Override public WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException { String response = this.service.post(MSG_SEC_CHECK_URL, msgRequest); - JsonObject jsonObject = GsonParser.parse(response); - if (jsonObject.get(ERRCODE).getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(response, WxType.MiniApp)); - } + parseErrorResponse(response); return WxMaGsonBuilder.create().fromJson(response, WxMaMsgSecCheckCheckResponse.class); } @@ -86,4 +84,17 @@ public WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType) .fromJson(this.service.post(MEDIA_CHECK_ASYNC_URL, jsonObject.toString())); } + @Override + public WxMaMediaAsyncCheckResult mediaCheckAsync(WxMaMedisSecCheckCheckRequest medisRequest) throws WxErrorException { + String response = this.service.post(MEDIA_CHECK_ASYNC_URL,medisRequest); + parseErrorResponse(response); + return WxMaGsonBuilder.create().fromJson(response,WxMaMediaAsyncCheckResult.class); + } + + private void parseErrorResponse(String response) throws WxErrorException { + JsonObject jsonObject = GsonParser.parse(response); + if (jsonObject.get(ERRCODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(response, WxType.MiniApp)); + } + } } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java new file mode 100644 index 0000000000..98aeb7fdf5 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java @@ -0,0 +1,32 @@ +package cn.binarywang.wx.miniapp.bean.security; + +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author dingxw + * @date 2021/11/18 20:27 + */ +@Data +@Builder +public class WxMaMedisSecCheckCheckRequest implements Serializable { + + @SerializedName("media_url") + private String mediaUrl; + + @SerializedName("media_type") + private Integer mediaType; + + @SerializedName("version") + private Integer version; + + @SerializedName("openid") + private String openid; + + @SerializedName("scene") + private Integer scene; + +} From 735baccc36248559820ab2b539cb3c2ac7d3f3eb Mon Sep 17 00:00:00 2001 From: dingxw Date: Thu, 18 Nov 2021 21:51:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feature(=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=A8=A1=E5=9D=97):=20=E6=96=B0=E5=A2=9E=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E5=AE=89=E5=85=A8mediaCheckAsync=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.新增内容安全mediaCheckAsync新版本实现 --- .../wx/miniapp/api/WxMaSecCheckService.java | 24 ++++++++++++- .../api/impl/WxMaSecCheckServiceImpl.java | 19 ++++++++--- .../WxMaMediaSecCheckCheckRequest.java | 34 +++++++++++++++++++ 3 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMediaSecCheckCheckRequest.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java index 8b135adcdf..a22061a007 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java @@ -1,6 +1,7 @@ package cn.binarywang.wx.miniapp.api; import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult; +import cn.binarywang.wx.miniapp.bean.security.WxMaMediaSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse; import me.chanjar.weixin.common.error.WxErrorException; @@ -64,7 +65,7 @@ public interface WxMaSecCheckService { * * @param msgRequest * @return WxMaMsgSecCheckCheckResponse - * @throws WxErrorException + * @throws WxErrorException the wx error exception */ WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException; @@ -88,4 +89,25 @@ public interface WxMaSecCheckService { */ WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType) throws WxErrorException; + + /** + *
+   * 异步校验图片/音频是否含有违法违规内容。(新版本接口,主要对request和respone做了参数优化)
+   * 应用场景举例:
+   * 语音风险识别:社交类用户发表的语音内容检测;
+   * 图片智能鉴黄:涉及拍照的工具类应用(如美拍,识图类应用)用户拍照上传检测;电商类商品上架图片检测;媒体类用户文章里的图片检测等;
+   * 敏感人脸识别:用户头像;媒体类用户文章里的图片检测;社交类用户上传的图片检测等。
+   * 频率限制:
+   * 单个 appId 调用上限为 2000 次/分钟,200,000 次/天;文件大小限制:单个文件大小不超过10M
+   * 详情请见:
+   * https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.mediaCheckAsync.html
+   * 
+ * + * @param medisRequest + * @return wx ma media async check result + * @throws WxErrorException the wx error exception + */ + + WxMaMediaAsyncCheckResult mediaCheckAsync(WxMaMediaSecCheckCheckRequest medisRequest) throws WxErrorException; + } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java index 332a47ad7a..837674eb64 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java @@ -3,6 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaSecCheckService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult; +import cn.binarywang.wx.miniapp.bean.security.WxMaMediaSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest; import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse; import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; @@ -68,10 +69,7 @@ public boolean checkMessage(String msgString) throws WxErrorException { @Override public WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException { String response = this.service.post(MSG_SEC_CHECK_URL, msgRequest); - JsonObject jsonObject = GsonParser.parse(response); - if (jsonObject.get(ERRCODE).getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(response, WxType.MiniApp)); - } + parseErrorResponse(response); return WxMaGsonBuilder.create().fromJson(response, WxMaMsgSecCheckCheckResponse.class); } @@ -86,4 +84,17 @@ public WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType) .fromJson(this.service.post(MEDIA_CHECK_ASYNC_URL, jsonObject.toString())); } + @Override + public WxMaMediaAsyncCheckResult mediaCheckAsync(WxMaMediaSecCheckCheckRequest medisRequest) throws WxErrorException { + String response = this.service.post(MEDIA_CHECK_ASYNC_URL,medisRequest); + parseErrorResponse(response); + return WxMaGsonBuilder.create().fromJson(response,WxMaMediaAsyncCheckResult.class); + } + + private void parseErrorResponse(String response) throws WxErrorException { + JsonObject jsonObject = GsonParser.parse(response); + if (jsonObject.get(ERRCODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(response, WxType.MiniApp)); + } + } } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMediaSecCheckCheckRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMediaSecCheckCheckRequest.java new file mode 100644 index 0000000000..16b0d35c74 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMediaSecCheckCheckRequest.java @@ -0,0 +1,34 @@ +package cn.binarywang.wx.miniapp.bean.security; + +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author dingxw + * @date 2021/11/18 20:27 + */ +@Data +@Builder +public class WxMaMediaSecCheckCheckRequest implements Serializable { + + private static final long serialVersionUID = -3947838615379224577L; + + @SerializedName("media_url") + private String mediaUrl; + + @SerializedName("media_type") + private Integer mediaType; + + @SerializedName("version") + private Integer version; + + @SerializedName("openid") + private String openid; + + @SerializedName("scene") + private Integer scene; + +} From e6475ebe6f164b77174026bdd70ed1284e8b3a7c Mon Sep 17 00:00:00 2001 From: dingxw Date: Wed, 24 Nov 2021 14:21:24 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feature(=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=A8=A1=E5=9D=97):=20=E6=96=B0=E5=A2=9E=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E5=AE=89=E5=85=A8mediaCheckAsync=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.新增内容安全mediaCheckAsync新版本实现 --- .../WxMaMedisSecCheckCheckRequest.java | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java deleted file mode 100644 index 98aeb7fdf5..0000000000 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/security/WxMaMedisSecCheckCheckRequest.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.binarywang.wx.miniapp.bean.security; - -import com.google.gson.annotations.SerializedName; -import lombok.Builder; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author dingxw - * @date 2021/11/18 20:27 - */ -@Data -@Builder -public class WxMaMedisSecCheckCheckRequest implements Serializable { - - @SerializedName("media_url") - private String mediaUrl; - - @SerializedName("media_type") - private Integer mediaType; - - @SerializedName("version") - private Integer version; - - @SerializedName("openid") - private String openid; - - @SerializedName("scene") - private Integer scene; - -}