优惠与积分的逻辑缺口
优惠券和积分是业务逻辑问题的集中区:领取、核销、叠加、过期、回滚这五个环节都容易出现规则声明与实际实现不一致。典型缺口是同一活动可重复领取、叠加规则只校验单张券、有效期边界处理不严、订单取消后券未按预期回滚。检查方法是先拿到规则文档,再用测试账号逐条验证边界。
基本信息
| 检查对象 | 优惠券领取、核销、叠加、过期、退款回滚、积分增减 |
|---|---|
| 检查方法 | 按规则文档逐条构造边界场景,用测试账号验证 |
| 记录方式 | 规则声明与实际行为的差异清单 |
| 参考标准 | OWASP WSTG-BUSL-01、CWE-840 |
典型使用场景
- 大促活动上线前的规则校验
- 排查对账中出现的优惠金额异常
- 核查多端(App、小程序、Web)规则实现是否一致
- 评估退款与取消订单后的券回滚逻辑
- 为风控与财务提供异常场景清单
检查清单
检查清单
领取:同一活动重复领取、多设备领取、并发领取(配合竞争条件验证)
叠加:券与折扣、积分、满减的叠加顺序与上限,是否互斥
边界:生效前一分钟与过期后一分钟的可用性,跨天与跨时区处理
回滚:订单取消、部分退款、全额退款后券与积分的回滚规则
一致性:不同端与不同活动类型(新人、专属、通用)的规则差异场景与期望行为
| 场景 | 期望行为 | 常见缺口 |
|---|---|---|
| 重复领取 | 按活动与账号唯一约束拒绝 | 仅前端做限制 |
| 叠加使用 | 按规则校验组合与上限 | 只校验单张券 |
| 过期边界 | 过期即不可用 | 服务端未校验时间 |
| 取消订单回滚 | 按规则回滚且不可重复回滚 | 回滚无幂等 |
| 积分冲正 | 与订单状态一致 | 只加不减或重复加计 |
修复视角:领取与核销在服务端原子化(唯一约束或条件更新),回滚逻辑纳入状态机统一处理,避免各处各自实现一套判断。
不要在真实活动中用真实券做叠加验证:会造成实际资损。验证统一在测试活动与测试券上进行,并提前与业务方确认测试账户。