交易系统开发小结

摘要:
交易系统的目的是确保商品和货币的最终一致性。
 
一、前言
 
阴差阳错干了接近两年交易业务系统的研发,从典型互联网公司来到电商类公司有比较多的不适。首先电商业务更重视稳定性、准确性,对高并发的要求并不是很高,这样从技术选型层面也会求稳,不会选择最新的技术,也不会选择有维护风险的技术。其次交易涉及到资金,交易系统或多或少会产生资损,这就要求代码的测试必须充分,场景尽量考虑周全,所以交易一般选择白盒测试;最后交易系统随着功能、场景覆盖越来越完善,任何大规模的重构由于系统稳定性风险无法给出定量评估及极大的测试回归工作量,使得重构不可能,最好的选择是重写新系统,然后旧系统的流量逐步灰度迁移到新系统。
交易系统的目的是保证的最终一致性。
 
二、交易的生命周期
 
  • 用户角度
 
下单 -> 支付 -> 待收货 -> 确认收货 -> 售后(退/换)
 
  • 技术角度
正向交易:下单 -> 平台担保账户收款 -> 商家发货 -> 用户确认收货 -> 担保账户打款给商家 -> 完结
逆向交易:退货单 -> 买家发货 -> 卖家确认收货 -> 从卖家账户直接扣款给用户(退款不一定是100%返回)
改(换)货单 -> 是否有差价 -> [担保账户收差价] -> 卖家发货 -> 买家确认收货 -> 差价大于0 -> [担保账户打款给卖家] -> 完结
-> 差价小于0 -> [卖家账户扣款至买家]
改退组合
 
  • 合同角度
 
签约 -> 履约 -> 毁约 / 变约
 
 
三、交易的领域视角
 
电商四大系统:商品、下单、正向履约、逆向履约
 
// TODO
 
四、交易开发的技术流程
 
  • 面向交易生命阶段的开发
 
// TODO
 
  • 面向交易状态流转的开发
// TODO
 
五、支付方式
 
先付款后出货
先出货后付款
后付款又可分为买家主动付款和平台代扣(用户在电商平台绑定银卡自动扣款)
 
六、账户方式
 
自有账户:买家自己注册了账户,用自己的账户来下单购物。
代购账户:代购是指把买家A的信息放到具有购买账户的买家B名下,通过买家B的账户来给下单买家进行购物。简单点理解,可以参考海外代购。代购的优点就是方便省事,缺点是退换货周期长,风险是个人信息泄露,容易被倒卖。
 
七、结语
 
任何业务系统都离不开领域建模,把这些领域抽象清楚、边界界定清晰是开发业务系统的关键,领域之间相互交互最终构成一个可以自洽的系统。如何进行好的领域建模,就要求每个开发人员对业务有深入的认识、思考和抽象。
 
 

免责声明:文章转载自《交易系统开发小结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇@Autowired报错原因分析和4种解决方案!win 10 pip Could not find a version that satisfies the requirement selenium (from versions: ) No matching distribution found for selenium下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

SQL Server中执行正则表达式

如果执行上述函数,将报告以下错误:SQL Server阻塞进程'syssp_可以为OACreate的访问执行以下SQL语句:USEmasterGOsp_configure'showadvancedoptions',1;戈尔配置;GOsp_配置'OleAutomationProcedures',1;戈尔配置;GOsp_配置'AdHocDistributedQu...

Jenkins安装

1、 Jenkins简介1.开源自动化持续集成和部署平台CI、持续集成CD和持续部署2.Jenkins Free风格任务管道Maven项目多配置项目多分支管道任务支持的任务类型,不会执行任何更新;触发器(由Gitlab...

arcgispro 计算字段示例

使用两个或四个空格来定义每个逻辑级别。Python计算表达式字段将使用感叹号(。简单计算简单字符串示例一系列Python字符串函数支持使用字符串。字符串字段中的字符可以通过索引和拆分操作访问“”bcd“”Python还支持使用format()方法的字符串格式!)常用Python字符串操作简单数学示例Python提供了处理数字的工具。...

element-ui表格el-table回显时默认全选数据

1、html代码˂el-table-columntype="selection"width="45"...

sqlserver2016安装

2008以前的版本在SQLserver配置管理其中设置。...

Navicat数据存放位置和备份数据库路径设置

navicat数据库存储在哪里?有了这样的问题,让我们来解决这个问题。默认情况下安装Navicat,默认情况下也安装MySQL,数据库存储在默认用户的目录中。选择安装目录时,还可以选择数据的位置。很多人此时只是设置了MySQL的安装位置。...