Code前端首页关于Code前端联系我们

微信公众号 Django开发及三步接入设置

terry 2年前 (2023-09-24) 阅读数 58 #后端开发

Django之微信公众号开发接入三步设置

开发微信公众号,首先要连接微信公众号,实现数据之间的交互。

微信公众平台接入的开发需要按照以下步骤完成:

1.填写服务器配置

2。验证服务器地址

3 的有效性。根据接口文档实现业务逻辑

第一步:完成服务器配置

在微信公众平台官网开发基础设置页面登录微信公众平台官网后,查看日志变为开发者,点击“编辑配置”按钮,填写服务器地址(URL)、token和encodingAESKey,其中URL是开发者用来接收微信消息和事件的接口的URL。该token可以由开发者填充并用于生成签名(该token将与接口URL中包含的token进行比较以进行安全验证)。 AESKey编码由开发者手动填写或随机生成,将作为消息体的加解密密钥。

同时,开发者可以选择消息加解密方式:纯文本模式、兼容模式、安全模式。模式选择和服务器配置将在提交后立即生效。建议开发者谨慎填写和选择。默认加解密状态为明文模式。选择兼容模式和安全模式需要提前配置各自的加解密代码。有关详细信息,请参阅消息正文签名和加密解密文档。

Django之微信公众号开发接入三步设置

第二步:验证消息是否确实来自微信服务器

开发者提交信息后,微信服务器会向填写完成的服务器URL发送GET请求。 GET请求携带的参数如下表:

ParametersDescription
signature加密后的微信签名。签名将开发者填写的token参数与请求中的时间戳参数、nonce参数结合起来。
timestamp时间戳
nonce随机数
echostr随机字符串

下面的签名验证方法由开发者验证)。如果确认该GET请求来自微信服务器,请原样返回echostr参数的内容,则访问生效,成功成为开发者,否则访问失败。加密/验证过程如下:

1)将token、timestamp、nonce这三个参数按照字典顺序排列

2)将三个参数字符串拼接成一个sha1加密字符串

3)加密后的开发用户获取的字符串可以与签名进行比较,识别该请求来自微信

第三步,准备开发服务器

创建Django应用程序并配置外网访问。下面是代码和效果

#views.py

# -*- coding: utf-8 -*-
from django.shortcuts import renderimport hashlibimport requestsimport xmltodictfrom django.http.response import HttpResponse@csrf_exemptdef djwechat(request):if request.method == 'GET':        signature = request.GET.get('signature','')        print('test',signature)        timestamp = request.GET.get('timestamp', '')        nonce = request.GET.get('nonce', '')        echo_str = request.GET.get('echostr', '')        token='你的token'        # ckeck_res = signature_check(WECHAT_TOKEN,  timestamp, nonce)        hashlist = [token, timestamp, nonce]        hashlist.sort()        list2 = ''.join(hashlist)        sha1 = hashlib.sha1()        sha1.update(list2.encode('utf-8'))        hashcode = sha1.hexdigest()print(hashcode,"rrr",signature)if hashcode == signature:return HttpResponse(echo_str, content_type="text/plain")else:return HttpResponse('error', content_type="text/plain")    elif request.method == 'POST':        dict_xml = request.body.decode('utf-8')        xmlData = xmltodict.parse(dict_xml)        msg_type = xmlData['xml']['MsgType']        if msg_type == 'text':            resp_data = {"xml": {"ToUserName": xmlData['xml']['FromUserName'],"FromUserName": xmlData['xml']['ToUserName'],"CreateTime": int(time.time()),"MsgType": 'news',"ArticleCount": 1,"Articles": {"item": {"Title": "Python与Django历史发布的文章","Description": "查阅历史消息请直接点击","PicUrl": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM6nwqlzLmsK41HXF7Y7qiccib5T9uicNCByWdibEv8t46Hsag/132","Url": "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzAwNjE5MTE3Mw==&scene=124#wechat_redirect"                            }                        },                        }            }            xmltodict.unparse(resp_data)            response = HttpResponse(xmltodict.unparse(resp_data), content_type="text/plain")return response

在url中添加记录

path('djwechat', views.djwechat, name='djwechat'),#python与django学习

测试

最终服务器地址http://xxxx.com.cn/djwechat填写在服务器配置地址中第一步。

提交成功即表示正确。接下来,测试并实现与微信公众号的交互。

Django之微信公众号开发接入三步设置

如果配置错误失败,会提示:“公众号提供的服务出现故障,请稍后重试。”

如果成功,则发送回预制内容。

写在最后

不过,也有专门开发微信公众号和小程序的第三方python包。我推荐使用功能齐全的wechatpy。初学者可以结合第三方包和他们自己编写的内容来学习。第三章三边包有些地方不够灵活。接下来我会使用django和一些常用的包来编写微信公众号相关的开发,包括网站开发和小程序。

微信地址

https://www.wechatpy.org/

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门