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