0 前言
一年前做了一下微信开发,很久没碰了。
最近老师让我把这部分代码交给合作公司的人,所以又捡起来看了一下,想简单记录一下。
1 概述
简单说一下大致过程。
有一些公众号申请认证,服务器配置和验证,凭证获取,域名绑定,ICP备案,接口权限的繁琐细节就不说了。
微信有一份开发者文档有详细的解释,可参考这份开发者文档。这里记录的信息可能已过时。
1.1 在微信公众号后台中配置你的服务器信息和相关签名参数(一开始老师没给服务器,我用natapp对自己电脑进行http隧道穿透来测试)。
1.2 配置提交后微信服务器会发送一个请求进行校验,你需要根据签名参数做一些处理和sha1加密,确认该消息来自微信服务器并给出相应的回复。
1.3 校验通过以后,当用户发送消息或者触发什么事件后,微信就会把这些相应的信息发到你的服务器上,你要在服务器上监听这些信息并给出反应。
1.4 调用微信http接口时要用到凭据参数access_token,用公众号的id和secret来获取,这个参数会定时刷新且获取次数有限,可以在服务器开启线程去定时更新这个参数。
1.5 调用微信的js接口时要用到凭据参数jsapi_ticket,用access_token来获取,这个也需要定时更新。
1.6 对于微信http接口和微信js接口的调用详见开发者文档。
1.7 我调用过的微信http接口有:接收消息,被动回复,自定义菜单,下载多媒体文件。调用过的微信js接口是上传图片相关的接口。
2 需求
之前老师让我做这个是希望把我们体质识别的应用整合到微信上。
当用户在公众号上发送消息或者点击菜单时,推送或者弹出一个页面,用户可以在页面上上传自己的人脸和舌苔,返回体质类型。
或者在页面上给出一些问题让用户回答,根据用户的答案给出用户的体质类型。或者有别的业务可以往这上面加。
所以有了微信开发这一系列的工作。这个部署到服务器上后,老师就让我去做app后台了。
3 涉及知识点
java, servlet, 加密, http请求, 多线程, tomcat部署和nginx转发
关于nginx转发可以多说一句。
因为微信公众平台接口调用仅支持80端口,我的java项目部署到tomcat上是8080,而服务器上80端口已经被别的服务占用了。
所以用nginx监听80端口,转发请求到8080。这样就可以在微信配置那里填写80的服务器地址(不写端口默认是80)。