电商业务知识总结(二)--订单和支付

2024-02-22 07:36

本文主要是介绍电商业务知识总结(二)--订单和支付,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

订单

  • 订单相关属性:

订单号、子订单号、订单类型、订单状态、用户id、用户名称、单价、数量、总价、支付方式、支付时间。

订单号和订单状态、支付方式,是比较重要的属性。

一个订单,可能会有多个子订单。

  • 状态机:

订单状态:待支付、已支付、超时、取消、完成、关闭。

如果需要发货和收货,可以增加一个 已发货、已收货 的状态。或者是确认收货后,订单状态变为已完成。

  • 数据存储:

订单一定就要考虑数据量,是否分库分表。

最好设置冷库和热库,时间比较久远的订单,可以归档,放到冷库,避免数据越积越多,影响查询和更新等业务的响应速度。

添加订单(下单)

下单可以和添加支付单 合成一个按钮,用户点击后,生成支付要素,显示支付金额,再输入密码确认。

订单超时

下单后,如果不支付,超过一定时间后,订单状态会变成 订单超时。

订单超时,需要设置超时时间,比如15分钟,超时后订单变为超时状态,一般会用延时队列实现。

取消订单

取消订单,如果是调用第三方的下单接口,一般在取消订单时,也需要调用第三方的取消订单接口。

取消订单,或者退款后,订单变为关闭状态。

产品需要明确,取消订单,是否自动退款。

支付

  • 支付相关的属性:

订单号,用户id,支付流水号,支付状态,支付方式,支付金额,支付回调时间。

  • 安全:

支付相关的,要注意安全性。

做好风控,针对账号和ip进行记录和监控,发现有异常行为的账号或者ip,及时做名单限制,避免黑产。

  • 产品需求:

产品需要明确,支付成功后能否取消订单。

  • 第三方支付:

微信支付、支付宝、云闪付等

  • 幂等性:

支付回调,需要做幂等。

  • 事务性:

支付成功,收到回调通知,修改订单状态,执行业务逻辑,需要保证事务性,要么全部成功,要么全部失败。

支付单:

调用第三方添加支付单,返回支付要素,用户输入密码后,再根据支付回调,更新订单状态。

同一订单,生成支付单后不支付,重新支付时,一般需要取消旧的支付单。

支付回调:

调用第三方的支付,添加支付单后,会返回支付要素,用户输入密码确认,之后系统会收到第三方系统的支付回调。

根据是否支付成功,执行业务逻辑。

主动查询支付状态:

不能依赖第三方系统的回调,第三方系统有可能会出现不回调的情况,需要主动查询。

可以在客户端调用后端查询支付状态的接口,每隔几秒轮询一次,一般情况下,重试三次到五次即可。

交付

  • 产品需求:

业务的交付,需要指定是立即交付,还是收货后才交付。

  • 幂等性

交付要做好幂等处理,不要重复交付。

  • 部分交付:

如果业务允许 订单分多次交付,每次交付一部分,那可以根据子订单来划分部分交付。

这篇关于电商业务知识总结(二)--订单和支付的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734554

相关文章

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Springboot使用RabbitMQ实现关闭超时订单(示例详解)

《Springboot使用RabbitMQ实现关闭超时订单(示例详解)》介绍了如何在SpringBoot项目中使用RabbitMQ实现订单的延时处理和超时关闭,通过配置RabbitMQ的交换机、队列和... 目录1.maven中引入rabbitmq的依赖:2.application.yml中进行rabbit

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert