当前位置:   article > 正文

微信小程序模板发送java后台版_小程序后台模板

小程序后台模板

这几天做的微信小程序模板消息练习,在此总结。

这个是service层的

  1. //这个代码是根据订单id来动态返回data中的数据,可根据自己情况来具体修改,注意添加json依赖
  2. /*
  3. * <dependency>
  4. * <groupId>org.json</groupId>
  5. * <artifactId>json</artifactId>
  6. * <version>20180813</version>
  7. * </dependency>
  8. *
  9. **/
  10. public void getWechatMould(String orderId) {
  11. List<WechatMould> list = shopperDao.getMould(orderId);
  12. if(!list.isEmpty()){
  13. JSONObject data = new JSONObject(); //这个只是模板中的data属性,因为他是嵌套型的所以把他单独拿出来,这个data也是一个单独的类,具体的属性就是下面的这些
  14. try {
  15. JSONObject data1 = new JSONObject();
  16. data1.put("value", list.get(0).getData().getOrderId());
  17. JSONObject data2 = new JSONObject();
  18. data2.put("value", "商品");
  19. JSONObject data5 = new JSONObject();
  20. data3.put("value", "取货时核对商品明细数量");
  21. data.put("keyword1", data1);
  22. data.put("keyword2", data2);
  23. data.put("keyword3", data3);
  24. } catch (JSONException e) {
  25. throw new ApplicationException(HttpStatus.INTERNAL_SERVER_ERROR, "json数据出错");
  26. }
  27. wechatMouldUtil.sendWechatmsgToUser(list.get(0),data);
  28. }else{
  29. throw new ApplicationException(HttpStatus.INTERNAL_SERVER_ERROR, "订单未找到");
  30. }
  31. }

这个是工具类,这里的传输参考了https://blog.csdn.net/walkcode/article/details/78147217 

  1. @Component
  2. public class WechatMouldUtil {
  3. private static final Log logger = LogFactory.getLog(WechatMouldUtil.class);
  4. private static final String TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN";
  5. @Autowired
  6. private IPropertyUtil propertyUtil;
  7. //这里我把模板消息的参数封装在了WechatMould中,data为上段代码的json数据,我的WechatMould中的data属性是MouldData data,data也是一个对象
  8. public String sendWechatmsgToUser(WechatMould mould, JSONObject data){
  9. String token = wechatTokenUtil.getWechatToken(); //微信凭证,access_token
  10. String url = TEMPLATE_URL.replace("ACCESS_TOKEN", token);
  11. JSONObject json = new JSONObject();
  12. try {
  13. json.put("touser", mould.getTouser());
  14. json.put("template_id","");
  15. json.put("form_id", mould.getPrepayId());
  16. json.put("data", data);
  17. } catch (JSONException e) {
  18. throw new ApplicationException(HttpStatus.INTERNAL_SERVER_ERROR, "json数据出错");
  19. }
  20. String result = httpsRequest(url, "POST", json.toString());
  21. try {
  22. JSONObject resultJson = new JSONObject(result);
  23. String errmsg = (String) resultJson.get("errmsg");
  24. if(!"ok".equals(errmsg)){//如果为errmsg为ok,则代表发送成功。
  25. logger.error("发送失败");
  26. return "error";
  27. }
  28. } catch (JSONException e) {
  29. throw new ApplicationException(HttpStatus.INTERNAL_SERVER_ERROR, "json数据出错");
  30. }
  31. return "success";
  32. }
  33. public String httpsRequest(String requestUrl, String requestMethod, String outputStr){
  34. try {
  35. URL url = new URL(requestUrl);
  36. HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  37. conn.setDoOutput(true);
  38. conn.setDoInput(true);
  39. conn.setUseCaches(false);
  40. // 设置请求方式(GET/POST)
  41. conn.setRequestMethod(requestMethod);
  42. conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
  43. // 当outputStr不为null时向输出流写数据
  44. if (null != outputStr) {
  45. OutputStream outputStream = conn.getOutputStream();
  46. // 注意编码格式
  47. outputStream.write(outputStr.getBytes("UTF-8"));
  48. outputStream.close();
  49. }
  50. // 从输入流读取返回内容
  51. InputStream inputStream = conn.getInputStream();
  52. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
  53. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  54. String str = null;
  55. StringBuffer buffer = new StringBuffer();
  56. while ((str = bufferedReader.readLine()) != null) {
  57. buffer.append(str);
  58. }
  59. // 释放资源
  60. bufferedReader.close();
  61. inputStreamReader.close();
  62. inputStream.close();
  63. conn.disconnect();
  64. return buffer.toString();
  65. } catch (ConnectException ce) {
  66. logger.error("连接超时:{}");
  67. } catch (Exception e) {
  68. logger.error("https请求异常:{}");
  69. }
  70. return null;
  71. }
  72. }

wechatTokenUtil.getWechatToken()获取ACCESS_TOKEN的方法,这并没有用的线程,而是把生成的ACCESS_TOKEN同失效时间 放在数据库里,当当前时间超过失效时间就重新生成ACCESS_TOKEN。

*主要是记录http方法和json数据的java格式

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/849499
推荐阅读
相关标签
  

闽ICP备14008679号