收藏
回答

服务号被动回复用户消息,用户收不到?

    @PostMapping(produces = "application/xml;charset=UTF-8")
    public String receiveWechatNotification(@RequestBody String body, HttpServletRequest request) {
        log.info("controller " + body);
        try {
            WechatCallbackEvent event = parser.parse(body);
            if (event instanceof WechatCallBackScanEvent) {
                //扫码
                WechatCallBackScanEvent scanEvent = (WechatCallBackScanEvent) event;
                String openId = scanEvent.getOpenId();
                return handleScanEvent(scanEvent);
            } else if (event instanceof WechatCallbackSubscribeEvent) {
                //直接关注
                WechatCallbackSubscribeEvent subscribeEvent = (WechatCallbackSubscribeEvent) event;
                String openid = subscribeEvent.getOpenId();
                return defaultCreateWelcomeMsg(openid);
            } else if (event instanceof WechatCallbackUnsubscribeEvent) {
                //取关
                WechatCallbackUnsubscribeEvent unsubscribeEvent = (WechatCallbackUnsubscribeEvent) event;
                String openid = unsubscribeEvent.getOpenId();
                handleUnsubscribeEvent(openid);
                return "success";
            } else if (event instanceof WechatCallbackClickEvent) {
                //点击事件
            } else if (event instanceof WechatCallbackTextEvent) {
                //TODO 关键字事件 暂时不处理
//                WechatCallbackTextEvent textEvent = (WechatCallbackTextEvent) event;
//                return replyKeywordMessage(textEvent.getOpenId(), textEvent.getContent());
                WechatCallbackTextEvent textEvent = (WechatCallbackTextEvent) event;
                WechatCallBackScanEvent scanEvent = (WechatCallBackScanEvent) event;
                String openId = scanEvent.getOpenId();
                String content = textEvent.getContent();

                if (content.contains("交流会")) {
                    // 用户发送了"交流会"关键字时,回复信息
                    WxMpXmlOutTextMessage outMessage = WxMpXmlOutTextMessage.TEXT()
                            .content("感谢您的关注!我们将为您提供最新的交流会信息,请保持关注!")
                            .fromUser(textEvent.getFromUserName())
                            .toUser(textEvent.getToUserName())
                            .build();
                    String responseXml = outMessage.toXml();
                    System.out.println("Response XML: " + responseXml);
                    return responseXml;  // 返回响应给微信服务器

采用的明文方式

返回

回答关注问题邀请回答
收藏

3 个回答

  • Mr.Zhao
    Mr.Zhao
    发表于小程序端
    2025-08-22

    尴尬,to 和 from 反了

    2025-08-22
    有用 1
    回复 1
    • 影*
      影*
      2025-08-22
      感谢大佬
      2025-08-22
      回复
  • 影*
    影*
    2025-08-22

    加密了也不行

    2025-08-22
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-08-22
    有用
登录 后发表内容