当前位置: 首页 > news >正文

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。

在这里插入图片描述
订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据,有销售才有收入,所有的工作都是围绕着订单开展的,为订单服务的。

订单生成流程

在这里插入图片描述
上面这个流程相信接触到电商或经常购物的人都特别熟悉,特别简单,在设计开发时要我个人觉得要从以下三方面考虑。

首先,我们要清楚从搜索选择商品到加入购物车,然后提交订单,再到用户支付完成。就这么几步,你在淘宝、京东等任何一定电商网站也要遵循这个过程,所以这个过程比拼的是用户体验以及系统的稳定与性能。

其次,从产品运营的角度来讲,应该要考虑到用户在进入到哪个环节了,应该如何留住用户,最终让用户下单并支付。所以在产品与运营要兼顾考虑,不能脱离开。

最后,订单生成流程中用户的浏览、点击等行为都需要保存,每个过程要进行数据埋点,后台最终要计算出其页面PV、UV、以及订单转化率等指标,用于后续持续改进的依据。

下面结合自己的认识来说下各个环节,有不对的欢迎大家留言指正。

购买渠道

这里说的渠道,可以理解为下单来源即用户从哪挑选商品并下单购买的,先看下下图。
在这里插入图片描述
用户下单的来源可以分为内部(公司开发的相关产品)与外部(与第三方平台的对接)两种。

外部渠道,需要我们与第三方平台进行对接(目前都有第三方开放平台),将生成的订单导入到我们内部平台,然后进行履单。

这里涉及商品对接及库存(此部分是要求实时共享还是划拨渠道库存的方式,需要根据业务要求而确定,系统的实现是不一样的)、单据对接(转单、订单状态的更新等、查询),一般的平台都有开放平台,功能和架构都比较成熟,只要按业务进行调整设计应该就可以。

涉及支付结算、活动优惠的计算等,这些都与财务系统FMS息息相关,但是在产生订单的时候要将关键信息记录完整,要求可追溯而且要不可变(有调整要走逆向流程或系统补偿方案),代收和佣金的结算流程要结合合同与财务流程进行设计。

对于大的电商公司如果有一定的技术积累,外部渠道只是为了扩大影响力,用于引流和增加销售额,真正的收入还应该是内部渠道。

内部渠道,这是公司的主营业务销售渠道,涉及公司一些技术产品开发,而且这些应用产品就是公司的名片。

目前,零售公司都在实行线上+线下的方式,以用户为中心进行社区化的经营,本质上就是为了卖货。线上以APP+小程序为主,网站目前应该以引流和宣传为主了,移动端的产品是核心产品。

线下就是便利店模式,但现在如何经营好门店是众多零售企业在追寻的,线上销售无边界,线下销售有经营半径,所以对于产品的建设也不同。

APP+小程序要求有效的利用移动设备的界面,更注重的产品的展示和整个购物流程的流畅性,但便利店应该以商品货架的规划、用户的亲身体验以及服务为主,服务应该更重要。

聊到这里小结下,渠道就是根据公司的战略来开发公司的技术产品,也是商品在哪个平台上进行销售的渠道。下面正式来说下订单产生时每个环节的一点理解。

商品搜索

用户下单前首先要查询需要的商品,商品有库存并且已经上架销售了,如何在前端APP上让用户快速的查看到是需要详细规划与设计的。

搜索需要用到搜索引擎,要设置关键字,对于商品名称等要进行分词,这部分是要通过搭建搜索平台来实现。

此外,商品展示时有导航,要有分类,要根据不同的楼层展示不同的商品,比如有促销的可以单独做活动页、可以归集在一个楼层里。

搜索具体咋做没接触过,但现在在APP或小程序上我个人感觉都通过分类或导航去找商品的,在淘宝或京东这种品类多的网站还是需要输入关键词查找商品的。所以对于SKU不多企业,搜索可以稍弱化点,更多的采用引导方式去寻找商品(不知道我的这种想法是否正确的,目前我很多时候是闭门造车哈哈)。

选择商品

商品查到了,如何选择商品呢?

这也需要我们的系统提供必要的信息。

  1. 商品详情页,此部分在前面介绍商品系统时说过,首先每个商品要根据上传的图片,商品的模板生成商品详细信息。由于网上购物是看不到实物的,所以只能通过图片或小视频来显示,这是最直接有效的信息传递方式。其次,要有规格参数的描述,如材质、大小等特性要突出;最后就是关于商品的服务条款,如保修、质量及使用说明等。
  2. 用户评论,目前商品的好评率是用户非常关注的,因为零售企业售卖的不仅是商品,更重要的是服务,但服务的好与坏是通过用户来反馈的。评论要从商家服务水平、商品质量、商品使用情况等不同维度进行。用户评论是与客服相关的,所以要有专门的人针对商品评论进行及时回馈与问题的解决,尽可能的真实的显示用户评论,降低差评,给用户真实的信息。
  3. 价格,在商品价税管理中介绍过商品的售价如何制定,依赖于哪些指标,最主要的是毛利率以及竞争对手的价格。低价不一定是好的选择,价格是要与商品品质及服务关联的。价格要醒目的展示给用户,要有对比,让用户感觉到优惠力度,价格的变动有严格的审核流程且要及时生效,避免用户投诉。
  4. 促销活动,没有哪个网站不搞促销的,促销的玩法前段时间整理过一篇,大家可以参照《促销活动一览表》。
    经历了上面的一系列操作,此时就可以加入购物车了。

购物流程

购物流程直接影响用户体验的。

首先,虽然都是选品>加入购物车>提交订单>支付结算,但不同的商品我们应该有所区别,比如秒杀商品就可以直接生成订单,不需要加入购物车。

其次,在购物流程中,我们应该更侧重于营销引导即让用户根据添加到购物车的商品给予相关推荐。因为用户走到这个流程,购买的愿望已经很强了,如果能够给出一些更好的建议或优惠,可以更好促进订单的达成,提高转率。

第三,在购物车中每次的商品的增与减都需要实时的获取商品的价格信息、库存信息以及优惠活动信息。这些金额的计算,促销活动的获取、订单优惠重新计算对系统要求是非常高的,响应慢了用户体验不好,数据获取不准确会造成用户的投诉,都会导致订单的流失。

第四,在系统设计时要考虑系统耦合度及功能的扩展性。如果这部分耦合度太高,会增加后续项目的难度,要合理划分功能。同时要注重时序性;有的服务先调、有的后调这些都要综合考虑。

购物流程组对产品、技术要求都很高,代码的好坏只有自己知道,说与做要做到知行合一,这部分也考验一个人的技术水平和抗压能力。因为与用户有关的功能出现问题要能够及时去解决,并对已有错误数据要快速修复。

一直参与的是后端系统的业务与系统设计,对前端的这部分的流程也在学习和梳理中,但此部分是我觉得最核心的如购物车的数据如何保存,用户的SessionId如何保存,活动如何防止超卖等等。

订单结算

1)结算页

首先是支付方式的选择,支付方式有很多种,目前很少有现金支付了,即便是货到付款也是支付宝、微信或刷卡了。

这里说的支付方式有以下几种:支付宝、微信、银行卡、优惠券、积分、礼品卡或红包等。不同的支付方式需要调用不同的支付接口,这时没有提交订单还没有到支付的环节。

2)优惠的重新计算

这里主要就是进行订单级别的优惠计算,是否有满减等优惠等。此部分也是购物流程的一部分。

3)运费计算

这个需要调用前期商品的运费模板进行计算,是否免邮还要结合会员等级等信息。

4)订单的提交

只有提交了才产生用户订单。对于订单有哪些信息需要记录?

  • 订单的头信息,即订单号等基本信息,用户的基本信息,订单的来源,订单的生成时间,订单级的活动信息记录。
  • 订单的行信息即商品信息,商品的购买数量、商品编码、商品原价、售价、优惠价以及商品级的促销活动信息。

如果是外部渠道的订单,还需要记录外部订单号、合作平台标识等

在此阶段,订单应该处于第一个状态即待支付状态,此时订单虽然创建,但是仍可以取消。

订单创建后就占有商品库存了,此时要给用户支付的时间,这个也要区分场景。普通订单可以30分钟内支付,秒杀订单需要立即支付,限时抢购订单可以设置1分钟或5分钟内支付,否则订单就需要系统自动取消,释放库存。

用户主动取消订单,在”待支付”状态一般没有限制,取消后即可释放库存。

还有一个问题,需要在此说明,即此时的订单保存在哪里?肯定是数据库,要确定的是订单此时保存在前端订单库中,还不需要向后台ERP系统传递,前端主库与后端订单号之间需要有一个拉单服务。

早在十几年前自己负责过这个拉单服务的开发,这么多年好似只是技术的不断升级,业务方式没有太大变化。主要是仍是采用多线程方式及时快速的将前端产生订单拉到后端生产库用以后序的作业。

最后,订单创建完成后,需要用户支付。此时支付多少钱、如何支付、支付需要对接哪些支付平台这个也是需要进行详细设计的。涉及到钱的就没有小事,这点对于我们技术产品尤为重要。

举个例子:

如果我们在做跨境电商,用户用人民币支付,但是支付宝国际需要转化为港币,那么在调用支付宝国际时就需要将汇率记录下来,并进行人民币与港币的转换。如果此部分汇率获取的不对或记录错误,直接影响到交易的金额,对后续的财务结算等都会产生影响。

在支付过程中,由于调用第三方的支付接口,支付成功与否的状态回传可能会有延时,所以此时需要对回传状态要尝试多次,同时我们要将订单进行状态锁定,防止用户重复支付。

如果用户支付成功,那么这时要记录哪些信息呢?

支付流水号、第三方交易号码、支付时间、支付状态、支付金额等,此部分信息第一是为了保证信息的完整性,第二是用于与第三方进行对账即财务系统中的应收对账部分,第三是用于用户的退换货等后续退款等。

此部分信息要在不影响支付流程的效率前提下,尽可能的详细记录,可以采用异步方式进行,但不能少记或不记,在涉及金额的信息我认为数据的冗余是必要的,多比少好。

至此,订单支付成功了,订单的状态应该是“待发货”状态。订单会经过拉单、拆单等操作向下流转,后续会接着总结。

相关文章:

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…...

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 ,您的企业还没使用在线软件工具吗?自从用了在线工具之后,感觉打开了新办公世界的大门,效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说,在线实在是太棒了!今天安利几个非常不错的在线软件工…...

面试(七)为什么一般希望将析构函数定义为虚函数

class B { public:~B() // 基类析构函数不为虚函数{cout << "B::~B()" << endl;} };class D : public B { public:~D(){cout << "D::~D()" << endl;} };void Test(B* t) {delete t;t nullptr; }int main() {B *pb new B;Test…...

MySQL必会四大函数-时间函数

一、时间日期获取函数 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() mysql> select curdate(); 2023-02-09 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() select curtime(); 08:49:27 获取当前时间戳&#xff08;date &…...

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…...

mathtype7与word冲突,无法安装,不显示工具栏的问题解决

首先无法安装&#xff0c;或安装出错时&#xff0c;要清理注册表防止以后再次出现该问题&#xff0c;以此记录留作备份。打开注册表的方法是键盘winr键同时按&#xff08;win就是Alt旁边像窗户图标的键&#xff09;&#xff0c;正常的话会跳出一个叫“运行”的家伙&#xff0c;…...

IBM AIX 升级Openssh 实现篇(编译安装)

升级成功佐证 !!!本文所有内容仅作参考,请在测试环境中具体测试完毕后才能应用于生产环境!!! [1]备份和恢复方案 开启telnet 服务,防止ssh 掉线后无法重连维护。在修复漏洞后关闭telnet。 备份该服务相关的所有文件,以便恢复。 root@TEST:/etc# vi inetd.conf #ftp…...

linux的睡眠框架及实现

睡眠 4 种模式&#xff1a;S2I (Suspend-to-Idle)&#xff1a; 挂起系统&#xff0c;IO进入低功耗模式。需配置CONFIG_SUSPEND。Standby&#xff1a;执行S2I后&#xff0c;把AP (nonboot CPU) 离线。除了CONFIG_SUSPEND的支持外&#xff0c;还需要向suspend子系统注册&#xff…...

Java面试知识点

工作也有好些年了&#xff0c;从刚毕业到前几年看过无数的面试题&#xff0c;总想着自己写一个面试总结&#xff0c;随着自我认识的变化&#xff0c;一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过&#xff0c;但是答案不尽相同&#xff0c;如…...

PTA Advanced 1159 Structure of a Binary Tree C++

目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 思路 代码 题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, a binary tree can be un…...

CDN绕过技术总汇

注 本文首发于合天网安实验室 首发链接&#xff1a;https://mp.weixin.qq.com/s/9oeUpFUZ_0FUu6YAhQGuAg 近日HVV培训以及面试&#xff0c;有人问了CDN该如何绕过找到目标真实IP&#xff0c;这向来是个老生常谈的问题&#xff0c;而且网上大多都有&#xff0c;但是有些不够全面…...

算法训练营DAY51|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

本期是求子序列的新的一期&#xff0c;题目前两道有一些相似之处&#xff0c;思路差不多&#xff0c;第三道有一点难度&#xff0c;但并不意味着第一道没有难度&#xff0c;没有做过该类型题的选手&#xff0c;并不容易解出题解。 300. 最长递增子序列 - 力扣&#xff08;Leet…...

mac:彻底解决-安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件

mac从浏览器或其他电脑接收了应用&#xff0c;但是打开报错 目录报错解决办法一次性方法永久解决方法验证恢复应用验证报错 截图如下&#xff1a; 错误信息 无法打开“XXX”&#xff0c;因为无法验证开发者的问题&#xff1b;无法验证此App不包含恶意软件 解决办法 一次性方…...

CPU 指标 user/idle/system 说明

从图中看出&#xff0c;一共有五个关于CPU的指标。分别如下&#xff1a; User User表示&#xff1a;CPU一共花了多少比例的时间运行在用户态空间或者说是用户进程(running user space processes)。典型的用户态空间程序有&#xff1a;Shells、数据库、web服务器…… Nice N…...

Thinkphp大型进销存ERP源码/ 进销存APP源码/小程序ERP系统/含VUE源码支持二次开发

框架&#xff1a;ThinkPHP5.0.24 uniapp 包含:服务端php全套开源源码&#xff0c;uniapp前端全套开源源码&#xff08;可发布H5/android/iod/微信小程序/抖音小程序/支付宝/百度小程序&#xff09; 注&#xff1a;这个是全开源&#xff0c;随便你怎么开&#xff0c;怎么来&a…...

hgame2023 WebMisc

文章目录Webweek1Classic Childhood GameBecome A MemberGuess Who I AmShow Me Your BeautyWeek2Git Leakagev2boardSearch CommodityDesignerweek3Login To Get My GiftPing To The HostGopher Shopweek4Shared DiaryTell MeMiscweek1Where am I神秘的海报week2Tetris Master…...

67. Python的绝对路径

67. Python的绝对路径 文章目录67. Python的绝对路径1. 准备工作2. 路径3. 绝对路径3.1 概念3.2 查看绝对路径的方法4. 课堂练习5. 用绝对路径读取txt文件6. 加\改写绝对路径6.1 转义字符知识回顾6.2 转义字符改写7. 总结1. 准备工作 对照下图&#xff0c;新建文件夹和txt文件…...

VHDL语言基础-组合逻辑电路-加法器

目录 加法器的设计&#xff1a; 半加器&#xff1a; 全加器&#xff1a; 加法器的模块化&#xff1a; 四位串行进位全加器的设计&#xff1a; 四位并行进位全加器&#xff1a; 串行进位与并行进位加法器性能比较&#xff1a; 8位加法器的实现&#xff1a; 加法器的设计&…...

内存检测工具Dr.Memory在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/51626705 中介绍过Dr.Memory&#xff0c;那时在Windows上还不支持x64&#xff0c;最新的版本对x64已有了支持&#xff0c;这里再总结下。 Dr.Memory源码地址https://github.com/DynamoRIO/drmemory&#xff0c;最新发…...

J6412四网口迷你主机折腾虚拟机教程

今天给大家做一个四网口迷你主机折腾虚拟机的安装教程&#xff0c;主机采用的是maxtang大唐NUC J6412 intel i226V四网口的迷你主机&#xff0c;这款主机它是不能直接装上NAS的&#xff0c;必须使用虚拟机系统&#xff0c;近期研究了下然后做了一个教程分享给大家。 首先需要做…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...