首页 > 编程知识 正文

python搭建微信小程序,微信小程序开发入门

时间:2023-05-03 13:48:31 阅读:142164 作者:323

点此查看完整教程及源码

正文目录1 .前言2 .构建项目3 .创建配置文件4 .创建启动类5 .创建配置类6 .创建定制菜单控制器类8 .创建访问验证控制器9 .总结1 .

写了正文,我们已经定制了服务器有效性验证、微信消息合法性验证、菜单界面调用。 本文给出了项目的完整实例,以建立完整的开发环境。

2 .生成项目,创建Maven项目,然后创建pom.xml文件。 pom.xml文件确定后,Maven项目也将确定。 实际上,可以在这里不使用SpringBoot模板来构建SpringBoot项目。 因为如果配置为pom.xml,Maven将自动生成SpringBoot类型的项目。

project xmlns=' http://maven.Apache.org/POM/4.0.0 ' xmlns : xsi=' http://www.w3.org/2001/XML schema-ins TTS maven-4.0.0.xsd '模型版本4.0.0/modelversionparentgroupidors groupidartifactidspring-boot-starter-parenter ----lookupparentfromrepository---- parentgroupidcn.panda brother/groupidartifactidwx-server/artifactidversion 0.0.packagingpropertiesproject.build.sourceencodingutf-8/project.build.sourceencodingproject.reporting.outputencodingjava.version 1.8/Java.version maven-jar-plugin.version3.0.0/maven-jar-0 propertiesdependenciesdependencygroupidorg.spring frame groupidartifactidspring-boot-starter-web/artifaccer dpendependencygroupidorg.project lombok/groupidartifactidler dependencydependencygroupidorg.sprin ing -微信公众号----dependencygroupidcom.github.binary Wang/groupidartifactidweidwexixion v vision ependenciesbuildpluginsplugingroupidorg.spring framework.boot/groupidartifactidspring-boot-maven-plugin/arging

服务器

r: port: 80 #端口 servlet: context-path: /wx-server

通过该配置文件,我们的项目就会监听80端口的请求,且项目访问的根路径为/wx-server,这与我们在微信后台配置的服务器地址(URL)是一致的。

4. 编写启动类

启动类按照SpringBoot规范写一个即可:

/** * SpringBoot启动类 */@SpringBootApplicationpublic class WxServerApplication {public static void main(String[] args) {SpringApplication.run(WxServerApplication.class, args);}} 5. 编写配置类

配置类其实是关键核心,我们需要配置两个关键组件:WxMpDefaultConfigImpl类型的组件用于存储微信公众平台的参数,WxMpService类型的组件用于提供微信公众平台开发响应的服务。

/** * 微信公众平台配置 */@Configurationpublic class WxMpConfig {@Beanpublic WxMpDefaultConfigImpl wxMpDefaultConfigImpl() {WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();config.setAppId(""); // 设置微信公众号的appidconfig.setSecret(""); // 设置微信公众号的app corpSecretconfig.setToken(""); // 设置微信公众号的tokenconfig.setAesKey(""); // 设置微信公众号的EncodingAESKeyreturn config;}@Beanpublic WxMpService wxMpService() {WxMpService wxMpService = new WxMpServiceImpl();// 实际项目中请注意要保持单例,不要在每次请求时构造实例,具体可以参考demo项目wxMpService.setWxMpConfigStorage(wxMpDefaultConfigImpl());return wxMpService;}} 6. 编写自定义菜单控制器类

我们通过控制器暴露接口,调用接口可以完成自定义菜单的创建、查询、删除功能。

注意该类使用@RestController描述,是为了将返回值序列化为json格式,便于查看。

/** * 自定义菜单 */@RestControllerpublic class MenuController {@Autowiredprivate WxMpService wxMpService;/** * 获取自定义菜单 */@RequestMapping("/menuGet")public WxMpMenu menuGet() throws WxErrorException {WxMpMenu wxMpMenu = wxMpService.getMenuService().menuGet();return wxMpMenu;}/** * 删除自定义菜单 */@RequestMapping("/menuDelete")public boolean menuDelete() throws WxErrorException {wxMpService.getMenuService().menuDelete();return true;}/** * 创建自定义菜单 */@RequestMapping("/menuCreate")public boolean menuCreate() throws WxErrorException {// 菜单List<WxMenuButton> buttons = new ArrayList<WxMenuButton>();WxMenuButton btn1 = new WxMenuButton();btn1.setType("click");btn1.setName("查询城市");btn1.setKey("QUERY_CITY");WxMenuButton btn2 = new WxMenuButton();btn2.setType("view");btn2.setName("跳转网页");btn2.setUrl("http://www.csdn.net");buttons.add(btn1);buttons.add(btn2);// 创建WxMenu wxMenu = new WxMenu();wxMenu.setButtons(buttons);String re= wxMpService.getMenuService().menuCreate(wxMenu);System.out.println(re);return true;}} 8. 编写接入验证控制器

我们在微信公众平台后台配置的服务器URL配置如下:

所以我们编写控制器类, 监听/checkToken路径的请求。由于参数比较多,我们直接通过HttpServletRequest接收参数。

/** * 接入验证控制器 */@Controllerpublic class CheckController {@Autowiredprivate WxMpService wxMpService;// 接入验证@GetMapping("/checkToken")@ResponseBodypublic String checkTokenGet(HttpServletRequest request) {System.out.println("接入验证");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (!wxMpService.checkSignature(timestamp, nonce, signature)) {// 消息不合法return "消息不合法";}// 消息合法return echostr;}// 消息合法验证@PostMapping("/checkToken")@ResponseBodypublic String checkTokenPost(HttpServletRequest request) {System.out.println("消息合法验证");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");if (!wxMpService.checkSignature(timestamp, nonce, signature)) {// 消息不合法return "消息不合法";}// 消息合法则继续处理return "";}}

解释下返回值的问题,此处返回的是字符串,这是根据微信官方的要求返回的。微信接受到返回值后,会根据具体的数据约定再进一步处理。

9. 小结

本篇给出了一个接入的完整示例,后续我们在该项目的基础上陆续完善各项功能即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。