Java生鲜电商平台-电商支付流程架构实战

Java生鲜电商平台-电商支付流程架构实战

 

说明:我一直秉承的就是接地气的业务架构实战。我的文章都有一个这样的核心。

1. 业务场景

2. 解决问题。

3.代码实现。

4.代码重构。

5.总结与复盘。

6.缺点与防范

 

一、场景描述

想必大家都曾遇到过这个问题,在电商购物的过程中,已经走到了最后一步:去支付。这个时候突然意识到商品数量不对,或者收货信息选错。

除此之外,用户还存在之下返回的原因:

误点击,也就是说用户还是想买的;

犹豫中点了返回,想买的欲望不是十分坚决;

坚决不买了。

二、可选方案

(1)目前几乎所有主流电商平台,在支付页面点击返回跳转到订单的待支付页面。

 

 

(2)有一部分微商城,依然原路径返回,不过依然生成了待支付订单。

 

(3)原路返回,也不生成待支付订单,不过作者目前并没有找到此类型的案例。

 

三、为什么要有「待付款」状态

1. 库存计算

在电商系统中,前端页面显示的库存与仓库的实体库存是不同步的,因而在商品出仓前要求前端的库存进行「锁定」即前端的减库存。

关于库存的锁定,电商领域存在有两种方案:

一种是拍下减库存即生成订单(待付款)减库存,故此方案绕不过「待支付」;

一种是支付成功减库存。

拍下减库存存在的问题:

用户可能拍下不买,不乏存在有用户把拍下当收藏夹用,以致占用库存,影响平台的交易量。甚至存在更为极端的「恶拍」漏洞,竞争对手会把商品所有库存全都拍掉,也不付钱,平台的商品就全部被下架了。

支付成功减库存存在的问题:

支付成功减库存会碰到最严重的问题,是「超卖」。因为系统在付款成功之前,都不减库存,所以总是会发生“短时间很多人都拍下,甚至都付钱了,但是系统却发现库存不够了”。

买家拍下商品后,从提交付款到付款成功的之间是有时间差的,因为付款的动作是在几个不同的系统之间传信息。因此最后一件商品可能被多人拍下,这几个人都可能付款成功。

淘宝的做法是把何时减库存的决定权交给卖家,然后告知卖家两个方案各自适应的场景。

2. 提高转化

电商是通过交易驱动的产品类型,因此订单的每一步都要考虑转化率,提高转化率是电商的基础要求。

用户在电商下单,大多都是会进行一番思考的,毕竟支付宝里的钱也不是河水流过来的。用户在支付前总会有种种原因搁置付款,一般待支付订单的有效时间为24小时以内,在这段有效时间内平台就像一名促销员一样,告知你有未付款的订单。

四、确定解决方案

结果是几乎所有的电商都采用了从支付页面返回跳转至待支付的方案。

从用户角度来考量:退回去修改信息(收货信息、商品信息)一定是用户真实存在的诉求。

在商家的角度:提高订单的成交率,是第一要务。这个时候最好的办法就是利用数据工具,做埋点和统计,根据各种情况出现的概率做出相应的决策。

 

 五:代码方面

       QQ群

转载于:https://www.cnblogs.com/jurendage/p/11291367.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3.0 AntDesignVue2.0 table的rowkey报错问题解决方法

Warning: [antdv: Each record in table should have a unique key prop,or set rowKey to an unique primary key.] Warning: [antdv: Table] Each record in dataSource of table should have a unique key prop, or set rowKey of Table to an unique primary key 提示因为…

模式识别扫盲

模式识别是对表征事物或现象的各种形式的信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。英文“Pattern”源于法文“Patron”,本来是指可作为大家典范的理想的人,或用以…

vue2项目使用codemirror插件实现代码编辑器功能

1、使用npm安装依赖 npm install --save codemirror 2、在页面中放入如下代码 <template><textarea ref"mycode" class"codesql" v-model"code" style"height:200px;width:600px;"></textarea> </template>…

CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境

安装篇&#xff1a; 一、安装Apache yum install httpd #根据提示&#xff0c;输入Y安装即可成功安装 /etc/init.d/httpd start#启动Apache 备注&#xff1a;Apache启动之后会提示错误&#xff1a; 正在启动 httpd:httpd: Could not reliably determine the servers fully qual…

前端有用的库

HTML awesome-html5 精选的HTML5资源精选清单 CSS tailwindcss 与Tailwind CSS相关的很棒的事情awesome-css-frameworks 很棒的CSS框架列表awesome-css-cn CSS 资源大全中文版&#xff0c;内容包括&#xff1a;CSS预处理器、框架、CSS结构、代码风格指南、命名习惯等等awesom…

计算机视觉牛人(转载)(最早在自动化所论坛上发现的)

paper毕竟是死的, 写paper的人才是活的. 那么我现在研究一下cv圈的格局, 按师承关系, 借鉴前人, 我总结a tree stucture of cv guys.David Marr----->Shimon Ullman (Weizmann) ----->Eric Grimson (MIT)----->Daniel Huttenlocher (Cornell)----->Pedro Felzenszw…

Java生鲜电商平台-促销系统的架构设计与源码解析

Java生鲜电商平台-促销系统的架构设计与源码解析 说明&#xff1a;本文重点讲解现在流行的促销方案以及源码解析,让大家对促销&#xff0c;纳新有一个深入的了解与学习过程. 促销系统是电商系统另外一个比较大&#xff0c;也是比较复杂的系统&#xff0c;作为一个卖货的&#x…

vue3中websocket用法

1.0 认识 websocket #1.0.1 什么是 websocket 和 http 协议类似&#xff0c;websocket 也是是一个网络通信协议&#xff0c;是用来满足前后端数据通信的。 #1.0.2 websocket 相比于 HTTP 的优势 HTTP 协议&#xff1a;客户端与服务器建立通信连接之后&#xff0c;服务器端只…

介绍几个医学图像处理会议

Information Processing in Medical Imaging &#xff0c; IPMI &#xff0c;医学图像处理最顶级的会议&#xff0c;两年召开一次&#xff0c;全球大概入选 50 篇左右&#xff0c;一个非常小圈子的会&#xff0c;据说通常是关在一个偏僻的地方开一周&#xff0c;会议口头报告提…

python翻译

translator.py # -*- coding: utf-8 -*- # author: inspurer(月小水长) # pc_type lenovo # create_time: 2019/4/6 15:44 # file_name: translator.py # github https://github.com/inspurer # qq邮箱 2391527690qq.co…

promise并发

一、Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例。同时&#xff0c;成功和失败的返回值是不同的&#xff0c;成功的时候返回的是一个结果数组&#xff0c;而失败的时候则返回最先被reject失败状态的值。 let p1 new Promise((resolve, rej…

计算机视觉方面的三大国际会议是ICCV, CVPR和ECCV

ICCV的全称是International Comference on Computer Vision&#xff0c;正如很多和他一样的名字的会议一行&#xff0c;这样最朴实的名字的会议&#xff0c;通常也是这方面最nb的会议。ICCV两年一次&#xff0c;与ECCV正好错开&#xff0c;是公认的三个会议中级别最高的。它的举…

Scanner类+Random

引用数据类型的使用 数据类型 变量名 new 数据类型(); 变量名.方法名(); import java.util.Scanner; publicclass ScannerDemo01 { publicstaticvoid main(String[] args) { //创建Scanner引用类型的变量 Scanner sc new Scanner(System.in); //获取数字 System.out.print…

手写vue2的Lazyload

调用方式&#xff0c;express写个后台服务调图片&#xff0c;具体使用不贴了 import VueLazyload from "./modules/vue-lazyload";Vue.use(VueLazyload,{loading: http://localhost:3000/images/loading.gif,error: http://localhost:3000/images/error.jpg,preload…

nature,science上关于计算机视觉的一些原创文献

真正原始创新是怎么样的&#xff1f;希望这些列表对做视觉研究的朋友有些启发&#xff0c;希望大家能帮我补充一些&#xff0c;谢谢。转载请注明http://hi.baidu.com/daren007或者http://www.sciencenet.cn/blog/王中任.htm。1、D. Marr; T. Poggio.Cooperative Computation of…

webpack入门进阶调优第一章

1.1何为Webpack webpack是开源的JS模块打包工具 核心功能是解决模块之间的依赖&#xff0c;吧哥哥模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件。这个过程叫模块打包 1.2为何需要Webpack 1.2.1何为模块 在设计程序结构时&#xff0c;更好的组织方…

python类的空间问题及类之间的关系

类的空间问题及类之间的关系 类的空间问题 1.何处可以添加对象属性 class A:def __init__(self,name):self.name namedef func(self,sex):self.sex sexobj A("alex") obj.age 18 # 通过__init__方法添加 print(obj.__dict__) obj1 A("wusir") obj.fun…

计算机视觉应关注的资源

来自美国帝腾大学的链接。 Camera Calibration Links to toolboxes (mostly MATLAB) for camera calibration. Paul Debevec. Modeling and Rendering Architecture from Photographs. Marc Pollefeys, Tutorial on 3D Modeling from Images,, ECCV 2000, Available here: not…

Angular 内容投影 II

内容投影是一种模式,你可以在其中插入或投影要在另一个组件中使用的内容。 简单来说,angular的内容投影就相当于vue的内容插槽slot。所有一下就能懂了。 1、单插槽内容投影 单插槽内容投影是指创建一个组件,你可以在其中投影一个组件。如果只有一个ng-content,不需要sel…

麻省理工学生发明 震惊世界

核心提示&#xff1a;在普拉纳夫看来&#xff0c;数字信息以像素的形式被限制在显示屏幕之中。他发明的"第六感装置"震惊全场&#xff0c;让世界为之惊叹。 MIT(麻省理工)印度裔学生Prarnav Mistry的天才发明:“第六感装置” 视频地址&#xff1a;http://v.youku.com…