博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序开发流程(java后端)
阅读量:5082 次
发布时间:2019-06-13

本文共 7156 字,大约阅读时间需要 23 分钟。

一、准备工作

  1、参考  先注册账号;

  2、下载官网前端开发工具

  3、其他的接口及文档请参考

二、java后端

 1、先去github下载sdk

  2、demo参考          注: 此demo是采用了jdk8和spring boot开发的。

三、本人折腾过程

    我本地是采用jdk7,spring mvc和mybatis的搭建框架;

 1、在resources/properties新增wxconfig.properties文件,用于配置

appid=填写自己注册的小程序appsecret=密钥(通过获取或是重置方式取到,在客服消息转发需要用)token=自己定义aeskey=加密templateId=推送消息模块ID,也是自己在小程序后台-->模板消息中获取;msgDataFormat=JSON (传送的格式还有或者是XML)domain=推送模板消息时,如需要点详情时(因为开发小程序有可能是有开发或线上二个域名的)detail=详情的链接,和在app.json中配置的一样

2、新增一类来加载此配置文件并读取相关的内容到静态变量中;

1 import org.apache.log4j.Logger;  2   3 import java.util.ResourceBundle;  4   5 /**  6  * @author foreach03  7  * @company 深圳市  8  * @create 2018/1/10 13:31  9  */ 10 public class WxConfigUtils { 11     private static Logger log = Logger.getLogger(WxConfigUtils.class); 12     private static String appid; 13     private static String appsecret; 14     private static String token; 15     private static String aeskey; 16     private static String templateId; 17     private static String msgDataFormat; 18     private static String domain; 19     private static String detail; 20  21     private WxConfigUtils(){ 22  23     } 24     static { 25         // 加载wxcofig配置文件 26         ResourceBundle bundle = ResourceBundle.getBundle("properties/wxconfig"); 27         if (bundle == null) { 28             throw new IllegalArgumentException( 29                     "[wxcofig.properties] is not found!"); 30         } 31         appid = bundle.getString("appid"); 32         appsecret = bundle.getString("appsecret"); 33         token = bundle.getString("token"); 34         aeskey = bundle.getString("aeskey"); 35         templateId = bundle.getString("templateId");  37         msgDataFormat = bundle.getString("msgDataFormat"); 38         domain = bundle.getString("domain"); 39         detail = bundle.getString("detail"); 40  41  42         log.info("appid is:" + appid); 43         log.info("appsecret is:" + appsecret); 44         log.info("token is:" + token); 45         log.info("aeskey is:" + aeskey); 46         log.info("templateId is:" + templateId); 47         log.info("msgDataFormat is:" + msgDataFormat); 48         log.info("domain is:" + domain); 49         log.info("detail is:" + detail); 50     } 51  52     public static String getAppid() { 53         return appid; 54     } 55  56     public static void setAppid(String appid) { 57         WxConfigUtils.appid = appid; 58     } 59  60     public static String getAppsecret() { 61         return appsecret; 62     } 63  64     public static void setAppsecret(String appsecret) { 65         WxConfigUtils.appsecret = appsecret; 66     } 67  68     public static String getToken() { 69         return token; 70     } 71  72     public static void setToken(String token) { 73         WxConfigUtils.token = token; 74     } 75  76     public static String getAeskey() { 77         return aeskey; 78     } 79  80     public static void setAeskey(String aeskey) { 81         WxConfigUtils.aeskey = aeskey; 82     } 83  84     public static String getTemplateId() { 85         return templateId; 86     } 87  88     public static void setTemplateId(String templateId) { 89         WxConfigUtils.templateId = templateId; 90     } 91  92     public static String getMsgDataFormat() { 93         return msgDataFormat; 94     } 95  96     public static void setMsgDataFormat(String msgDataFormat) { 97         WxConfigUtils.msgDataFormat = msgDataFormat; 98     } 99 100     public static String getDomain() {101         return domain;102     }103 104     public static void setDomain(String domain) {105         WxConfigUtils.domain = domain;106     }107 108     public static String getDetail() {109         return detail;110     }111 112     public static void setDetail(String detail) {113         WxConfigUtils.detail = detail;114     }115 116 }

3、新增一个常量类WXMPConfig,其实也可以不用此类。

1 /** 2  * @author foreach03 3  * @company 深圳市 4  * @create 2018/1/10 13:37 5  */ 6 public class WXMPConfig { 7     // 服务号常量定义 8     public static final String APPID = WxConfigUtils.getAppid();//测试 9     public static final String APPSECRET = WxConfigUtils.getAppsecret();10     public static final String TOKEN =WxConfigUtils.getToken();11     public static final String ENCODINGAESKEY =WxConfigUtils.getAeskey();12     public static final String TEMPLATEID = WxConfigUtils.getTemplateId();13     public static final String MSGDATAFORMAT = WxConfigUtils.getMsgDataFormat();14     public static final String DOMAIN = WxConfigUtils.getDomain();15     public static final String DETAIL = WxConfigUtils.getDetail();16 17     private WXMPConfig(){18 19     }20 }

 

4、新建一个工厂类WxMpServiceFactory,用于初始化maservice

1 import cn.binarywang.wx.miniapp.api.WxMaService; 2 import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; 3 import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig; 4 import cn.binarywang.wx.miniapp.message.WxMaMessageRouter; 5 import com.***.config.constant.WXMPConfig; 6  7 /** 8  * @author  9  * @company 深圳市10  * @create 2018/1/10 13:2511  */12 public class WxMpServiceFactory {13     private static WxMaService instance;14 15     private static WxMaInMemoryConfig wxMaConfigStorage;16     private static WxMaMessageRouter router = new WxMaMessageRouter(getInstance());17     private WxMpServiceFactory() {18         // ......19     }20 21     // 产生WxmaService实例22     public static WxMaService getInstance() {23         if(wxMaConfigStorage == null){24             wxMaConfigStorage = new WxMaInMemoryConfig();25             wxMaConfigStorage.setAppid(WXMPConfig.APPID);26             wxMaConfigStorage.setSecret(WXMPConfig.APPSECRET);27             wxMaConfigStorage.setToken(WXMPConfig.TOKEN);28             wxMaConfigStorage.setAesKey(WXMPConfig.ENCODINGAESKEY);29             wxMaConfigStorage.setMsgDataFormat(WXMPConfig.MSGDATAFORMAT);30         }31 32         if (instance == null) {33             instance = new WxMaServiceImpl();34             instance.setWxMaConfig(wxMaConfigStorage);35         }36 37         return instance;38     }39 40     public static WxMaInMemoryConfig getWxMaConfigStorage() {41         return wxMaConfigStorage;42     }43 44     public static void setWxMaConfigStorage(WxMaInMemoryConfig wxMpConfigStorage) {45         WxMpServiceFactory.wxMaConfigStorage = wxMpConfigStorage;46     }47 48     public static void setInstance(WxMaService instance) {49         WxMpServiceFactory.instance = instance;50     }51 52     public static WxMaMessageRouter getRouter() {53         return router;54     }55 56     public static void setRouter(WxMaMessageRouter router) {57         WxMpServiceFactory.router = router;58     }59 60 }

 5、这样在controller类上就可以通过

  private WxMaService wxService= WxMpServiceFactory.getInstance(); 来初始化;

 6、如需要发送模板消息的

      这里需要注意的是:formid只能提交的那openId才可以使用;

   如果想推送很多的消息的话,那就让前端更可能的收集多一些formId

1  wxService.getMsgService().sendTemplateMsg(WxMaTemplateMessage.builder()2                         .templateId(自己配置的模板ID)3                         .formId(前端提交的formId)4                         .data(datalist)5                         .toUser(要推送的openid)6                          .page(就是域名+detail了)7                         .build());

7、关于一些跳坑的案例,可以参考   

转载于:https://www.cnblogs.com/jyluo03/p/8404251.html

你可能感兴趣的文章
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>
-bash: xx: command not found 在有yum源情况下处理
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
hiho1079 线段树区间改动离散化
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
第二次作业
查看>>
【input】 失去焦点时 显示默认值 focus blur ★★★★★
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
实验五 Java网络编程及安全
查看>>
32位与64位 兼容编程
查看>>