使用Python进行微信公众号开发(一)服务器对接

写在前面

《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。

效果体验

扫码“是雯子吖”公众号进行体验

是雯子吖

配置自己的公众号后台进行体验

想要体验效果的小伙伴可以将微信公众号后台的 开发-> 基本配置 -> 服务器配置 中的Token随意配置,服务器地址配置为 https://apit.toodo.fun/wechatMP/ + Token,如

Token = hello  # 可随意设置,但是要保证与服务器地址最后一项相同
服务器地址:https://apit.toodo.fun/wechatMP/hello
消息加解密方式:明文模式或者兼容模式

如果配置成功的话,新关注你公众号的用户将会收到“Hi~ 终于等到你”,并且收到消息后会由我服务器上的机器人自动回复。

项目地址

GitHub:https://github.com/MR5356/toodoWechat

后台服务器搭建

我们选择flask进行服务器后台开发,在这一步中,会与大家分享微信公众号与服务器对接流程。

接收参数

在微信公众号第一次与服务器进行对接时,将向填写的服务器URL发送一个GET请求,GET请求携带的参数如下:

参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串(仅第一次服务器验证时有此参数)

代码片段

@app.route('/')
def main():
    signature = request.values.get('signature')
    timestamp = request.values.get('timestamp')
    nonce = request.values.get('nonce')
    echostr = request.values.get('echostr')

signature校检

当接收到参数后,我们需要确认这条消息是否来自微信服务器,即signature校检。
校检流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将排序后的三个参数拼接为一个字符串,然后进行sha1加密
  3. 将加密后的字符串与参数中的signature参数进行对比,如果相同则通过校检,否则则不通过校检

代码片段

def checkSignature(token, timestamp, nonce, signature):
    temp = [token, timestamp, nonce]
    temp.sort()
    res = hashlib.sha1("".join(temp).encode('utf8')).hexdigest()
    return True if res == signature else False

微信公众号与服务器对接

在微信公众号向服务器发送的第一次请求中包含echostr参数,在对接过程中仅需要返回这一参数即可。

代码片段

if echostr:
    return echostr

本小节代码汇总

from flask import Flask, request, abort
import hashlib

app = Flask(__name__)


@app.before_request
def checkSignature():
    signature = request.values.get('signature')
    timestamp = request.values.get('timestamp')
    nonce = request.values.get('nonce')
    echostr = request.values.get('echostr')  # 仅在验证服务器时使用次参数
    if not wmp.checkSignature(timestamp=timestamp, nonce=nonce, signature=signature):
        abort(404)
    if echostr:
        return echostr


@app.route('/')
def main():
    return "是雯子吖"


if __name__ == '__main__':
    app.run()

未完待续

参考文档

开发者文档-接入指南:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

下面是我自己运营的微信小程序“但行趣事”和公众号“微电脑”,更多的技术文章以及视频我会放到小程序和公众号当中,有志同道合的小伙伴也可以在小程序(联系客服按钮)或者公众号(直接留言)当中联系我们

但行趣事小程序
微电脑公众号
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我雯子小姐的小爷

是雯子吖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值