微信公众号后台开发总结

article/2025/10/14 17:04:08

微信公众号后台开发总结

一、项目简介

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

(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

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

 

 

 


http://chatgpt.dhexx.cn/article/smcXWQkm.shtml

相关文章

c/c++后台开发前景到底如何?该如何提升?

最近听到很多人都在讲&#xff1a;在这个Java热火朝天&#xff0c;人工智能高能吹捧的市场&#xff0c;c/c开发人员还有人要&#xff1f; 小编想说的是&#xff1a;有&#xff0c;而且很多企业都是有在招c/c开发人才。 只是IT这个行业&#xff1a;普遍高端稀缺&#xff0c;中端…

程序员告诉你:C/C++后台开发需要学习哪些技能书

前言&#xff1a;后台开发工程师主流使用的编程语言有C、Java、PHP以及目前慢慢流行的Golang等。小编就将以C的角度&#xff0c;讲讲如何学习和准备后台开发的岗位。 一、语言基础 无论是C开发还是Java开发&#xff0c;对于一个码农而言&#xff0c;最重要的就是对于编程语言的…

c++后台开发适合入坑吗?就业前景如何?

一、什么是c后台开发&#xff1f; c后台开发也可以叫c后端开发&#xff0c;其实从技术上来说并无不同。 c后台开发就是基于linux环境和C语言的服务器程序开发&#xff0c;像qq服务器、微信服务器、王者荣耀服务器等等。虽然现在各种高级语言大火&#xff0c;但是在高性能这一…

后台开发之常用工具

最近windows电脑系统又莫名地崩了&#xff0c;重装了系统&#xff0c;其他磁盘文件还保留着&#xff0c;发现大部分软件之前装载D盘&#xff0c;还是可以继续用的&#xff0c;只需要将路径配置到环境变量即可。 趁着每个软件重新配置的机会&#xff0c;再来梳理一下平时开发过…

微信公众号后台开发

最近公司要做微信工作号开发&#xff0c;觉得有趣&#xff0c;便接了这单活。 1.首先已经申请了微信工作号&#xff0c;打开微信公众号平台 https://mp.weixin.qq.com/ AppId是这个公众号的唯一识别码&#xff0c;相当于登录名 AppSecret 是公众号的开发者密码&#xff0c;就相…

C++后台开发技术栈

目录 岗位要求 Linux C开发&#xff08;vivio&#xff09; C后台开发技术栈 岗位要求 Linux C开发&#xff08;vivio&#xff09; 熟悉掌握多线程/多进程 网络编程 常见RPC框架 设计模式 gdb调试等技术 计算框架mpi、tensorflow的研究与优化&#xff0c;不断提升性能…

C++后台开发学习路线

1.路线 一. 基础阶段 c/c编程语言 linux基础 数据结构与算法 设计模式 脚本语言(可选) 二. 入门阶段 linux系统编程 linux网络编程 三. 进阶阶段 数据库mysql 分布式缓存redis 网络库 四. 项目实践阶段 编写简单FTP服务器 C入门到精通Linux学习链接&#xff1a…

后台开发技术(1)--概述

说到后台开发,首选就有一个问题:什么是后台开发。就我理解,就是做服务器端开发。在服务器端运行着不同功能的服务,有直接与客户端连接的,有实现某一特定业务的比如用户注册登录,有数据存储的如基于mysql,memcached,redis等做的存储系统,除此之外还有一些满足运维监控系统…

腾讯T9职级后台开发要具备哪些专业的能力及知识点?

前言 首先说明这里的后台开发指的就是Linux上的C 编程。因为很多人对后台开发有误解,通常人们说前端后台,后台就马上联想到web后台, java、php和各种web框架横飞的既视感。 web后台属于后台,但后台却不只有web后台。两者是包含关系。 从网络协议的角度分析, web后台聚焦的是HT…

带你了解网络的魅力——tcping和ping区别

一、指代不同 1、ping&#xff1a;是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议&#xff0c;是TCP/IP协议的一部分。通过ICMP协议发送报文到对方主机上任意一个60000以上的端口&#xff0c;然后获取对方主机的回复 2、tcping&#xff1a;是一种面向连百接…

ping TCP端口的实用小工具tcping

ping 大家都很熟悉的ping 命令&#xff0c;属于网络层的ICMP协议&#xff0c;只能检查 IP 的连通性或网络连接速度&#xff0c; 无法检测IP的端口状态。 telnet telnet命令&#xff0c;属于应用层的协议&#xff0c;用于远程登录&#xff0c;也可用于检测IP的端口状态。但是…

tcping检测端口

1.下载 tcping.exe - ping over a tcp connection (elifulkerson.com) 2.放置路径 C:\Windows\System32 3.使用 -4&#xff0c;优先使用IPv4 -6&#xff0c;优先使用IPv6 -h&#xff0c;使用http模式 -t&#xff0c;让命令持续运行&#xff0c;直到使用ctrl c指令退出 -n 数…

使用TCPing或PSPing工具检测TCP延迟

测试网络的延迟可以使用ping&#xff0c;mtr&#xff0c;tracert等命令&#xff0c;但是测试TCP端口的访问延迟无法使用以上软件完成&#xff0c;此时可以使用TCPPing或者PSPing来测试TCP端口的延迟情况。 TCPPing 到网上搜索tcping&#xff0c;下载该工具后。放到C:\Wi…

(迁移)windows cmd的tcping和telnet命令

使用“tcping”命令提示不是内部或外部命令该怎么办? 我们在使用香港服务器或者香港vps的过程中&#xff0c;当我们遇到远程连接不上或者是相应业务无法打开时&#xff0c;最基本的操作就是联系服务器商处理&#xff0c;但其实当我们遇到这些时都是可以自己先简单排查下的。最…

用Ping、Tcping测试网络的连通性

1、概述 通常情况下&#xff0c;测试一个地址能不能访问&#xff0c;通常使用Ping来判断&#xff0c;如果测试端口的连通性&#xff0c;可以使用Tcping来判断。 2、使用 a.用ping命令查看地址能否访问&#xff0c;若可以访问&#xff0c;如下图&#xff1a; b.用tcping命令查…

windows如何确认服务器上程序端口是否正常(ping、tcping)

方式1&#xff1a;ping命令 ping命令说明 ping命令是个使用频率极高的网络诊断工具&#xff0c;在Windows、Unix和Linux系统下均适用。它是TCP/IP协议的一部分&#xff0c;用于确定本地主机是否能与另一台主机交换数据报。根据返回的信息&#xff0c;我们可以推断TCP/IP参数设…

cmd tcping IP 端口

下载tcping文件&#xff0c;将文件放到 C:\Windows\System32 目录下面 官网 http://www.elifulkerson.com/projects/tcping.php下载tcping.exe&#xff0c;文件不足300KB。 运行命令tcping&#xff0c;如果出现帮助文档说明运行正常。 cmd窗口运行tcping ip port 例如&#…

python tcping(ping命令)

python tcping&#xff08;ping命令) 使用tcping库中的ping方法使用如下&#xff1a; from tcping import Ping ping Ping(www.baidu.com, 80, 200) # 地址、端口、超时时间 ping.ping(3) # ping命令执行次数 ret ping.result.table # 以表格形式展现&#xff08;ping.r…

tcping常用方法

tcping常用方法 ping原理简介tcping原理简介安装tcping for Windows基本使用默认tcping端口为80tcping指定端口 Centos7安装hping3Centos7安装tcping for Linux常用参数默认tcping是80端口tcping指定端口示例 mac安装tcping ping原理简介 ping原理简介和常用方法 https://blog…

Tcping工具使用介绍

Tcping工具使用介绍 摘要&#xff1a;工作中我们经常会用Ping命令去测试网络连通性&#xff0c;但如果源地址配置了禁ping策略&#xff0c;该如何确定网络是否畅通呢&#xff0c;当然有经验的老鸟也可以用系统自带的telnet进行测试&#xff0c;这就看个人习惯了。 ping命令基…