预售功能实现

1,682 阅读2分钟

预售功能的实现

一 增加预售相关的字段

  • 增加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) 尾款支付金额 = 商品总金额-活动价折扣金额-满减折扣金额-券折扣金额-币额-余额-定金金额
    

六 支付回调模拟

模拟支付成功与失败场景,进行业务的处理