太强了!基于公众号用 Python 开发一个抽奖程序

2023-10-21 01:40

本文主要是介绍太强了!基于公众号用 Python 开发一个抽奖程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好

上周在公众号做了个抽象的活动,程序是自己临时写的,就是下面这种效果。回复指定关键字系统会自动给你分配一个抽奖号码

回复另一个关键字可以查看当前有没有中奖,功能可以说非常简单。

有些小伙伴拿到代码之后,问有没有详细的教程,光是看代码不知道怎么运行。

于是就有了这篇文章。

本文假设你已经有一个自己的公众号,还没有公众号的可以在平台注册一个,地址是:http://mp.weixin.qq.com 。

首先登录公众号平台,填写服务器配置


URL 不能乱填,这个是你的服务器地址, 比如:http://123.33.44.55/wx ,IP 地址是服务器的公网IP,所以前提你还得有一台服务器。

你可以选择国内的虚拟主机服务商,比如阿里云、腾讯云或者Ucloud(三位厂商记得给我广告费啊)都可以

填写完直接提交会验证失败的,因为服务器还没接入进来。

所以要先验证服务器地址的有效性。

验证服务器地址的有效性就是下面的处理逻辑,我这里是用的flask框架。


微信服务器请求URL的时候,会传4个参数给你,分别是


所谓验证服务器地址的有效性,就是要确认请求是否来自微信服务器,因为发起请求的也有可能是某个黑客。我们可以通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:

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

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

  • 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

将代码部署到自己服务器之后,这时候再去提交,会提示你提交成功。验证成功后,就可以开始实现业务逻辑了。

实现抽奖逻辑

当用户在公众号发送消息时,微信会以POST请求的方式将消息转发给业务服务器(就是我们自己处理业务逻辑的程序),然后我们根据用户发送的内容进行相应的逻辑处理。

微信会通过POST请求,以xml的格式发送给我们业务服务器,里面的内容包括发送的消息内容、时间、还有open_id, open_id 唯一对应用户。虽然你不知道用户的昵称,但是只要知道open_id 就可以唯一确定是哪个用户。

定义数据模型

实现抽奖系统,我们首先定义了数据模型


只要三个字段就够了,number 是抽奖号码,open_id 表示谁获得了该抽奖号码, 初始为空, valid 表示该号码是否为中奖号码。初始化系统时,我们会随机给一些数据设置valid有True, 比如你想抽3个奖品,就随机弄3条数据为True。

模型建立完成后,接下来就可以处理具体的业务逻辑了。当用户发送抽奖关键字时,我们要做3件事。

1、判断当前用户是否还有抽奖资格
2、生成抽奖号码
3、查询剩余抽奖次数

回复另一个关键字查询是否中奖时,我们只需要判断它的抽奖号码里面有没有匹配的valid为True的数据即可。我都这些逻辑都封装在models里面,所以看起来也没几行代码。


以上就是整个抽奖小程序的全部思路。剩下的事情就是把代码部署到服务器,就能实现文章开头的效果了。

是不是超级简单。源代码获取请回复“公众号”

如果你正想实现一个类似的小程序,例如做个天气预报查询等有趣味的程序,如果编程过程中总是遇到各种问题卡壳,可以加我微信 "yueryounali",好的问题胜过无数个好答案。我们的python交流群也有很多高手。

学编程关键在于动手,提高在于实践。

推荐:
“痛苦地去死”,Linus再次怒喷Intel再见,Navicat!这个Pycharm的兄弟真香!说多了都是泪,一个项目上线的真实过程…

这篇关于太强了!基于公众号用 Python 开发一个抽奖程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251067

相关文章

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.