一、微信公众号的准备:

1. 注册

访问地址:https://mp.weixin.qq.com/
按照提示注册即可
注意:本文样例使用个人公众号,由于个人公众号没有接口权限,自定义菜单无法进行开发,同学们不要注册错!

申请公众号信息如下,也可扫码关注

此微信公众号致力于AI、开发、安全、数据、运维方向技术推广和技术传播,期待传播技术和知识推广的您加入。点击扫描二维码:

https://img.wuage.com/1.jpg

2. 配置

需要准备好自己的服务器地址,可以使用腾讯云阿里云京东云等等皆可,没有域名用IP也可以。
在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

微信公众平台

按照要求对开发基本信息配置,如下:

3. 连接

服务器配置提交后,微信服务器发送GET请求到填写的服务器地址URL上,GET请求携带参数包括signature、timestamp、nonce、echostr,服务端程序通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容给微信服务器确认后接入生效。加密/校验流程如下,下文中有代码具体实现:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

二、基于Django开发微信公众号后台的步骤:

1.准备工作

  • 新建 django project,项目名称:weixin
        django-admin.py startproject weixin

  • 新建 app
    进入项目目录下,cd weixin然后执行下面的命令
        python manage.py startapp weixin

        django-admin.py startapp weixin

  • 修改settings.py加入刚才创建的weixin应用
        INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','weixin',
)

  • 修改项目同名app内的urls.py,添加新的weixin的路由解析跳转
        urlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^weixin/', include('weixin.urls',namespace="weixin")),]

2.编写weixin应用的urls.py

修改app weixin内的urls.py,添加针对视图函数的解析,默认访问指向视图函数的weixin_index方法。

        app_name = 'weixin'urlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^$', views.index, name='weixin_index'),]

3.编写weinxin应用的views.py

get方法做校验,post方法传xml数据,解析和拼凑xml数据实现自动回复功能

        from django.http.response import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt
from wechat_sdk import WechatBasic
from wechat_sdk.exceptions import ParseError
from wechat_sdk.messages import TextMessage
# Create your views here.wechat_instance = WechatBasic(token='您设置的token',appid='您的公众号id',appsecret='您的公众号的秘钥'
)@csrf_exempt
def index(request):if request.method == 'GET':# 检验合法性# 从 request 中提取基本信息 (signature, timestamp, nonce, xml)signature = request.GET.get('signature')timestamp = request.GET.get('timestamp')nonce = request.GET.get('nonce')if not wechat_instance.check_signature(signature=signature, timestamp=timestamp, nonce=nonce):return HttpResponseBadRequest('Verify Failed')return HttpResponse(request.GET.get('echostr', ''), content_type="text/plain")# 解析本次请求的 XML 数据else:try:print(request.body)wechat_instance.parse_data(data=request.body)except ParseError:return HttpResponseBadRequest('Invalid XML Data')# 获取解析好的微信请求信息message = wechat_instance.get_message()# 关注事件以及不匹配时的默认回复response = wechat_instance.response_text(content=('感谢您的关注!\n回复【功能】两个字查看支持的功能,还可以回复任意内容开始聊天'))if isinstance(message, TextMessage):# 当前会话内容content = message.content.strip()if content == '功能':reply_text = ('目前支持的功能:\n1. 关键词后面加上【教程】两个字可以搜索教程,''比如回复 "Django 后台教程"\n''2.回复任意词语,查天气,陪聊天,讲故事,无所不能!\n''还有更多功能正在开发中哦 ^_^\n')response = wechat_instance.response_text(content=reply_text)print(response)return HttpResponse(response, content_type="application/xml")

3.配置公网域名映射后,运行程序,效果展示

        python manage.py runserver 0.0.0.0:80

发现不能正常使用,提示“该公众号提供的服务出现故障,请稍后再试”。

于是百度里各种找资料,又是查看微信公众号开发文档,各种百度和google,都没有解决。微信公众平台关闭启用,重置密钥。仔细核对填写,都没有问题。没有填写错误。

我开启了开发-运维中心-接口报警-告警规则全部调到“1次/5分钟”,偶尔会收到这样的报错:302网页重定向出错。

最后,我就查到微信公众平台-开发-基本配置-服务器配置-服务器地址(url),这里的http://头改成https://。

再试自动回复真的可以了。


如果对您有帮助,不如给个鼓励,点个赞。欢迎大家有空时翻下我牌子(知乎号:布道 ),看看“开发运维”专栏的文章!

Python进行微信公众号开发相关推荐

  1. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  2. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  3. 使用Python进行微信公众号开发(三)回复消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  4. 使用Python进行微信公众号开发(二)接收消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  5. 基于python的微信公众号开发

    最近想自学服务器方面的知识,用微信公众号开发来练手.阅读了一些文章,实践以后总结一下. 租了腾讯云服务器,操作系统为 Ubuntu Server 14.04.1 LTS 64位,分配了一个公网IP地址 ...

  6. python训练营微信公众号真实性_用python进行微信公众号开发(仅测试学习)

    今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用. 基础背景介绍: 首先得有个人微信号(没有自行注册),为方便测试学习: ...

  7. python 微信公众号开发[1] 后台服务器端配置与公众号开发配置

    更新时间:2020年3月7日 微信公众号开发的硬件必备条件:(1)申请一个公众号 (2)有公网ip的服务器(最好是阿里云,腾讯云等的云服务器)(3)解析到(2)中服务器地址的域名(阿里云,腾讯云购买即 ...

  8. Python 微信公众号开发

    大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的.http://blog.csdn.net/marksinoberg/article/details/54235271 后来服务器到 ...

  9. Python微信公众号开发平台

    上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的. //www.jb51.net/article/133677.htm后来服务器到期了,也就搁置了.由于发布web程序,使用PHP很 ...

最新文章

  1. C#实现php的hash_hmac函数
  2. Chapter 1 快速搭建-服务的注册与发现(Eureka)
  3. 关于WSE_CLIPSIBLINGS
  4. springboot 增加prometeus监控
  5. ​多任务学习漫谈:行梯度之事
  6. LeetCode 2035. 将数组分成两个数组并最小化数组和的差(状态压缩DP)
  7. 计算机中丢失dinput8,修复dnfdinput8.dll
  8. 光耦p621引脚图_光耦继电器类型,带有示例和电路图的应用
  9. admin ajax,如何在FastAdmin中使用Ajax发送请求?
  10. 【转】C语言条件编译及编译预处理阶段
  11. 社会达尔文主义 盛行时间_新达尔文主义的心理理论
  12. 操作系统概念第三章部分作业题答案
  13. 元宇宙与泛娱乐的邂逅:次世代第一CP养成记
  14. 按键1按下数码管显示1,按键2按下数码管显示2,按键3按下8个LED灯实现流水灯效果;
  15. 世界上最成功的人一开始是个程序员-《程序员大本营》1999版
  16. ids for this class must be manually assigned before calling save()报错解决方法
  17. springboot基于Java的电影院售票与管理系统毕业设计源码011449
  18. C++ 强密码判定与修改
  19. kubernetes kubectl apply -f和kubectl create -f有什么区别
  20. python使用pika操作rabbitmq总结

热门文章

  1. 支持win7的node.js版本+node和npm版本不匹配问题解决
  2. Pet包 资源 Linux,PET文件扩展名 - 什么是.pet以及如何打开? - ReviverSoft
  3. springboot 处理put请求参数
  4. T4 级老专家:AIOps 在腾讯的探索和实践
  5. 利用燕尾花数据集画出P-R曲线
  6. GitLab使用CAS服务进行单点登录配置
  7. 为什么人脸识别系统总是认错黑人?
  8. 大数据技术生态体系组件概述
  9. 网站经常出现502错误怎么办
  10. 【实验】虚拟驱动模拟实验