本文主要是介绍电商业务知识总结(二)--订单和支付,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
订单
- 订单相关属性:
订单号、子订单号、订单类型、订单状态、用户id、用户名称、单价、数量、总价、支付方式、支付时间。
订单号和订单状态、支付方式,是比较重要的属性。
一个订单,可能会有多个子订单。
- 状态机:
订单状态:待支付、已支付、超时、取消、完成、关闭。
如果需要发货和收货,可以增加一个 已发货、已收货 的状态。或者是确认收货后,订单状态变为已完成。
- 数据存储:
订单一定就要考虑数据量,是否分库分表。
最好设置冷库和热库,时间比较久远的订单,可以归档,放到冷库,避免数据越积越多,影响查询和更新等业务的响应速度。
添加订单(下单)
下单可以和添加支付单 合成一个按钮,用户点击后,生成支付要素,显示支付金额,再输入密码确认。
订单超时
下单后,如果不支付,超过一定时间后,订单状态会变成 订单超时。
订单超时,需要设置超时时间,比如15分钟,超时后订单变为超时状态,一般会用延时队列实现。
取消订单
取消订单,如果是调用第三方的下单接口,一般在取消订单时,也需要调用第三方的取消订单接口。
取消订单,或者退款后,订单变为关闭状态。
产品需要明确,取消订单,是否自动退款。
支付
- 支付相关的属性:
订单号,用户id,支付流水号,支付状态,支付方式,支付金额,支付回调时间。
- 安全:
支付相关的,要注意安全性。
做好风控,针对账号和ip进行记录和监控,发现有异常行为的账号或者ip,及时做名单限制,避免黑产。
- 产品需求:
产品需要明确,支付成功后能否取消订单。
- 第三方支付:
微信支付、支付宝、云闪付等
- 幂等性:
支付回调,需要做幂等。
- 事务性:
支付成功,收到回调通知,修改订单状态,执行业务逻辑,需要保证事务性,要么全部成功,要么全部失败。
支付单:
调用第三方添加支付单,返回支付要素,用户输入密码后,再根据支付回调,更新订单状态。
同一订单,生成支付单后不支付,重新支付时,一般需要取消旧的支付单。
支付回调:
调用第三方的支付,添加支付单后,会返回支付要素,用户输入密码确认,之后系统会收到第三方系统的支付回调。
根据是否支付成功,执行业务逻辑。
主动查询支付状态:
不能依赖第三方系统的回调,第三方系统有可能会出现不回调的情况,需要主动查询。
可以在客户端调用后端查询支付状态的接口,每隔几秒轮询一次,一般情况下,重试三次到五次即可。
交付
- 产品需求:
业务的交付,需要指定是立即交付,还是收货后才交付。
- 幂等性
交付要做好幂等处理,不要重复交付。
- 部分交付:
如果业务允许 订单分多次交付,每次交付一部分,那可以根据子订单来划分部分交付。
这篇关于电商业务知识总结(二)--订单和支付的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!