微信公众号第三方配置、接口及模板 2018-10-17

微信官方给出的开发文档中Start Up部分:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5

具体实现可以参考:https://github.com/ThssSE/WeChatTicket/blob/master/wechat

下面也将用上述工程中的部分代码说明。

接口测试公众号

申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

在上面设置URL、token、域名等信息后,即可开始进行测试。

其中token是自己随便写的,与服务器那边保持一致就行。

与微信交互的信息格式

后端与微信公众号交互时,使用的消息格式为XML格式,如下所示:

<xml><ToUserName>ToUserName><FromUserName>FromUserName><CreateTime>1460537339CreateTime><MsgType>MsgType><Content>Content><MsgId>6272960105994287618MsgId>xml>

如果使用图片等内容,需要使用其MediaId。此时MsgType为,并且用Image标签包含的内容。

其中,MediaId对应的图片可以通过网址https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID下载。

自定义菜单

通过服务器向网站https://api.weixin.qq.com/cgi-bin/menu/create?access_token=XXXX进行POST操作来创建菜单,参数为类似如下格式的字符串:

    postJson = """{"button":[{"type": "click","name": "开发指引","key":  "mpGuide"},{"name": "公众平台","sub_button":[{"type": "view","name": "更新公告","url": "http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1418702138&token=&lang=zh_CN"},{"type": "view","name": "接口权限说明","url": "http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1418702138&token=&lang=zh_CN"},{"type": "view","name": "返回码说明","url": "http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234&token=&lang=zh_CN"}]},{"type": "media_id","name": "旅行","media_id": "z2zOokJvlzCXXNhSjF46gdx6rSghwX2xOD5GUV9nbX4"}]}"""

之后可以在后台接收POST数据,并且进行对应的处理。

代码实现

如无特殊说明,以下所指代码均在ThssSE/WeChatTicket/wechat下。

access token相关:

使用wrapper.py文件中的WeChatLib的类函数get_wechat_access_token,检查是否超时并且在必要时从https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx获取access token,通过类函数和类变量来进行access token的管理。

认证:

通过wrapper.pyWeChatLib类的check_signature函数实现,排序后哈希处理即可。

menu处理

见get_wechat_menu与set_wechat_menu这两个函数

signature认证

WeChatView类中_check_signature函数

用户事件响应

do_dispatchparse_msg_xml函数,通过对微信发过来的POST事件进行解析、认证后,直接发送给对应的handler列表进行检查,让他们对这些数据进行对应的相应。

handlers.py文件中所写内容,check函数首先通过发送消息的类型与标识进行判断(对于文本内容直接检查文本数据是否符合要求,点击事件直接通过与自己在设置菜单时设置的event_key进行比对来确认),之后直接返回对应的数据并经过wrapper.py文件中do_dispatch函数,用HttpResponse进行XML格式封装,返回微信服务器。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部