快生活 - 生活常识大全

从到构建电商平台之订单系统支付订单


  上一篇笔者为大家介绍了订单系统中关于提交订单操作相关的问题:《从0到1构建电商平台之订单系统(1):提交订单》,提交订单之后,接下来要做的是"支付订单"。
  电商平台主要会涉及商家系统、商品系统、订单系统、售后系统、会员系统、营销系统、财务系统、数据系统等。我会把订单系统的文章拆分成三篇,本篇是第二篇。
  虽然每个公司的具体需求与业务场景不一样,我们平台的功能需求可能其他平台不尽相同,但整个订单的产生到结束的,主要有以下3个流程:
  上一篇文章我们是写的是提交订单这一步操作,当用户把订单提交后此时后台会有两步操作:
  1)拆单
  由购物车进入提交订单页面时可能有多商家多商品的情况,一旦提交了订单就会涉及到拆单(不管是否成功支付),一般来说最简单的是按商家拆,拆完后分别流转至相应的商家后台,用户在客户端的订单列表也会看到多个子订单;如果业务场景要求的话可以再按仓库等维度拆,这里不做展开;
  2)生成账单
  生成账单的目的是为了记录该笔母订单的金额,如商品金额、抵扣总金额、各商品分别抵扣金额、用户需支付金额等,用户将要支付的是母订单的账单,当该笔账单已完成,则各子订单状态跳转为待发货;
  注意,如果用户在支付页面退出,此时账单也会随着商家拆分成各子账单,因为用户可以在订单列表里分别对拆分后的子订单进行支付
  下面是支付页面的字段和各项判断流程:
  一、支付方式
  1. 支付宝/微信等三方支付
  由开发同学对接好三方支付平台的接口即可,这里不做展开。
  2. 余额支付
  用户在平台会通过一定的方式获取余额(非充值,也非用来抵扣的金币,是一种支付方式),此时有2种情况:
  1)金币完全抵扣
  当金币能完全抵扣时,在支付页面可以只显示余额支付;因为此时支付金额虽然为0,但需要选择余额支付并输入支付密码,目的是为了防止被他人盗用(当用户选择支付宝/微信支付时需输入支付密码,相当于已经起到了防止作用)
  2)金币非完全抵扣/未抵扣
  此时用户只能选择一种支付方式,但如果余额小于支付金额只能选择支付宝/微信。
  二、判断流程与思考
  1. 锁定库存:两种方案
  1)提交订单即锁库存
  这样做的优点是用户的体验较好,我提交了订单这个商品就是我的了,我可以慢慢付款;
  缺点是可能会导致真正有购买需求的用户无法购买,比如甲用户先提交订单锁定了库存他还在考虑中,不一定会买,但是乙用户想立即购买确发现没货了(也不排除有人恶意下单锁定库存)
  所以待付款订单一般都会有剩余支付时间,比如30分钟,到了时间自动取消订单并释放库存,或者在添加商品的sku时设置单人限购数量,这样一个账号只能在某一段时间内购买n次,同时技术上也可以做限制,同一ip只能购买n次
  2)支付成功才锁库存
  这样做的优点是可以筛掉恶意下单的情况;缺点是用户的体验会差一些,可能付款慢一点就会失去购买的机会。
  我们平台采用的是a方案,可以根据不同的业务场景选择不同的方案。
  2. 是否能下架商品?
  进入支付页面说明该订单已生成,且处于待付款状态,此时需要注意的是此时商家是否能下架商品。
  1)能
  可能会导致用户在已经支付订单时提示商品已下架,因为此时订单已经生成,处于待付款状态;只有让系统自动取消该订单,但对用户是比较不友好的
  2)不能
  对商家是不友好的,因为判断条件为订单处于待付款,此时用户可能不付款退出,订单也会处于待付款;
  衍生的情况就比较麻烦了,哪怕待付款订单自动取消的时间为30分钟,也会存在不断有用户下单,商家就可能一直不能下架商品,后续的问题可能会更大,但如果此时限制其他用户不能下单,那么就在技术与商家的操作上都会比较复杂(具体的操作这里不做展开)。
  我暂时没有想更好的解决方案,采用的第一种方案。
  3. 验证sku信息是否更改
  当订单处于待付款时商家修改了sku(下架商品 – 编辑商品 – 工作人员审核上架),该订单同样不能付款,因为和此时的商品信息甚至金额可能和之前发生了改变,与之衍生的可能就是商家与用户的纠纷。
  注意:如果采用的是商家不能下架商品的方案,则这一点就不用验证(所以2、3两点没在流程图上体现出来)。
  4. 是否支付成功
  支付成功即生成待发货订单,立即锁定库存。
  支付失败则还是为待付款订单,然后开始倒计时;一般平台商品库存充足倒计时可长一点,对用户会友好一点,库存不怎么充足或者平台上入驻的小商家居多,平台无法控制商家的库存或者下架之类的操作;
  如果也考虑到时间给用户带来的紧迫感的话,时间可以短一些;时间一到订单状态就应变成已关闭状态,用户无法支付,同时释放库存。
  订单成功支付后就需要商家处理订单了,同时用户也可以进行一些操作,下一篇"处理订单"。
网站目录投稿:新筠