微信公众号 Django开发及三步接入设置
![]()
开发微信公众号,首先要连接微信公众号,实现数据之间的交互。
微信公众平台接入的开发需要按照以下步骤完成:
1.填写服务器配置
2。验证服务器地址
3 的有效性。根据接口文档实现业务逻辑
第一步:完成服务器配置
在微信公众平台官网开发基础设置页面登录微信公众平台官网后,查看日志变为开发者,点击“编辑配置”按钮,填写服务器地址(URL)、token和encodingAESKey,其中URL是开发者用来接收微信消息和事件的接口的URL。该token可以由开发者填充并用于生成签名(该token将与接口URL中包含的token进行比较以进行安全验证)。 AESKey编码由开发者手动填写或随机生成,将作为消息体的加解密密钥。
同时,开发者可以选择消息加解密方式:纯文本模式、兼容模式、安全模式。模式选择和服务器配置将在提交后立即生效。建议开发者谨慎填写和选择。默认加解密状态为明文模式。选择兼容模式和安全模式需要提前配置各自的加解密代码。有关详细信息,请参阅消息正文签名和加密解密文档。
![]()
第二步:验证消息是否确实来自微信服务器
开发者提交信息后,微信服务器会向填写完成的服务器URL发送GET请求。 GET请求携带的参数如下表:
| Parameters | Description |
|---|---|
| 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填写在服务器配置地址中第一步。
提交成功即表示正确。接下来,测试并实现与微信公众号的交互。
![]()
如果配置错误失败,会提示:“公众号提供的服务出现故障,请稍后重试。”
如果成功,则发送回预制内容。
写在最后
不过,也有专门开发微信公众号和小程序的第三方python包。我推荐使用功能齐全的wechatpy。初学者可以结合第三方包和他们自己编写的内容来学习。第三章三边包有些地方不够灵活。接下来我会使用django和一些常用的包来编写微信公众号相关的开发,包括网站开发和小程序。
微信地址
https://www.wechatpy.org/ 版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
