微信公众号 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 render
import hashlib
import requests
import xmltodict
from django.http.response import HttpResponse
@csrf_exempt
def 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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。