Search in sources :

Example 6 with WxCpXmlMessage

use of me.chanjar.weixin.cp.bean.WxCpXmlMessage in project weixin-java-tools by chanjarster.

the class WxCpEndpointServlet method service.

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    response.setStatus(HttpServletResponse.SC_OK);
    String msgSignature = request.getParameter("msg_signature");
    String nonce = request.getParameter("nonce");
    String timestamp = request.getParameter("timestamp");
    String echostr = request.getParameter("echostr");
    if (StringUtils.isNotBlank(echostr)) {
        if (!wxCpService.checkSignature(msgSignature, timestamp, nonce, echostr)) {
            // 消息签名不正确,说明不是公众平台发过来的消息
            response.getWriter().println("非法请求");
            return;
        }
        WxCpCryptUtil cryptUtil = new WxCpCryptUtil(wxCpConfigStorage);
        String plainText = cryptUtil.decrypt(echostr);
        // 说明是一个仅仅用来验证的请求,回显echostr
        response.getWriter().println(plainText);
        return;
    }
    WxCpXmlMessage inMessage = WxCpXmlMessage.fromEncryptedXml(request.getInputStream(), wxCpConfigStorage, timestamp, nonce, msgSignature);
    WxCpXmlOutMessage outMessage = wxCpMessageRouter.route(inMessage);
    if (outMessage != null) {
        response.getWriter().write(outMessage.toEncryptedXml(wxCpConfigStorage));
    }
    return;
}
Also used : WxCpCryptUtil(me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil) WxCpXmlMessage(me.chanjar.weixin.cp.bean.WxCpXmlMessage) WxCpXmlOutMessage(me.chanjar.weixin.cp.bean.WxCpXmlOutMessage)

Aggregations

WxCpXmlMessage (me.chanjar.weixin.cp.bean.WxCpXmlMessage)6 Map (java.util.Map)2 WxSessionManager (me.chanjar.weixin.common.session.WxSessionManager)2 Test (org.testng.annotations.Test)2 InputStream (java.io.InputStream)1 WxCpXmlOutMessage (me.chanjar.weixin.cp.bean.WxCpXmlOutMessage)1 WxCpXmlOutTextMessage (me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage)1 WxCpCryptUtil (me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil)1 DataProvider (org.testng.annotations.DataProvider)1