调整
This commit is contained in:
parent
b9c5228d59
commit
f7293a1f04
@ -1,4 +1,5 @@
|
|||||||
package cn.skcks.docking.wx.services.mp.config;
|
package cn.skcks.docking.wx.services.mp.config;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.info.Contact;
|
import io.swagger.v3.oas.models.info.Contact;
|
||||||
import io.swagger.v3.oas.models.info.Info;
|
import io.swagger.v3.oas.models.info.Info;
|
||||||
import io.swagger.v3.oas.models.info.License;
|
import io.swagger.v3.oas.models.info.License;
|
||||||
|
@ -68,54 +68,64 @@ public class MpAppService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理微信公众号消息请求的服务方法
|
||||||
|
*
|
||||||
|
* @param request HTTP请求对象
|
||||||
|
* @param response HTTP响应对象
|
||||||
|
* @param appId 应用ID
|
||||||
|
* @param signatureVo 签名验证信息
|
||||||
|
* @throws IOException 如果处理过程中发生IO异常
|
||||||
|
*/
|
||||||
public void service(HttpServletRequest request, HttpServletResponse response, String appId, SignatureVo signatureVo) throws IOException {
|
public void service(HttpServletRequest request, HttpServletResponse response, String appId, SignatureVo signatureVo) throws IOException {
|
||||||
|
// 设置响应内容类型和状态码
|
||||||
response.setContentType("text/html;charset=utf-8");
|
response.setContentType("text/html;charset=utf-8");
|
||||||
response.setStatus(HttpServletResponse.SC_OK);
|
response.setStatus(HttpServletResponse.SC_OK);
|
||||||
|
|
||||||
|
// 从服务映射中获取WxMpService实例
|
||||||
WxMpService wxMpService = serviceMap.get(appId);
|
WxMpService wxMpService = serviceMap.get(appId);
|
||||||
if (ObjectUtils.anyNull(appId, signatureVo, wxMpService)) {
|
if (ObjectUtils.anyNull(appId, signatureVo, wxMpService)) {
|
||||||
|
// 如果参数为空,返回非法请求响应
|
||||||
response.getWriter().println("非法请求");
|
response.getWriter().println("非法请求");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 验证签名是否合法
|
||||||
if (!wxMpService.checkSignature(signatureVo.getTimestamp(), signatureVo.getNonce(), signatureVo.getSignature())) {
|
if (!wxMpService.checkSignature(signatureVo.getTimestamp(), signatureVo.getNonce(), signatureVo.getSignature())) {
|
||||||
|
// 如果签名不合法,返回非法请求响应
|
||||||
response.getWriter().println("非法请求");
|
response.getWriter().println("非法请求");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理微信服务器的验证请求
|
||||||
// 签名验证请求
|
|
||||||
String echostr = request.getParameter("echostr");
|
String echostr = request.getParameter("echostr");
|
||||||
if (StringUtils.isNotBlank(echostr)) {
|
if (StringUtils.isNotBlank(echostr)) {
|
||||||
|
// 返回echostr以通过微信服务器的验证
|
||||||
response.getWriter().println(echostr);
|
response.getWriter().println(echostr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ?
|
// 获取加密类型,默认为"raw"
|
||||||
"raw" :
|
String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type");
|
||||||
request.getParameter("encrypt_type");
|
|
||||||
|
// 处理消息并获取解析后的WxMpXmlMessage对象
|
||||||
WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo);
|
WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo);
|
||||||
if (inMessage == null) {
|
if (inMessage == null) {
|
||||||
|
// 如果无法识别的加密类型,返回不可识别的消息响应
|
||||||
response.getWriter().println("不可识别的加密类型");
|
response.getWriter().println("不可识别的加密类型");
|
||||||
} else {
|
} else {
|
||||||
|
// 记录接收到的消息内容
|
||||||
log.debug("\n[↓] 接收消息: \n{}", inMessage);
|
log.debug("\n[↓] 接收消息: \n{}", inMessage);
|
||||||
|
|
||||||
// 客服消息
|
// 构建自动回复的消息
|
||||||
// response.getWriter().write("");
|
|
||||||
//mpKeFuService.reply(response, wxMpService, inMessage);
|
|
||||||
// WxMpKefuMessage outMessage = WxMpKefuMessage.TEXT()
|
|
||||||
// .toUser(inMessage.getFromUser())
|
|
||||||
// .content(DateUtil.now())
|
|
||||||
// .build();
|
|
||||||
// wxMpService.getKefuService().sendKefuMessage(outMessage);
|
|
||||||
|
|
||||||
// 自动回复
|
|
||||||
WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT()
|
WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT()
|
||||||
.toUser(inMessage.getFromUser())
|
.toUser(inMessage.getFromUser())
|
||||||
.fromUser(inMessage.getToUser())
|
.fromUser(inMessage.getToUser())
|
||||||
.content(DateUtil.now())
|
.content(DateUtil.now())
|
||||||
.build();
|
.build();
|
||||||
log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage));
|
log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage));
|
||||||
|
|
||||||
|
// 根据加密类型返回响应
|
||||||
if (StringUtils.equalsIgnoreCase(encryptType, "raw")) {
|
if (StringUtils.equalsIgnoreCase(encryptType, "raw")) {
|
||||||
response.getWriter().write(outMessage.toXml());
|
response.getWriter().write(outMessage.toXml());
|
||||||
} else {
|
} else {
|
||||||
@ -124,6 +134,7 @@ public class MpAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有公众号列表
|
* 获取所有公众号列表
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user