• 微信公众号组件


    一、简介

    1.1 概述

    微信公众号服务支持,提供微信公众号接口。

    1.2 组件坐标

    <dependency>
        <groupId>org.hzero.starter</groupId>
        <artifactId>hzero-starter-integrate-wechat-official</artifactId>
    </dependency>
    

    二、使用说明

    提供方法对象WechatMaterialManageServiceImpWeChatMenuServiceImpWeChatMessageManageServiceImp,实现一下对应微信公众号接口:

    2.1 提供基础接口

    BaseWechatService 提供了微信公众号的基础接口,其实现类被以上提供的方法对象所继承

    
        /**
         * 响应微信的服务器配置
         *
         * @param signature 微信加密签名
         * @param timestamp 时间戳
         * @param nonce     随机数
         * @param echostr   随机字符串
         * @param token     公众号配置的token
         * @return 根据情况返回 echostr
         */
        String wechatValid(String signature, String timestamp, String nonce, String echostr, String token);
        
        /**
         * 获取token且redis缓存
         *
         * @param appId     微信appId
         * @param appSecret 微信appSecret
         * @return
         */
        TokenDTO getTokenWithCache(String appId, String appSecret);
    
        /**
         * 获取微信token
         *
         * @param appId     微信appId
         * @param appSecret 微信appSecret
         * @return
         */
        TokenDTO getToken(String appId, String appSecret);
    
        /**
         * 从第三方 获取微信的token
         * @param authUrl 第三方地址,参数需自己拼接
         * @return
         */
        TokenDTO getTokenFromThirdPart(String authUrl);
    
        /**
         * 通过模版编号获得模板ID
         *
         * @param templateIdShort 模版编号
         * @param accessToken  微信接口调用凭证
         * @return
         */
        GetTemplateIdResultDTO getTemplateId(String templateIdShort,String accessToken);
    
        /**
         * 获取所有模版
         *
         * @param accessToken  微信接口调用凭证
         * @return
         */
        AllTemplatesDTO getAllTemplate(String accessToken);
    
        /**
         * 通过模版id删除模版
         *
         * @param templateId 模版id
         * @param accessToken  微信接口调用凭证
         * @return
         */
        DefaultResultDTO deleteTemplateById(String templateId,String accessToken);
    
        /**
         * 推送模版消息
         *
         * @param templateSendDTO 模版消息推送体
         * @param accessToken  微信接口调用凭证
         * @return
         */
        TemplateSendResultDTO sendTemplateMessage(TemplateSendDTO templateSendDTO,String accessToken);
    
        /**
         * 批量发送模版消息
         *
         * @param templateSendDTOs 模版消息推送体
         * @param accessToken  微信接口调用凭证
         * @return
         */
        List<TemplateSendResultDTO> batchSendTemplateMessage(List<TemplateSendDTO> templateSendDTOs, String accessToken);        
            
    

    2.2 素材管理相关接口

    WechatMaterialManageService接口提供了微信公众号相关接口

    
        /**
         *  新增临时素材
         * @param access_token
         * @param type
         * @param media
         * @return
         */
        UploadMediaResultDTO uploadMedia(String access_token, String type, MediaDTO media);
    
        /**
         * 获取临时素材
         * @param access_token
         * @param media_id
         * @return
         */
        ResponseEntity<GetMediaResulDTO> getMedia(String access_token, String media_id);
    
        /**
         *  获取高清语音素材
         * @param access_token
         * @param media_id
         * @return
         */
        ResponseEntity<DefaultResultDTO> getHDVoice(String access_token, String media_id);
    
        /**
         *  新增永久图文素材
         * @param access_token
         * @param addMediaDTO
         * @return
         */
        AddMediaResultDTO addMedia(String access_token, AddMediaDTO addMediaDTO);
    
        /**
         *  上传图文消息内的图片获取URL
         * @param access_token
         * @param mediaDTO
         * @return
         */
        UploadImageMediaResultDTO uploadImageMediaResultDTO (String access_token, MediaDTO mediaDTO);
    
        /**
         * 新增其他类型永久素材
         * @return
         */
        AddMaterialResultDTO addMaterial(String access_token, String type, MediaDTO mediaDTO, DescriptionDTO description);
    
        /**
         * 获取永久素材
         * @param access_token
         * @param media_id
         * @return
         */
        GetMaterialResultDTO getMaterial(String access_token, String media_id);
    
        /**
         * 删除永久素材
         * @param access_token
         * @param media_id
         * @return
         */
        DefaultResultDTO deleteMaterial(String access_token, String media_id);
    
        /**
         * 修改永久图文素材
         * @param access_token
         * @param updateMaterialDTO
         * @return
         */
        DefaultResultDTO updateMaterial(String access_token,UpdateMaterialDTO updateMaterialDTO );
    
        /**
         * 获取素材总数
         * @param access_token
         * @return
         */
        GetMaterialCountResultDTO getMaterialCount(String  access_token);
    
        /**
         *  获取素材列表
         * @param access_token
         * @param updateMaterialDTO
         * @return
         */
        GetMaterialListResultDTO getMaterialList(String access_token, GetMaterialListDTO updateMaterialDTO);
    
    

    2.3 自定义菜单接口

    WeChatMenuService提供微信公众号自定义菜单相关接口

    
        /**
         *创建接口
         * @param accessToken
         * @param createMenuDTO
         * @return
         */
        DefaultResultDTO createMenu(String accessToken, CreateMenuDTO createMenuDTO);
    
        /**
         *  查询接口
         * @param accessToken
         * @return
         */
        GetMenuResultDTO getMenu(String accessToken);
    
        /**
         * 删除接口
         * @param accessToken
         * @return
         */
        DefaultResultDTO deleteMenu(String accessToken);
    
        /**
         * 创建个性化菜单
         * @param accessToken
         * @param  createAddConditionalMenuDTO
         * @return
         */
         CreateAddConditionalMenuResultDTO createAddConditionalMenu(String accessToken,  CreateAddConditionalMenuDTO createAddConditionalMenuDTO);
    
        /**
         * 删除个性化菜单
         * @param accessToken
         * @param menuid
         * @return
         */
        DefaultResultDTO deleteAddConditionalMenu(String  accessToken, String menuid);
    
        /**
         * 测试个性化菜单匹配结果
         * @param accessToken
         * @param user_id
         * @return
         */
        TestMatchMenuResultDTO testMatchMenu(String accessToken, String user_id );
    
        /**
         * 获取自定义菜单配置
         * @param accessToken
         * @return
         */
        GetMenuConfigurationResultDTO getMenuConfiguration(String accessToken);
    
    

    2.4 消息管理相关接口

    WeChatMessageManageService提供微信公众号消息管理相关接口

    
        /**
         * 添加客服帐号
         * @param accessToken
         * @param customerServiceAccountDTO
         * @return
         */
        DefaultResultDTO addCustomerServiceAccount(String accessToken, CustomerServiceAccountDTO customerServiceAccountDTO);
    
        /**
         * 修改客服帐号
         * @param accessToken
         * @param customerServiceAccountDTO
         * @return
         */
        DefaultResultDTO updateCustomerServiceAccount(String accessToken, CustomerServiceAccountDTO customerServiceAccountDTO);
    
        /**
         * 删除客服帐号
         * @param accessToken
         * @param customerServiceAccountDTO
         * @return
         */
        DefaultResultDTO deleteCustomerServiceAccount(String accessToken, CustomerServiceAccountDTO customerServiceAccountDTO);
    
        /**
         * 设置客服帐号的头像
         * @param accessToken
         * @param media
         * @return
         */
        DefaultResultDTO setCustomerServiceAccountHeadImage(String accessToken, MediaDTO media);
    
        /**
         * 获取所有客服账号
         * @param accessToken
         * @return
         */
        GetAllCustomerServiceAccountResultDTO getAllCustomerServiceAccount(String accessToken);
    
        /**
         * 客服接口-发文本消息
         * @param accessToken
         * @param textMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceTextMessage(String accessToken, TextMessageDTO textMessageDTO);
    
        /**
         * 客服接口-发图片消息
         * @param accessToken
         * @param imageMassageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceImageMessage(String accessToken, ImageMassageDTO imageMassageDTO);
    
        /**
         * 客服接口-发语音消息
         * @param accessToken
         * @param voiceMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceVoiceMessage(String accessToken, VoiceMessageDTO voiceMessageDTO);
    
        /**
         * 客服接口-发视频消息
         * @param accessToken
         * @param videoMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceVideoMessage(String accessToken, VideoMessageDTO videoMessageDTO);
    
        /**
         * 客服接口-发音乐消息
         * @param accessToken
         * @param musicMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceMusicMessage(String accessToken, MusicMessageDTO musicMessageDTO);
    
        /**
         * 客服接口-发图文消息(点击跳转到外链)
         * @param accessToken
         * @param newsMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceNewsMessage(String accessToken, NewsMessageDTO newsMessageDTO);
    
        /**
         * 客服接口-发图文消息(点击跳转到图文消息页面)
         * @param accessToken
         * @param mpNewsMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceMpNewsMessage(String accessToken, MpNewsMessageDTO mpNewsMessageDTO);
    
        /**
         * 客服接口-发送菜单消息
         * @param accessToken
         * @param menuMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceMenuMessage(String accessToken, MenuMessageDTO menuMessageDTO);
    
        /**
         * 客服接口-发送卡券单消息
         * @param accessToken
         * @param wxCardMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceWxCardMessage(String accessToken, WxCardMessageDTO wxCardMessageDTO);
    
        /**
         * 客服接口-发送小程序卡片消息
         * @param accessToken
         * @param miniprogrampageMessageDTO
         * @return
         */
        DefaultResultDTO  sendCustomServiceMiniProgramPageMessage(String accessToken, MiniProgramPageMessageDTO miniprogrampageMessageDTO);
    
        /**
         * 客服输入状态
         * @param accessToken
         * @param customServiceMessageStatusDTO
         * @return
         */
        DefaultResultDTO customServiceMessageStatus(String accessToken, CustomServiceMessageStatusDTO customServiceMessageStatusDTO );
    
        /**
         * 上传图文消息内的图片获取URL【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param media
         * @return
         */
        UploadMediaAndGetUrlResultDTO uploadMediaAndGetUrl(String accessToken, MediaDTO media);
    
        /**
         * 上传图文消息素材【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param uploadNewsMaterialDTO
         * @return
         */
        UploadNewsMaterialResultDTO  uploadNewsMaterial(String accessToken, UploadNewsMaterialDTO uploadNewsMaterialDTO );
    
        /**
         * 根据标签进行群发-文本消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupTextMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupTextMessageByMark(String accessToken, GroupTextMessageByMarkDTO groupTextMessageByMarkDTO);
    
        /**
         * 根据标签进行群发-图文消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupMpNewsMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupMpNewsMessageByMark(String accessToken, GroupMpNewsMessageByMarkDTO groupMpNewsMessageByMarkDTO);
    
        /**
         * 根据标签进行群发-语音/音频消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupVoiceMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupVoiceMessageByMark(String accessToken, GroupVoiceMessageByMarkDTO groupVoiceMessageByMarkDTO);
    
        /**
         * 根据标签进行群发-图片消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupImageMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupImageMessageByMark(String accessToken, GroupImageMessageByMarkDTO groupImageMessageByMarkDTO);
    
        /**
         * 根据标签进行群发-视频消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupVideoMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupVideoMessageByMark(String accessToken, GroupVideoMessageByMarkDTO groupVideoMessageByMarkDTO );
    
        /**
         * 根据标签进行群发-卡券消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param groupWxCardMessageByMarkDTO
         * @return
         */
        GroupMessageResultDTO sendGroupWxCardMessageByMark(String accessToken, GroupWxCardMessageByMarkDTO groupWxCardMessageByMarkDTO);
    
        /**
         * 根据OpenID列表群发-文本消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupTextMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupTextMessageByOpenId(String accessToken, GroupTextMessageByOpenIdDTO groupTextMessageByOpenIdDTO);
    
        /**
         * 根据OpenID列表群发-图文消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupMpNewsMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupMpNewsMessageByOpenId(String accessToken, GroupMpNewsMessageByOpenIdDTO groupMpNewsMessageByOpenIdDTO);
    
        /**
         * 根据OpenID列表群发-语音消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupVoiceMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupVoiceMessageByOpenId(String accessToken, GroupVoiceMessageByOpenIdDTO groupVoiceMessageByOpenIdDTO);
    
        /**
         * 根据OpenID列表群发-图片消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupImageMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupImageMessageByOpenId(String accessToken, GroupImageMessageByOpenIdDTO groupImageMessageByOpenIdDTO);
    
        /**
         * 根据OpenID列表群发-视频消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupVideoMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupVideoMessageByOpenId(String accessToken, GroupVideoMessageByOpenIdDTO groupVideoMessageByOpenIdDTO );
    
        /**
         *  根据OpenID列表群发-卡券消息【订阅号不可用,服务号认证后可用】
         * @param accessToken
         * @param groupWxCardMessageByOpenIdDTO
         * @return
         */
        GroupMessageResultDTO sendGroupWxCardMessageByOpenId(String accessToken, GroupWxCardMessageByOpenIdDTO groupWxCardMessageByOpenIdDTO);
    
        /**
         *  删除群发【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param deleteGroupMessageDTO
         * @return
         */
        DefaultResultDTO deleteGroupMessage(String accessToken, DeleteGroupMessageDTO deleteGroupMessageDTO);
    
        /**
         *  预览接口——图文消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewMpNewsMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewMpNewsMessage(String accessToken, PreviewMpNewsMessageDTO previewMpNewsMessageDTO);
    
        /**
         * 预览接口——文本消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewTextMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewTextMessage(String accessToken, PreviewTextMessageDTO previewTextMessageDTO);
    
        /**
         * 预览接口——图片消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewImageMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewImageMessage(String accessToken, PreviewImageMessageDTO previewImageMessageDTO);
    
        /**
         * 预览接口——视频消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewVideoMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewVideoMessage(String accessToken, PreviewVideoMessageDTO previewVideoMessageDTO);
    
        /**
         *  预览接口——语音消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewVoiceMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewVoiceMessage(String accessToken, PreviewVoiceMessageDTO previewVoiceMessageDTO);
    
        /**
         * 预览接口——卡券消息【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param previewWxCardMessageDTO
         * @return
         */
        PreviewMessageResultDTO sendPreviewWxCardMessage(String accessToken, PreviewWxCardMessageDTO previewWxCardMessageDTO);
    
        /**
         * 查询群发消息发送状态【订阅号与服务号认证后均可用】
         * @param accessToken
         * @param msg_id
         * @return
         */
        GetGroupMessageStatusResultDTO getGroupMessageStatus(String accessToken, String  msg_id);
    
        /**
         * 获取群发速度
         * @param accessToken
         * @return
         */
        GetGroupSendMessageSpeedResultDTO  getGroupSendMessageSpeed(String accessToken);
    
        /**
         * 设置群发速度
         * @param accessToken
         * @param speed
         * @return
         */
        DefaultResultDTO setGroupSendMessageSpeed(String accessToken, Long speed);
    
        /**
         * 通过API推送订阅模板消息给到授权微信用户
         * @param accessToken
         * @param subscribeTemplateMessageDTO
         * @return
         */
        DefaultResultDTO subscribeTemplateMessageToUser(String accessToken, SubscribeTemplateMessageDTO subscribeTemplateMessageDTO);
    
        /**
         * 公众号调用或第三方平台帮公众号调用对公众号的所有api调用(包括第三方帮其调用)次数进行清零:
         * @param accessToken
         * @param appid
         * @return
         */
        DefaultResultDTO reset(String accessToken, String appid);
    
        /**
         * 获取公众号的自动回复规则
         * @param accessToken
         * @return
         */
        GetCurrentAutoReplyInfoResultDTO  getCurrentAutoReplyInfo(String accessToken);