12306 Bug:同一张身份证,买了同一车次的两张票
(点击上方公号,快速关注我们)
原创整理:程序员的那些事(id:iProgrammer)
现代快报报道了今年国庆期间 12306 系统又出现一起「同一个身份证,买了同一趟车的两张票」的 Bug。
10月2日,南京市民薛先生通过某App,给家里两个长辈购买了两张从成都到商丘的火车票。过了两天他才发现,妻子也帮着买了一份,并且是同一时间同一车次同一车厢相邻的两个座位。“同一个人在同一辆车上怎么能买两个座位呢?”薛先生认为,是12306系统出现了故障,导致重复购票,他向12306提出退款,但被拒绝。
薛先生告诉现代快报记者,他的母亲和姑妈10月3日要从四川成都去河南商丘,10月2日晚,他用某App给两位老人订购火车票。“当时我也在火车上,信号不是很好。”他表示,当时自己手机上没有显示购买成功,于是便让妻子帮忙一起买,“过了一会儿她告诉我买到了,我以为她登录的是我的账号。”直到10月4日,妻子告诉他,她的支付宝账户有扣款,夫妻俩一沟通才知道,妻子当时用的是自己的账号。
全文报道可以戳右边链接:《一张身份证,竟买了同一趟车的两张票》。
上次媒体报道类似 Bug,是在 2016 年春节。一北京乘客用两个非 12306 软件抢票时,出现了重复购买,被扣去双份费用。
两次报道的共同点:皆为通过第三方渠道(非 12306 官方网站/APP)下单。(貌似目前没看到 12306 官方渠道出现类似情况的公开报道,或者只是我没看到而已
薛先生向记者提供的订单:
看了这则报道,可能会有类似我们微博读者的那样的疑问「为什么不直接去窗口退票?」
在 12306 官网有相关提醒,没有换取纸质车票且不晚于开车前 30 分钟的,可在12306.cn 网站办理退票。已经换取纸质车票或者在开车前 30 分钟之内的,需携带购票时所使用的乘车人有效身份证件原件到车站售票窗口办理。
薛夫妇在10月2日买的票,10月3日晚9点多发车,薛他们10月4日才发现重复购票了。所以超过发车前 30 分钟退票的限制了。
网友讨论
这事我们昨天在微博也发了,摘录几个讨论:
@按动碳素笔:我就有过一次,两个软件都说买到票了,仔细一看买到的是同一张。。。这还真能买到两张啊
@京都民工:加个身份证,日期,车次为主键的缓存~ 第二张就下单失败了
@猫开车-:将每个座位预设为一笔订单,该笔订单在交易中的情况下不进入 选择/分配 序列。
@东条希是大魔王:订票最好用12306,被几次春运折腾过后已经很完善了
我们「技术最前线」下的讨论
猫耳的天空:作为做过第三方对接12306的开发人员,表示这个就是12306的问题,第三方购票最终也是调用12306的接口进行数据落地,很明显12306接口数据校验存在问题
Cynthia🌸:即使是第三方app买票,也是要进入12306的系统的,所以就是系统对并发没有处理好。想一下银行的系统,如果你有一百块,然后用两个手机同时消费一百块,结果都消费成功了,肯定是系统有bug。(PS 如果是这种情况银行一定会追着你把多消费的钱要回来的)
周昱江:12306什么时候说提供过接口?还说的有模有样的,真搞笑。如果你用12306会出现这种现象吗?人家系统设计就是面向自己APP,面向正常用户,第三方这种短时间刷新重复提交本来就不是人家系统设计范围内。再过分点人家12306告你非法入侵也是可能的。
暗影浅:不说接口不接口,盗版不盗版,爬虫不爬虫,能重复下单本来就是12306系统的问题。
昨天有 4 位读者在我们其他公号评论中表示遇到过「同一个身份证,买了同一趟车的两张票」,其中后来有一位妹子发了 10 月 6 日的订单截图。(她是通过 12306 官方,还是第三方渠道?她未回复
薛先生和前文提到的 2016 年春节某位北京乘客,他们都是通过非官方渠道购买下单,遇到了「同一个身份证,买了同一趟车的两张票」的 Bug。
至于 12306 官方渠道是否会出现这种 Bug,我们暂时没有看到直接的订单截图。如果你遇到过,可以通过公号留言,发给我们看看。
【关于投稿】
如果大家有原创好文投稿,请直接给公号发送留言。
① 留言格式:
【投稿】+《 文章标题》+ 文章链接
② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:
http://blog.jobbole.com/94148/
③ 最后请附上您的个人简介~
关注「程序员的那些事」,不错过圈内事