下单没付款的票到底占不占额度,答案是看扣减记录挂在哪条状态上。如果预占和售出写在同一个字段里,后台看到的可售数已经减掉了未付款那部分,接口同步给渠道的也是同一个数——线上显示只剩两百张,实际可能一张都没卖出去。库存要能分出“占位量”和“成交量”两个数,后面所有配置才谈得上。
占位是一条带倒计时的记录
待支付订单在池里是一次有到期时间的占用,到期自动消失并写一条释放流水。到期时长要能按渠道分别配:自营小程序、分销接口、团队报名三档付款路径完全不同——小程序在收银台里付,分销先建单再异步扣款,团队要等名单来回确认。同一个超时值套三方,就会一边不断占位、一边不断释放,可售数在数字上忽多忽少。
时长不是拍一个数,是从两个耗时里推出来的。先看本渠道下单到支付成功的耗时分位,再看支付通道回调到达的延迟。收银台付款的正常分布大多落在三十到九十秒;链路里还要填实名信息或收短信验证码的,能拖到三到五分钟。分销侧回传延迟通常以分钟计,个别超过十分钟。耗时分位加上回调延迟再留一点余量,才是该渠道该设的值。用一个两分钟套所有渠道,正常付款的单会被砍:钱扣了、单已关、票没出,全转成退款工单。

释放要能被支付结果推翻。倒计时到期与支付成功到达之间有一个很短的竞争窗口,处理顺序必须写成“已支付优先”:关单前先查一次支付状态,已付的改走补位出票,未付的才释放。补位出票要再看一次池,有余量重新占住,没余量把订单挂进人工队列并保留原始凭证,这条队列当天清零。少了这一步,超时释放会稳定地制造“付款失败但钱已扣”。
占位常态量可以估。用日下单笔数除以可售小时数得每分钟下单速率,再乘平均占位时长。一天九千六百笔、可售十二小时,速率约每分钟十三笔,平均占位两分半,稳态就有三十多笔挂在池里,按单笔一点五张折算约五十张票。开抢那一刻速率能到平时的七到十倍,这一段才需要设占位上限:未支付占位不超过该时段池的某个比例,超出的新单不占位、只排队付款。
这个值设得合不合理,只看两个信号。一是超时关闭的订单里“关闭后五分钟内同一手机号重新下单”的占比,偏高说明砍早了;二是池里占位未付的量占当日可售数的比例,持续偏高说明放晚了。两个指标必须按渠道分开看,用整体平均会把小程序的问题藏进分销的数据里。还有一条边界要写死:入园日落在次日的单,倒计时从售卖时点还是入园时点起算。

超时释放和退票回补是两条路径。前者回的是被占住的那一格,后者回的是已经成交的额度,两条流水在库里要分成不同类型。混成一类,同一笔回补会在日结时被算两遍。

鄂公网安备 42018502004652号