1. /实现类
  2. @Service
  3. public class WeChatServiceImpl implements IWeChatService {
  4.  
  5. @Override
  6. public WeChatSendMsgResult sendMsg(String paramJson) {
  7. try {
  8. String url = MessageFormat.format(WeChatConstant.SEND_MESSAGE, WeChatUtil.getToken());
  9. String result = HttpUtil.doJsonPost(url, paramJson, null);
  10. return JSONObject.parseObject(result, WeChatSendMsgResult.class);
  11. } catch (Exception e) {
  12. return new WeChatSendMsgResult(-2020, "消息通知发送到微信异常");
  13. }
  14. }
  15.  
  16. @Override
  17. public WeChatSendMsgResult sendTextMsg(String touser, String toparty, String totag, String content) {
  18. try {
  19. WeChatText text = new WeChatText();
  20. text.setContent(content);
  21. WeChatTextMsg textMsg = new WeChatTextMsg();
  22. textMsg.setText(text);
  23. textMsg.setMsgtype("text");
  24. textMsg.setAgentid(WeChatUtil.agentId);
  25. textMsg.setTouser(touser);
  26. textMsg.setToparty(toparty);
  27. textMsg.setTotag(totag);
  28. return sendMsg(JSONObject.toJSONString(textMsg));
  29. } catch (Exception e) {
  30. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  31. }
  32. }
  33.  
  34. @Override
  35. public WeChatSendMsgResult sendImageMsg(String touser, String toparty, String totag, String mediaId) {
  36. try {
  37. WeChatImage image = new WeChatImage();
  38. image.setMedia_id(mediaId);
  39. WeChatImageMsg imageMsg = new WeChatImageMsg();
  40. imageMsg.setImage(image);
  41. imageMsg.setMsgtype("image");
  42. imageMsg.setAgentid(WeChatUtil.agentId);
  43. imageMsg.setTouser(touser);
  44. imageMsg.setToparty(toparty);
  45. imageMsg.setTotag(totag);
  46. return sendMsg(JSONObject.toJSONString(imageMsg));
  47. } catch (Exception e) {
  48. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  49. }
  50. }
  51.  
  52. @Override
  53. public WeChatSendMsgResult sendVoiceMsg(String touser, String toparty, String totag, String mediaId) {
  54. try {
  55. WeChatVoice voice = new WeChatVoice();
  56. voice.setMedia_id(mediaId);
  57. WeChatVoiceMsg voiceMsg = new WeChatVoiceMsg();
  58. voiceMsg.setVoice(voice);
  59. voiceMsg.setMsgtype("voice");
  60. voiceMsg.setAgentid(WeChatUtil.agentId);
  61. voiceMsg.setTouser(touser);
  62. voiceMsg.setToparty(toparty);
  63. voiceMsg.setTotag(totag);
  64. return sendMsg(JSONObject.toJSONString(voiceMsg));
  65. } catch (Exception e) {
  66. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  67. }
  68. }
  69.  
  70. @Override
  71. public WeChatSendMsgResult sendVideoMsg(String touser, String toparty, String totag, String description, String mediaId, String title) {
  72. try {
  73. WeChatVideo video = new WeChatVideo();
  74. video.setDescription(description);
  75. video.setMedia_id(mediaId);
  76. video.setTitle(title);
  77. WeChatVideoMsg videoMsg = new WeChatVideoMsg();
  78. videoMsg.setVideo(video);
  79. videoMsg.setMsgtype("video");
  80. videoMsg.setAgentid(WeChatUtil.agentId);
  81. videoMsg.setTouser(touser);
  82. videoMsg.setToparty(toparty);
  83. videoMsg.setTotag(totag);
  84. return sendMsg(JSONObject.toJSONString(videoMsg));
  85. } catch (Exception e) {
  86. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  87. }
  88. }
  89.  
  90. @Override
  91. public WeChatSendMsgResult sendFileMsg(String touser, String toparty, String totag, String mediaId) {
  92. try {
  93. WeChatFile file = new WeChatFile();
  94. file.setMedia_id(mediaId);
  95. WeChatFileMsg fileMsg = new WeChatFileMsg();
  96. fileMsg.setFile(file);
  97. fileMsg.setMsgtype("file");
  98. fileMsg.setAgentid(WeChatUtil.agentId);
  99. fileMsg.setTouser(touser);
  100. fileMsg.setToparty(toparty);
  101. fileMsg.setTotag(totag);
  102. return sendMsg(JSONObject.toJSONString(fileMsg));
  103. } catch (Exception e) {
  104. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  105. }
  106. }
  107.  
  108. @Override
  109. public WeChatSendMsgResult sendTextCardMsg(String touser, String toparty, String totag, String btnTxt, String description, String title, String url) {
  110. try {
  111. WeChatTextCard textCard = new WeChatTextCard();
  112. textCard.setBtntxt(btnTxt);
  113. textCard.setDescription(description);
  114. textCard.setTitle(title);
  115. textCard.setUrl(url);
  116. WeChatTextCardMsg textCartMsg = new WeChatTextCardMsg();
  117. textCartMsg.setTextcard(textCard);
  118. textCartMsg.setMsgtype("textcard");
  119. textCartMsg.setAgentid(WeChatUtil.agentId);
  120. textCartMsg.setTouser(touser);
  121. textCartMsg.setToparty(toparty);
  122. textCartMsg.setTotag(totag);
  123. return sendMsg(JSONObject.toJSONString(textCartMsg));
  124. } catch (Exception e) {
  125. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  126. }
  127. }
  128.  
  129. @Override
  130. public WeChatSendMsgResult sendNewsMsg(String touser, String toparty, String totag, WeChatNews news) {
  131. try {
  132. WeChatNewsMsg newsMsg = new WeChatNewsMsg();
  133. newsMsg.setNews(news);
  134. newsMsg.setMsgtype("news");
  135. newsMsg.setAgentid(WeChatUtil.agentId);
  136. newsMsg.setTouser(touser);
  137. newsMsg.setToparty(toparty);
  138. newsMsg.setTotag(totag);
  139. return sendMsg(JSONObject.toJSONString(newsMsg));
  140. } catch (Exception e) {
  141. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  142. }
  143. }
  144.  
  145. @Override
  146. public WeChatSendMsgResult sendMpNewsMsg(String touser, String toparty, String totag, WeChatMpNews mpnews) {
  147. try {
  148. WeChatMpNewsMsg mpNewsMsg = new WeChatMpNewsMsg();
  149. mpNewsMsg.setMpnews(mpnews);
  150. mpNewsMsg.setMsgtype("news");
  151. mpNewsMsg.setAgentid(WeChatUtil.agentId);
  152. mpNewsMsg.setTouser(touser);
  153. mpNewsMsg.setToparty(toparty);
  154. mpNewsMsg.setTotag(totag);
  155. return sendMsg(JSONObject.toJSONString(mpNewsMsg));
  156. } catch (Exception e) {
  157. return new WeChatSendMsgResult(-2021, "组装微信消息通知异常");
  158. }
  159. }
  160.  
  161. }
  162. //工具类======
  163. @Component
  164. public class WeChatUtil {
  165. public static String corpid ="xxxxxxxx";
  166. public static String agentId ="xxxxxxxx";
  167. public static String secret ="xxxxxxxxxxx";
  168.  
  169. public static String accessToken ="";
  170. public static long createTime = 0;
  171.  
  172. public static String getToken(){
  173. if("".equals(accessToken)){
  174. getToken(corpid,secret);
  175. }
  176. else{
  177. if(DateUtil.now().getTime() - createTime > 7000000l ){
  178. getToken(corpid,secret);
  179. }
  180. }
  181. return accessToken;
  182. }
  183.  
  184. public static void getToken(String corpid, String corpsecret ){
  185. String url = MessageFormat.format(WeChatConstant.GET_TOKEN,corpid,corpsecret);
  186. String result = HttpUtil.doGet(url,null);
  187. WeChatAccessTokenResult res = JSONObject.parseObject(result, WeChatAccessTokenResult.class);
  188. if("0".equals(String.valueOf(res.getErrcode()))){
  189. accessToken = res.getAccess_token();
  190. createTime = DateUtil.now().getTime();
  191. }
  192. }
  193.  
  194. }
  195. //常量=====
  196. public interface WeChatConstant {
  197. String GET_TOKEN="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}";
  198. String SEND_MESSAGE="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}";
  199.  
  200. }
  201.  
  202. //实体类
  203. public class WeChatAccessTokenResult {
  204. private Integer errcode;
  205. private String errmsg;
  206. private String access_token;
  207. private int expires_in;
  208. }

  //调用接口

  1. package org.springblade.resource.service;
  2.  
  3. import org.springblade.resource.entity.WeChatSendMsgResult;
  4. import org.springblade.resource.entity.wechat.WeChatMpNews;
  5. import org.springblade.resource.entity.wechat.WeChatNews;
  6.  
  7. public interface IWeChatService {
  8.  
  9. WeChatSendMsgResult sendMsg(String paramJson);
  10.  
  11. WeChatSendMsgResult sendTextMsg(String touser, String toparty, String totag, String content);
  12.  
  13. WeChatSendMsgResult sendImageMsg(String touser, String toparty, String totag, String mediaId);
  14.  
  15. WeChatSendMsgResult sendVoiceMsg(String touser, String toparty, String totag, String mediaId);
  16.  
  17. WeChatSendMsgResult sendVideoMsg(String touser, String toparty, String totag, String description, String mediaId, String title);
  18.  
  19. WeChatSendMsgResult sendFileMsg(String touser, String toparty, String totag, String mediaId);
  20.  
  21. WeChatSendMsgResult sendTextCardMsg(String touser, String toparty, String totag, String btnTxt, String description, String title, String url);
  22.  
  23. WeChatSendMsgResult sendNewsMsg(String touser, String toparty, String totag, WeChatNews news);
  24.  
  25. WeChatSendMsgResult sendMpNewsMsg(String touser, String toparty, String totag, WeChatMpNews mpnews);
  26.  
  27. }

  

发送微信通知 java 实现的更多相关文章

  1. 发送微信通知 java

    //实现类@Service public class WeChatServiceImpl implements IWeChatService { @Override public WeChatSend ...

  2. 微信支付java

    直接上代码: 1.支付配置PayCommonUtil import com.legendshop.payment.tenpay.util.MD5Util; import com.legendshop. ...

  3. 微信支付java版V3验证数据合法性

    [TOC] 1. 微信支付java版V3验证数据合法性 概要:使用微信支付接口时,微信会返回或回调给商户XML数据,开发者需要验证微信返回的数据是否合法. 特别提醒:商户系统对于支付结果通知的内容一定 ...

  4. 微信小程序-统一下单、微信支付(Java后台)

    1.首先分享 微信统一下单接口: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1   微信接口 签名 对比网址: https: ...

  5. app微信支付-java服务端接口 支付-查询-退款

    个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...

  6. APP微信支付Java后台的实现(springmvc)

    第一次做微信支付,阅读完开发文档后,下了个官方demo,摸索了好久,期间也出现了好多问题,终于是实现生成预支付订单以及支付成功后接收微信服务器通知,不多说了,直接上代码: 一.工具类 Constant ...

  7. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  8. C#的Xamarin开发小米盒子应用并以WCF实现微信通知

    对于熟悉C#语言的开发人员而言,用Xamarin开发Android应用也是一个不错的选择.小米盒子是Android系统.当然也就能够使用Xamarin来开发.首选来看效果图. watermark/2/ ...

  9. [企业微信通知系列]Jenkins发布后自动通知

    一.前言 最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容.而由于公司使用的是企业微信,因此 ...

随机推荐

  1. DRF的限流配置

    在settings.py中添加配置 REST_FRAMEWORK = { #3.限流(防爬虫) 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.thrott ...

  2. moviepy音视频剪辑:moviepy中的剪辑基类Clip详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  3. PyQt(Python+Qt)学习随笔:containers容器类部件QMdiArea多文档界面的QMdiSubWindow子窗口相关属性和操作方法

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 1.增加子窗口 QMdiArea中的子窗口类型是QMdiSubWind ...

  4. PyQt(Python+Qt)学习随笔:QTreeView树形视图的wordWrap属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的wordWrap属性用于控制视图展示数据项文本的单词换行原则,如果该值为 ...

  5. PyQt(Python+Qt)学习随笔:QHeaderView的CascadingSectionResizes属性

    老猿Python博文目录 老猿Python博客地址 一.CascadingSectionResizes作用 QHeaderView的CascadingSectionResizes属性用于控制当用户调整 ...

  6. PyQt(Python+Qt)学习随笔:Qt Designer中QAbstractButton派生按钮部件autoExclusive属性

    autoExclusive 属性保留是否启用按钮的自动排它特性,如果启用了,则属于同一父部件的可选中按钮任何时候只能选中一个按钮:选中另一个按钮将自动取消选中先前选中的按钮,这个功能与排他性按钮组的功 ...

  7. 从Excel获取整列内容进行批量扫描

    实习工作原因,需要测试excel表里面ip地址是否存在漏洞,扫了一眼,呕,四五百个IP,光是挨个进行访问,都是一个浩大的工程,所以准备开始摸鱼认真工作 思路是:excel按列提取->将IP按行存 ...

  8. 题解 CF1428G Lucky Numbers (Easy Version and Hard Version)

    这题没有压行就成 \(\texttt{Hard Version}\) 最短代码解了( 要知道这题那么 \(sb\) 就不啃 \(D\) 和 \(E\) 了. \(\texttt{Solution}\) ...

  9. stringbuilder和stringbuffer速度比较

    同样的代码,只改了类型,分别为stringbuilder和stringbuffer,只比较一下,执行引擎为hive. 当数据量为100000条,string builder耗时280秒,stringb ...

  10. 五、git学习之——分支管理策略、Bug分支、feature分支、多人协作

    一.分支管理策略 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生 ...