电子票普及后,伪造票码成了新问题。我们做景区票务系统时遇到过:
电子票不像纸质票有防伪水印,纯数字二维码很容易被复制和伪造。怎么保证票码一次有效、不可复制?本文分享基于腾讯云COS和加密签名实现电子票防伪的实践。
核心三点:
每笔订单支付成功后,服务端生成唯一票码:
闸机核验时:
二维码图片不用存在本地服务器,全部上传到腾讯云COS:
COS的对象存储天然适合存这种静态图片,每个票一个对象,不用自己管文件系统。
Redis里维护一个已核销票码集合,核销时先查集合:
Redis单线程操作保证原子性,即使两个人同时扫同一个码,也只有一个成功。
这套机制在千里达票务系统里跑了两年,没再出现过票码伪造和重复核销的问题。
退票时:
即使有人截图了已退票的二维码,核验时也会被拒绝。
COS存一张二维码图片几KB,一个景区一年几百万张票,存储成本几十块钱。CDN流量费一个月几十块,比票被伪造造成的损失便宜太多。
电子票防伪的核心是:一次性票码加加密签名加Redis核销防重。腾讯云COS存二维码图片,CDN加速分发,Redis做核销状态判断。不用自己搞图片存储和防伪算法,云产品加简单的签名逻辑就够了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。