微信公众号后台开发总结

一、项目简介

当前需要做一个公众号后台,前期需要实现的功能有:

(1)      在用户关注公众号时便获取用户的信息同时还要将用户信息存入数据库。

(2)      在用户给公众号发送消息时,后台能够对消息的类型进行识别同时进行回复。

从要实现的功能数量上来讲,这的确很少,但是却牵涉到很多的东西,包括后台开发环境的搭建(使用的框架、数据库选择、服务器、前端页面的选择)、公众号后台与微信官方的后台的对接(里面牵涉到很多的配置需要注意),有特别是微信官方给的官方文档里面讲的很粗略,很多细节没有提到,只能自己去查找相关的资料,实例代码还竟然全部都是PHP的,对于一个一直使用JAVA做开发并且还是第一次接触微信公众号后台开的我来说真是雪上加霜,在这中间遇到很多的困难,掉过很多的坑,不过最终庆幸的是把功能都做出来,下面我就分两个部分介绍一下两个功能实现的步骤以及一些注意事项,希望能够帮到以后需要做微信公众号后台的人。

 

二、微信后台开发

 

第一个部分、公众号后台实现消息自动回复

 

1、  后台开发环境搭建介绍

由于之前使用SSM做过相关的后台开发,所以本次仍然使用SSM框架,数据库方面之前一直用Mysql,相对熟悉就用Mysql(期间有尝试过Oracle但是在安装Plsql时一直没有成功过,后面就放弃了),服务器方面使用了Tomcat 服务器,它是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

开发平台使用了IDEA,IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn、github等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主,它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等,免费版只支持Java等少数语言。我使用的是IDEA2017.2.5版本,网上可以找到相关的破解方法,不过这款工具的确好用,之前一直用Myeclipse,但在一次实习中公司要求使用IDEA,在那次实习期间深切的体会到该软件的强大,又特别时期强大的提示功能。

关于在IDEA上搭建开发环境我使用了Maven,具体的搭建过程就不多说了,网上已经有很多成熟的资料。下面就开始进行微信的后台开发流程。

2、  微信后台开发的流程

在本次微信后台的开发过程中,我没有先在微信公众号的官网上申请一个微信公众号测试号,而是先进行了后台系统的搭建和开发,我先将所需要的实体类、工具类、Controller类、持久层的类和相应的SQl语句的代码编写好编译成功之后才申请的公众号账号进行测试。现在我从申请公众号以及公众号的配置到后台的测试进行说明。

(1)申请账号:首先通过微信公众号官网申请公众号账号,微信公众号有服务号、企业号和订阅号他们之间相应的区别已经申请流程大家可以自己在网上查阅,他家可以根据自己的需求来申请相应类型的公众号,本次我申请的是服务号。

(2)服务器配置:在申请完毕公众号后我们开始进入开发者模式,登录账号进入你的微信公众号管理页面,下拉到底点击基本配置。

图1

如上图所示你需要启用服务器配置,你需要做的就是天蝎服务器地址(URL)和令牌(Token),下面的消息加解密匙可以自动生成,主要还是上面两个的配置,令牌(Token)这个是在后台的程序中自己设定的,你后台怎么设置的这个就怎么设置,不过它的格式有相应的要求,需要符合要求才行。关于服务器地址(URL)需要多说一点,该URL必须是要在公网中能够访问得到的URL,并且只支持80端口,我们平时在自己的电脑上做开发都是用的内网,所以你的URL只能在内网上访问,而外网无法访问;在这个地方也是花了很多时间才得以解决这个问题,在上网查阅资料的过程中有人推荐使用花生壳进行内网映射,于是我就进行尝试,不过没能成功,然后又看到使用nat123可以进行内网映射,然后又进行尝试,终于是成功了;它的具体做法是:下载nat123然后注册用户,(具体的购买操作就不说明了,费用很合理)然后添加映射选择80(http)栏。

图2

图3

如图所示是添加映射的界面,你需要给自己应用去一个名字,内网的端口号8080,内网地址我填写了localhost,这样方便,免得换一个网络环境后又需要修改,建议填写localhost,外网的域名nat123会自动给你分配一个,如果你有自己的外网域名也可以使用,然后点击确认保存即可,需要注意的是:在每次关闭电脑后,下一次启动项目要使用该映射时,必须再一次打开nat123,然后映射才能启用。

服务器配置告一段落,还有公众号信息的一点东西需要注意:公众号的AppID在申请公众号后便生成了,但是开发者密匙和IP白名单还没有,开发者密匙需要根据提示获得,并且微信不负责存储该密匙,需要自己做相应的保存,IP白名单后面再详细说它;微信端的配置基本结束,下面我们开始来看一看后台。

图4

(3)后台开发:在后台开发前,再先说一说微信端的服务器地址(URL),在微信端与后台连接成功后,用户在微信端的关注、取消关注、发送语音、发送文字以及图片等消息,微信都会讲这些消息推送给这个URL地址,后台再根据具体的消息类型进行处理。

首先:打通微信与后台

刚刚说了在移动端,用户的各种消息以及关注事件微信都会通过服务器地址(URL)推送给后台,所以打通微信与后台该URL很是关键,但在URL配置正确后,还需要知道以下:微信与后台的第一次连接有一个验证过程,该加密验证流程如下:

<1> 将token、timestamp、nonce三个参数进行字典序排序

<2> 将三个参数字符串拼接成一个字符串进行SHA1加密

<3> 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

图5

图五中的代码便是验证身份的代码,其中一些具体的方法在网上都能找到就补贴出来了;验证通过后会在控制台上打印出“连接微信公众号平台测试成功”的字样。自此,微信端到后台的通道就打开了,这样用户的信息以及关注、取消关注时间就能被推送到后台了,我们就开始处理这些消息。

然后:处理微信推送过来的用户消息

(1)我们需要一个微信消息基类BaseWechatMessage,该类包含了消息的发送者微信号ToUserName、发送发账号(一个OpenID)FromUserName、消息创建时间(整形)CreateTime、消息类型MsgType。
(2)还需要一个消息的实体类TextMessage,该类继承微信消息基类,该消息实体类包含一个成员变量Content,指的是消息的内容。然后还需要一些其他的工具类,我就不列出来了。 

注:微信端推送过来的用户消息或事件是通过POST的方式请求过来的,验证使用的get的请求方式。

 

图6

用户的消息过来后会被拦截到该Controller中进行处理,会根据不同的消息的类型进行相应的解析,下面是processRequest方法部分代码截图,当消息为文本消息时,
后台将会向用户发送"Welcome to WeChat!"

图7

需要再说明一点的是:微信推送过来的文本消息格式如下:
<xml>  
<ToUserName>< ![CDATA[toUser] ]></ToUserName>  <FromUserName>< ![CDATA[fromUser] ]></FromUserName>  <CreateTime>1348831860</CreateTime>  <MsgType>< ![CDATA[text] ]></MsgType>  <Content>< ![CDATA[this is a test] ]></Content>  <MsgId>1234567890123456</MsgId>  
</xml>

需要在后台将XML中的信息提取出来。而回复消息的时候则要将信息封装到该格式的XML中。

图8

功夫不负有心人,终于在我的不懈努力之下,初见成效;今天就到这儿,下次接着说怎样获取用户信息并存入数据库。

微信公众号后台开发总结相关推荐

  1. Yii2.0实现微信公众号后台开发

    2019独角兽企业重金招聘Python工程师标准>>> 研读 微信公众平台开发者文档 ,然后再阅读本文,效果更佳! 接入微信 Yii2后台配置 1.在app/config/param ...

  2. python 公众号菜单_Python微信公众号后台开发003:自定义菜单

    有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...

  3. Python微信公众号后台开发003:自定义菜单

    有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...

  4. python公众号教学_Python微信公众号后台开发教程

    本篇文章开启Python开发微信公众号后台 准备: 云服务平台:(我用的是京东云的) 公众号:自己注册一个就行 Git:代码管理平台 了解平台 进入公众号后台,查看开发相关项 基本配置(服务器配置等) ...

  5. JAVA微信公众号后台开发 接口接入

    前期准备 注册一个公众号,完成认证,阅读开发手册,选取开发工具,配置环境等等. 微信公众号开发标准 通过阅读文档我们了解到微信服务器向开发者提供接口,具体的流程如下 由上图可以看出,开发者需要做的:接 ...

  6. [基于Python的微信公众号后台开发:2]文字消息的接收与解密

    文章目录 1.服务器安装pycryptodome 2.下载微信官方提供的解密SDK 3.上传SDK到服务器 4.开始测试 5.发送消息到公众号 6.测试解密:把所有参数套入官方给的Sample.py文 ...

  7. python微信集成_Python微信公众号后台开发005:集成智能聊天机器人​

    ​给公众号集成一个智能聊天机器人 一.前述 ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学(jiyi)习(pipei). 二.具 ...

  8. Python多线程与多进程微信公众号后台开发

    目录 前言 一.线程与进程 1.什么是线程 2.什么是进程 3.进程与线程的关系 4.总结 5.CPU密集型与IO密集型 二.Python的多线程和多进程 1.GIL(Global Interpret ...

  9. 微信公众号后台服务开发(一):自动消息回复

    微信公众号后台服务开发 简述 微信平台提供的自动回复机制 后台服务开发 配置指定服务器 消息自动回复功能开发 简述 使用Java SpringBoot框架搭建微信工作号后台实现自定义逻辑自动回复 先注 ...

  10. 微信公众号后台java开发实现自动回复机器人

    1.注册微信公众号.(简单) 2.注册图灵机器人.(自己百度) 1)注册后可以拿到key  (注意  api接入里的钥匙不要打开,否则要加解密,麻烦) 3.配置微信公众号服务器验证. 1)在开发的基本 ...

最新文章

  1. android中TextView显示中文发生乱码的问题
  2. linux用终端上传文件和文件家到远程的服务器
  3. 网站性能工具Yslow的使用方法
  4. outlook错配置账户到exchange后的删除办法
  5. 链接聚合是将一组物理接口_500字描述华为VLAN聚合工作原理 你看懂了吗?
  6. 如何把暂存区恢复成和HEAD的一样?
  7. python选课系统作业_Python 大作业4:选课系统
  8. 软件测试实验1:JUnit、Hamcrest、Eclemma
  9. php生成超链接完整代码_PHP自动把网站自动添加超链接怎么写
  10. 初试 spring web mvc
  11. java中double类型显示两个小数,比如12.00
  12. 解密javascript模块载入器require.js
  13. R语言--Cox模型校准曲线原理(一)数据来源
  14. Java写win10激活码_win10系统配置java环境 生成密钥
  15. REST-Assured,接口自动化的 “瑞士军刀“- 断言篇
  16. python_numpy_计算对数收益率和还原问题
  17. STM32 FreeRTOS (三) 软件定时器
  18. 让数字预失真的故障排除和微调不再难 必备攻略请查收
  19. 中文字体css编码转换
  20. 计算机视觉在 IoT 领域的实践应用

热门文章

  1. 【笔记】运筹(下)——Rita_Aloha
  2. Java 经纬度转UTM投影
  3. 从《色戒》,看人性的欲望
  4. 定时任务的时间设置-Cron表达式
  5. springboot微信小程序 获取微信unionid
  6. PDF文件转MOBI怎么转?在线操作轻松完成
  7. [ Linux ] 连接FTP及FTP常用配置
  8. java实习鉴定书个人鉴定_大学生实习鉴定表自我鉴定范文
  9. 109-gamp与rtklib精度对比
  10. 【Android工具】更新Yandex网页剪辑插件测试!可以安装PCchrome插件的手机浏览器!...