标签:http os 使用 strong ar 数据 代码 sp amp
微信服务号的原理比较简单。从请求响应角度来看,逻辑是:
用户微信客户端 <—> 微信服务器 <—> 微信服务号后台程序 <—> 数据库或Web Service
也就是,用户的各种请求先经过微信的服务器,微信服务器将请求转发给微信服务号后台程序。
既然是微信服务器把用户请求数据转发给我们开发的微信服务号后台程序,那么在启用服务号的开发模式时就需要提供一个URL。另外为了安全 考虑,还需要提供一个token,用来校验请求是否来自微信服务器。校验的方法见微信开发者文档。校验又分两种:
在开发者首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。
此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。
微信服务器转发到微信服务号后台程序的消息以及服务号后台程序返回给微信服务器的响应,都是XML格式,消息中都会指明发送者和接收者。 请求消息中的发送者为微信用户的openid,接收者为服务号开发者微信号,响应消息则相反。
消息中还有一个关键字段MsgType指明消息类型。微信将请求消息分为:普通消息、事件推送、语音识别结果三大类,其中,
响应消息也分6种:文本、图片、语音、视频、音乐、图文。
工作中为产品开发的微信服务号,目前对于普通消息,服务号后台程序自动响应一段文本消息;对于事件推送中的关注事件,则是响应一段欢迎、 功能简介的文本消息。
另外我们使用了自定义菜单事件,要想使用该事件,先要为你的微信服务号提供自定义菜单。自定义菜单是通过微信提供的API向其推送的。
在通过API向微信服务器推送自定义菜单时,微信服务器需要确认是否为可信任请求,确认方法是基于请求参数access_token。 access_token需要通过API向微信服务器获取。成功启用服务号的开发模式后,微信会为服务号分配一个AppId和AppSecret,获取access_token时 需要带上这两个参数,用于微信服务器确认是否为已注册服务号的请求。access_token相关文档见这里。
当成功获取access_token后就可以通过API创建、删除、查询服务号的自定义菜单了。
自定义菜单相关文档见这里。
以下Python代码是对自定义菜单API的简单封装:
对于微信服务号后台程序,当然可以参照微信官方文档,从头开始实现。但可用非官方微信公众号SDK也不少。比如我使用的PHP SDK是这个。
其他语言的SDK也可以找找看。
标签:http os 使用 strong ar 数据 代码 sp amp
原文地址:http://www.cnblogs.com/wpbars/p/3952911.html