Skip to content

Commit 614a1c9

Browse files
authored
🆕 #2261 【小程序】增加内容安全接口(兼容2.0版本)
1 parent 6cfe90b commit 614a1c9

14 files changed

+227
-14
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMinishopImageUploadCustomizeResult.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ public static WxMinishopImageUploadCustomizeResult fromJson(String json) {
2121
if (result.getErrcode().equals("0")) {
2222
WxMinishopPicFileCustomizeResult picFileResult = new WxMinishopPicFileCustomizeResult();
2323
JsonObject picObject = jsonObject.get("img_info").getAsJsonObject();
24-
picFileResult.setMediaId(picObject.get("media_id").getAsString());
24+
if (picObject.has("media_id")) {
25+
picFileResult.setMediaId(picObject.get("media_id").getAsString());
26+
}
2527
if (picObject.has("temp_img_url")) {
2628
picFileResult.setTempImgUrl(picObject.get("temp_img_url").getAsString());
2729
}
2830
result.setImgInfo(picFileResult);
29-
3031
}
3132
return result;
3233
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MinishopUploadRequestCustomizeExecutor.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,26 @@
1212

1313
public abstract class MinishopUploadRequestCustomizeExecutor<H, P> implements RequestExecutor<WxMinishopImageUploadCustomizeResult, File> {
1414
protected RequestHttp<H, P> requestHttp;
15+
protected String respType;
1516

16-
public MinishopUploadRequestCustomizeExecutor(RequestHttp requestHttp) {
17+
public MinishopUploadRequestCustomizeExecutor(RequestHttp requestHttp, String respType) {
1718
this.requestHttp = requestHttp;
19+
this.respType = respType;
1820
}
1921

2022
@Override
2123
public void execute(String uri, File data, ResponseHandler<WxMinishopImageUploadCustomizeResult> handler, WxType wxType) throws WxErrorException, IOException {
2224
handler.handle(this.execute(uri, data, wxType));
2325
}
2426

25-
public static RequestExecutor<WxMinishopImageUploadCustomizeResult, File> create(RequestHttp requestHttp) {
27+
public static RequestExecutor<WxMinishopImageUploadCustomizeResult, File> create(RequestHttp requestHttp, String respType) {
2628
switch (requestHttp.getRequestType()) {
2729
case APACHE_HTTP:
28-
return new ApacheMinishopMediaUploadRequestCustomizeExecutor(requestHttp);
30+
return new ApacheMinishopMediaUploadRequestCustomizeExecutor(requestHttp, respType);
2931
case JODD_HTTP:
30-
return new JoddHttpMinishopMediaUploadRequestCustomizeExecutor(requestHttp);
32+
return new JoddHttpMinishopMediaUploadRequestCustomizeExecutor(requestHttp, respType);
3133
case OK_HTTP:
32-
return new OkHttpMinishopMediaUploadRequestCustomizeExecutor(requestHttp);
34+
return new OkHttpMinishopMediaUploadRequestCustomizeExecutor(requestHttp, respType);
3335
default:
3436
return null;
3537
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/ApacheMinishopMediaUploadRequestCustomizeExecutor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
*/
2525
@Slf4j
2626
public class ApacheMinishopMediaUploadRequestCustomizeExecutor extends MinishopUploadRequestCustomizeExecutor<CloseableHttpClient, HttpHost> {
27-
public ApacheMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp) {
28-
super(requestHttp);
27+
public ApacheMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp, String respType) {
28+
super(requestHttp, respType);
2929
}
3030

3131
@Override
@@ -39,6 +39,7 @@ public WxMinishopImageUploadCustomizeResult execute(String uri, File file, WxTyp
3939
HttpEntity entity = MultipartEntityBuilder
4040
.create()
4141
.addBinaryBody("media", file)
42+
.addTextBody("resp_type", this.respType)
4243
.setMode(HttpMultipartMode.RFC6532)
4344
.build();
4445
httpPost.setEntity(entity);

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddHttpMinishopMediaUploadRequestCustomizeExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
*/
2323
@Slf4j
2424
public class JoddHttpMinishopMediaUploadRequestCustomizeExecutor extends MinishopUploadRequestCustomizeExecutor<HttpConnectionProvider, ProxyInfo> {
25-
public JoddHttpMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp) {
26-
super(requestHttp);
25+
public JoddHttpMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp, String respType) {
26+
super(requestHttp, respType);
2727
}
2828

2929
@Override

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/okhttp/OkHttpMinishopMediaUploadRequestCustomizeExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
*/
1919
@Slf4j
2020
public class OkHttpMinishopMediaUploadRequestCustomizeExecutor extends MinishopUploadRequestCustomizeExecutor<OkHttpClient, OkHttpProxyInfo> {
21-
public OkHttpMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp) {
22-
super(requestHttp);
21+
public OkHttpMinishopMediaUploadRequestCustomizeExecutor(RequestHttp requestHttp, String respType) {
22+
super(requestHttp, respType);
2323
}
2424

2525
@Override

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package cn.binarywang.wx.miniapp.api;
22

33
import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult;
4+
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest;
5+
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse;
46
import me.chanjar.weixin.common.error.WxErrorException;
57

68
import java.io.File;
@@ -55,6 +57,17 @@ public interface WxMaSecCheckService {
5557
boolean checkMessage(String msgString) throws WxErrorException;
5658

5759

60+
/**
61+
* <pre>
62+
* 检查一段文本是否含有违法违规内容(新版本接口,主要是request和response做了参数优化)
63+
* 详情请见: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html
64+
* </pre>
65+
* @param msgRequest
66+
* @return WxMaMsgSecCheckCheckResponse
67+
* @throws WxErrorException
68+
*/
69+
WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException;
70+
5871
/**
5972
* <pre>
6073
* 异步校验图片/音频是否含有违法违规内容。

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaShopImgService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,19 @@ public interface WxMaShopImgService {
1414
/**
1515
* 上传图片
1616
*
17+
* @param file
1718
* @return WxMinishopImageUploadCustomizeResult
1819
* @throws WxErrorException
1920
*/
2021
WxMinishopImageUploadCustomizeResult uploadImg(File file) throws WxErrorException;
22+
23+
/**
24+
* 上传图片,带respType参数
25+
*
26+
* @param file
27+
* @param respType
28+
* @return WxMinishopImageUploadCustomizeResult
29+
* @throws WxErrorException
30+
*/
31+
WxMinishopImageUploadCustomizeResult uploadImg(File file, String respType) throws WxErrorException;
2132
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,25 @@
33
import cn.binarywang.wx.miniapp.api.WxMaSecCheckService;
44
import cn.binarywang.wx.miniapp.api.WxMaService;
55
import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult;
6+
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest;
7+
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse;
8+
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
69
import com.google.gson.JsonObject;
710
import lombok.RequiredArgsConstructor;
811
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
12+
import me.chanjar.weixin.common.enums.WxType;
913
import me.chanjar.weixin.common.error.WxError;
1014
import me.chanjar.weixin.common.error.WxErrorException;
1115
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
16+
import me.chanjar.weixin.common.util.json.GsonParser;
1217
import org.apache.commons.io.FileUtils;
1318

1419
import java.io.File;
1520
import java.io.IOException;
1621
import java.net.URL;
1722

1823
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.SecCheck.*;
24+
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.ERRCODE;
1925

2026
/**
2127
* <pre>
@@ -59,6 +65,16 @@ public boolean checkMessage(String msgString) throws WxErrorException {
5965
return true;
6066
}
6167

68+
@Override
69+
public WxMaMsgSecCheckCheckResponse checkMessage(WxMaMsgSecCheckCheckRequest msgRequest) throws WxErrorException {
70+
String response = this.service.post(MSG_SEC_CHECK_URL, msgRequest);
71+
JsonObject jsonObject = GsonParser.parse(response);
72+
if (jsonObject.get(ERRCODE).getAsInt() != 0) {
73+
throw new WxErrorException(WxError.fromJson(response, WxType.MiniApp));
74+
}
75+
return WxMaGsonBuilder.create().fromJson(response, WxMaMsgSecCheckCheckResponse.class);
76+
}
77+
6278
@Override
6379
public WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType)
6480
throws WxErrorException {

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaShopImgServiceImpl.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@ public class WxMaShopImgServiceImpl implements WxMaShopImgService {
2323
@Override
2424
public WxMinishopImageUploadCustomizeResult uploadImg(File file) throws WxErrorException {
2525
WxMinishopImageUploadCustomizeResult result = this.service.execute(
26-
MinishopUploadRequestCustomizeExecutor.create(this.service.getRequestHttp()), IMG_UPLOAD, file);
26+
MinishopUploadRequestCustomizeExecutor.create(this.service.getRequestHttp(), "0"), IMG_UPLOAD, file);
27+
return result;
28+
}
29+
30+
@Override
31+
public WxMinishopImageUploadCustomizeResult uploadImg(File file, String respType) throws WxErrorException {
32+
WxMinishopImageUploadCustomizeResult result = this.service.execute(
33+
MinishopUploadRequestCustomizeExecutor.create(this.service.getRequestHttp(), respType), IMG_UPLOAD, file);
2734
return result;
2835
}
2936
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package cn.binarywang.wx.miniapp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
6+
import java.io.Serializable;
7+
8+
/**
9+
* @author liming1019
10+
* @date 2021/8/17
11+
*/
12+
@Data
13+
public class WxMaBaseResponse implements Serializable {
14+
private static final long serialVersionUID = 3932406255203539965L;
15+
/**
16+
* 错误码
17+
* <pre>
18+
* 是否必填:
19+
* </pre>
20+
*/
21+
@SerializedName("errcode")
22+
private Integer errcode;
23+
24+
/**
25+
* 错误信息
26+
* <pre>
27+
* 是否必填:
28+
* </pre>
29+
*/
30+
@SerializedName("errmsg")
31+
private String errmsg;
32+
}

0 commit comments

Comments
 (0)