微信公众号第三方配置、接口及模板 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><![CDATA[公众号/粉丝openid]]></ToUserName>
 <FromUserName><![CDATA[粉丝openid/公众号]]></FromUserName>
 <CreateTime>1460537339</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[具体内容]]></Content>
 <MsgId>6272960105994287618</MsgId>
 </xml>

如果使用图片等内容,需要使用其MediaId。此时MsgType为<![CDATA[image]]>,并且用Image标签包含<MediaId><![CDATA[gyci5oxxxxxxv3cOL]]></MediaId>的内容。

其中,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格式封装,返回微信服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值