提交 226e4486 作者: xiaowang

消息推送token验证

上级 6ddbedf5
......@@ -20,4 +20,6 @@ public interface WxApiService {
String getStableAccessToken() throws Exception;
String checkSignature(Map<String, String> params) throws Exception;
ResultBody mediaCheckAsync(String openid, String mediaUrl);
}
......@@ -9,6 +9,7 @@ import com.mmc.csf.common.util.wx.WXMsgPushUtils;
import com.mmc.csf.release.constant.UserSystemConstant;
import com.mmc.csf.release.constant.WxConstant;
import com.mmc.csf.release.service.WxApiService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
......@@ -24,6 +25,7 @@ import java.util.concurrent.TimeUnit;
* 概要:
*/
@Service
@Slf4j
public class WxApiServiceImpl implements WxApiService {
@Autowired
private UserSystemConstant userSystemConstant;
......@@ -31,6 +33,13 @@ public class WxApiServiceImpl implements WxApiService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* 文本识别
*
* @param openid
* @param content
* @return
*/
@Override
public ResultBody msgSecCheck(String openid, String content) {
try {
......@@ -41,10 +50,7 @@ public class WxApiServiceImpl implements WxApiService {
param.put("scene", 3);
param.put("openid", openid);
String url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken;
String res = HttpHelper.httpPost(url, param.toString());
JSONObject result = JSONObject.parseObject(res);
JSONObject resultData = result.getJSONObject(WxConstant.RESULT);
if (!resultData.getString(WxConstant.LABEL).equals(WxConstant.LABEL_DATA)) {
if (buildParams(param, url)) {
return ResultBody.error(ResultEnum.DYNAMIC_SENSITIVE_INFO);
}
} catch (Exception e) {
......@@ -53,6 +59,43 @@ public class WxApiServiceImpl implements WxApiService {
return ResultBody.success();
}
/**
* 图片视频识别
*
* @param openid
* @param mediaUrl
* @return
*/
@Override
public ResultBody mediaCheckAsync(String openid, String mediaUrl) {
try {
String accessToken = this.getStableAccessToken();
JSONObject param = new JSONObject();
param.put("media_url", mediaUrl);
param.put("media_type", 2);
param.put("version", 2);
param.put("scene", 3);
param.put("openid", openid);
String url = "https://api.weixin.qq.com/wxa/media_check_async?access_token=" + accessToken;
if (buildParams(param, url)) {
return ResultBody.error(ResultEnum.DYNAMIC_SENSITIVE_INFO);
}
} catch (Exception e) {
e.printStackTrace();
}
return ResultBody.success();
}
private boolean buildParams(JSONObject param, String url) throws Exception {
String res = HttpHelper.httpPost(url, param.toString());
JSONObject result = JSONObject.parseObject(res);
JSONObject resultData = result.getJSONObject(WxConstant.RESULT);
if (!resultData.getString(WxConstant.LABEL).equals(WxConstant.LABEL_DATA)) {
return true;
}
return false;
}
@Override
public String getStableAccessToken() {
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
......
......@@ -34,3 +34,4 @@ data-filter:
- /release/actuator/health/readiness
- /release/tender/infoById
- /release/wechat/checkSignature
- /release/wechat/mediaCheckAsync
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论