预售功能的实现
一 增加预售相关的字段
- 增加preStatus 预售状态
- 增加frontAmt 定金金额
- 增加endAmt 尾款金额
二 增加预售定金下单接口
-
校验基本信息
(1)校验下单数量 (2)校验是否存在预售活动 (3)校验商品规格信息是否存在 (4)校验活动库存 (5)校验地址信息 -
进行订单封装
(1)封装商品信息 (2)封装活动信息 (3)封装支付信息 -
创建订单
-
更新库存
(1)更新活动库存 (2)更新商品库存
三 预售定金支付
描述:由于预售订单需要支付两次,并且传入给第三方支付系统,不能重复,因此需要将传入第三方的订单号
进行特殊处理,此处使用订单号 + 预售状态。例如如果为支付定金则为orderNo + '-' + 0,
如果为支付尾款则orderNo + '-' + 1。
四 预售定金支付成功回调
描述:由于预售支付时传入的订单编号不同,因此订单回调时,需要经过订单编号的二次处理,
判断订单是否为预售订单,如果为预售订单,则需要将订单按照下划线进行分割。
(1) 定金支付成功,修改订单的预售状态为尾款待支付状态
五 增加预售尾款支付接口
-
余额支付
(1) 订单支付金额不变 payAmt为定金金额 (2) 订单状态为已支付 status = 1,预售状态为已支付 preStatus =2 (3) 订单支付类型为余额支付 payType=3 -
余额 + 第三方支付
(1) 先扣除余额金额 (2) 进行第三方支付金额计算 (3) 进行第三方金额支付 -
第三方支付
(1) 没有余额,则只使用第三方支付方式来支付金额 (2) 订单支付金额修改为尾款支付金额 + 定金金额 (3) 尾款支付金额 = 商品总金额-活动价折扣金额-满减折扣金额-券折扣金额-币额-余额-定金金额
六 支付回调模拟
模拟支付成功与失败场景,进行业务的处理