首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >景区票务系统电子票防伪:基于腾讯云COS与加密签名防止票码伪造

景区票务系统电子票防伪:基于腾讯云COS与加密签名防止票码伪造

原创
作者头像
千里达票务系统
发布于 2026-10-17 22:17:23
发布于 2026-10-17 22:17:23
240
举报

一、电子票伪造的问题

电子票普及后,伪造票码成了新问题。我们做景区票务系统时遇到过:

  • 有人截图别人的票码反复用,闸机核销时没识别出来;
  • 第三方平台流出的假票码,扫进去显示已核销;
  • 票号规律被破解,有人自己生成假票入园。

电子票不像纸质票有防伪水印,纯数字二维码很容易被复制和伪造。怎么保证票码一次有效、不可复制?本文分享基于腾讯云COS和加密签名实现电子票防伪的实践。

二、防伪思路

核心三点:

  1. 票码一次性:核销后立刻失效,截图也没用;
  2. 票码不可预测:不是连续数字,别人猜不到规律;
  3. 票码带签名:服务端生成,客户端无法伪造。

三、票码生成机制

每笔订单支付成功后,服务端生成唯一票码:

  • 票码是UUID加上时间戳,不是连续数字,破解不了规律;
  • 票码带HMAC签名,用服务端密钥对订单号和时间戳签名;
  • 票码有效期2小时,过期自动失效。

闸机核验时:

  1. 先验签名对不对,不对就是假票;
  2. 再查Redis里这个票码有没有已核销;
  3. 没核销就核销,核销后Redis标记已用。

四、二维码图片存储

二维码图片不用存在本地服务器,全部上传到腾讯云COS:

  • 每个订单的二维码是独立图片,存在COS桶里;
  • 通过CDN分发,用户打开小程序就能看;
  • 图片URL带签名,过期自动失效,防止外链盗用。

COS的对象存储天然适合存这种静态图片,每个票一个对象,不用自己管文件系统。

五、核销防重

Redis里维护一个已核销票码集合,核销时先查集合:

  • 票码在集合里:已核销,拒绝入园;
  • 票码不在集合里:核销成功,加入集合。

Redis单线程操作保证原子性,即使两个人同时扫同一个码,也只有一个成功。

这套机制在千里达票务系统里跑了两年,没再出现过票码伪造和重复核销的问题。

六、退款退票处理

退票时:

  • Redis里删除这个票码;
  • COS里对应的二维码图片标记失效;
  • 用户端看到票已退。

即使有人截图了已退票的二维码,核验时也会被拒绝。

七、成本

COS存一张二维码图片几KB,一个景区一年几百万张票,存储成本几十块钱。CDN流量费一个月几十块,比票被伪造造成的损失便宜太多。

八、总结

电子票防伪的核心是:一次性票码加加密签名加Redis核销防重。腾讯云COS存二维码图片,CDN加速分发,Redis做核销状态判断。不用自己搞图片存储和防伪算法,云产品加简单的签名逻辑就够了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、电子票伪造的问题
  • 二、防伪思路
  • 三、票码生成机制
  • 四、二维码图片存储
  • 五、核销防重
  • 六、退款退票处理
  • 七、成本
  • 八、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档