口衔山石细,心望海波平。 – 唐·韩愈 《学诸进士作精卫衔石填海》
写在前面:这是在下新开的专题,记录分享在微信公众号后台项目开发中的技术点。目前的定位是偏教程,目标是有朝一日整理成册,帮助希望了解公众号开发的同学更无痛的完成入门。目前只有对项目前期的一些思考,并不完整,准备在开发过程中想到什么再慢慢补充。如果在开发过程中发现前文描述已经不合理,或者觉得对项目的想法更成熟了,也会经常对整个专题的文章进行重写。不求快速完成,但求质量比较高。
Day1
需求点
完成公众号后端服务器配置
需求分析
公众号配置服务器需完成 Token 验证才可配置成功,因此你必须在自己服务器上启动一个服务监听服务,当监听到请求调用时根据规则进行验签。
换句话说,微信公众开放平台需要确认此处配置服务器确实是你本人的。
需求实现
初始化项目
# 创建 wp_env 虚环境
python3 -m venv wp_env
# 加载虚环境
source wp_env/bin/activate
# 安装 django
pip install django
# 创建 wechat_power 项目
django-admin startproject wechat_power
# 进入项目根目录
cd wechat_power
初始化验签app
# 创建 auth 应用
python manage.py startapp auth
修改wechat_power/urls.py
文件,新增auth
应用的URL配置
from django.contrib import admin
# 新增 include 依赖
from django.urls import path, include
urlpatterns = [
# 新增auth应用的URL配置
path('wechat/', include('auth.urls')),
path('admin/', admin.site.urls),
]
新增auth/urls.py
文件
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
修改auth/view.py
文件
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import hashlib
@csrf_exempt
def index(request):
# 解析参数
signature = request.GET.get('signature')
echostr = request.GET.get('echostr')
timestamp = request.GET.get('timestamp')
nonce = request.GET.get('nonce')
# 公众号网页后台填写的 token 值
token = 'xxx'
# 数据加密
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
sha1.update(''.join(list).encode('utf-8'))
hashcode = sha1.hexdigest()
# 签名验证
if hashcode == signature:
return HttpResponse(echostr)
else:
return HttpResponse('')
启动服务
python manage.py runserver 0.0.0.0:80
需求上线
将该服务部署到服务器上后,将URL配置到微信公众开发平台中,点击提交配置,验签成功~
btw,可以在评论区提问题、对项目的想法、鞭策在下更新