券系统设计及券和订单号使用重复下单问题汇总
1.根据订单号 券号来唯一标识一次请求,但是请求端每次请求都会重新生成一个新的订单号,导致每次都是一次新的请求。造成重复下单。 >> 需要调整服务端逻辑:只认券号,而不是券号和订单号的组合。 2.服务端在免登陆的接口,不能直接返回整个页面出现报错信息。这样用户不能进入到“我的个人中心查看订单列表”。 如果报错信息是弹框,客户可以关闭弹框,这样他仍然可以继续下单,这样下单的接口仍然需要拦截。 问题点在:第一道免登陆拦截,还是在第二道下单拦截。
方案: 1.增加回调通知节点,下单,取消,结算。这样客户端在下单成功之后,就知道该订单号是否下单成功。可以控制下次进来券号和订单号是同一个。这样判断券号已下单,直接进入订单详情页面。 2.服务端在免登陆接口拦截,一个券号只允许一个订单号,存在订单号则跳转到“订单详情”,否则允许下单。 3.服务端在订单提交接口拦截。 只认券号来关联订单号返回提交订单的报错信息,阻止重复下单。
券系统设计 1.发券接口 发券流水号 唯一 发券数量 发券类型 发券的有效起止时间 券的其他属性字段 发券表:重要字段:券ID 唯一,券请求id,券库存数量,券关联的订单号(重要)。 2.券查询接口 重要字段:发券流水号 唯一
3.券撤销接口 重要字段:券ID 唯一(支持列表批量撤销)
4.免登录接口 请求方参数:重要字段:手机号,下单订单号,券ID,券类型,组成JSON字符串,AES加密,url编码请求(可以考虑POST方式请求到后端,先url解码,然后AES解密操作)。 返回:登录用户的TOKEN,券类型,跳转页面类型等,跳过登录页面,直接到下单页面 OR 订单详情页面。 5.提交订单接口 重要字段:外部订单号,服务端订单号,渠道source 6.订单列表接口 重要字段:渠道source 7.订单详情接口 重要字段:外部订单号,服务端订单号 8.订单取消接口 重要字段:外部订单号,服务端订单号