PHP、Java 还是 Python?谁是微信公众号开发的首选语言

Python开发微信公众号
部署运行你感兴趣的模型镜像

点击上方“优快云”,选择“置顶公众号”

关键时刻,第一时间送达!

现在很多人都在做微信公众号开发,但大多数人都是按照腾讯公司给出的文档在用 PHP 或者 Java 做开发,那么用 Python 如何做?


微信公众号的准备


1. 注册

访问地址:https://mp.weixin.qq.com/,按照提示注册即可。 

注意:本文样例使用个人公众号,由于个人公众号没有接口权限,自定义菜单无法进行开发,同学们不要注册错! 

2. 配置

需要准备好自己的服务器地址,可以使用腾讯云阿里云京东云等等皆可,没有域名用 IP 也可以。 

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

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


3. 连接

服务器配置提交后,微信服务器发送 GET 请求到填写的服务器地址 URL 上,GET 请求携带参数包括 signature、timestamp、nonce、echostr,服务端程序通过检验 signature 对请求进行校验(下面有校验方式)。

若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容给微信服务器确认后接入生效。加密/校验流程如下,下文中有代码具体实现: 

  • 将 token、timestamp、nonce 三个参数进行字典序排序;

  • 将三个参数字符串拼接成一个字符串进行 sha1 加密;

  • 开发者获得加密后的字符串可与 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")


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


python manage.py runserver 0.0.0.0:80

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

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

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

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

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

作者:刘晓明,知乎ID为@布道,本文首发于「开发运维」知乎专栏,地址:https://zhuanlan.zhihu.com/idevops。

本文为作者投稿,版权归原作者所有。

  征稿啦!

优快云 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 优快云 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@youkuaiyun.com)。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更新日志: 新版v1.0.3发布: phpWeChat PC+微信公众号开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值