电商-订单解析(12)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44050355/article/details/100530514

订单:
需要搭建一个订单模块,gmall-order-web
修改配置文件。。
导入静态资源。。

	计算商品总价,给用户进行支付:对接支付宝
	验证库存!对接库存系统
	
	显示订单页面:
	1.	收货人信息 √
	2.	支付方式 {在线支付 【支付宝,微信,银联】,货到付款,分期付款,白条。。。}  √
	3.	送货清单
		在购物车中选中哪些商品,则在送货清单中就显示哪些商品!
		对于数据库来讲:
		订单表:orderInfo
		订单明细表:orderDetail 
		
		功能开发:
		bean ,mapper,service,service.impl ,controller
		
下订单:
	http://order.gmall.com/submitOrder
	1.	发现页面提交的数据并不完美!
		缺少订单明细详情
	2.	数据从页面提交到后台
		
	3.	搭建后台项目gmall-order-service
		bean ,mapper,service,service.impl ,controller
		
	4.  测试:
		
	5.	防止用户在回退无刷新的情况下表单重复提交
		5.1	可以通过页面设置!
		5.2	需要在表单生成的时候,生成一个流水号。【http://order.gmall.com/trade】放到页面的隐藏域中! 还需要放入redis 中!
		5.3	用户在点击提交之后,后台通过页面的流水号,与redis 中的流水号。做一个比较,如果true ,则正常提交,否则提交失败!
		5.4	比较完成之后,都需要将redis 中的流水号删除!
		
	6.	下订单的时候,需要验证库存是否有余!
		
	7.	下订单的时候,需要做一个验证价格是否正确!

在这里插入图片描述订单业务在整个电商平台中处于核心位置,也是比较复杂的一块业务。是把“物”变为“钱”的一个中转站。
整个订单模块一共分四部分组成:

  1. 结算
  2. 下单
  3. 对接支付服务
  4. 对接库存管理系统

二、 结算页
入口:购物车点击计算按钮 ,结算必须要登录!在这里插入图片描述
在这里插入图片描述分析
分析页面需要的数据:
1、 得到用户信息
2、 购物车中选择的商品列表

3 购物车中选择的商品列表
结算的时候,需要将信息添加到OrderDetail 表中!

3.1 订单的数据结构:
orderInfo :订单表
orderDetail :订单明细
在这里插入图片描述在这里插入图片描述在这里插入图片描述增加枚举类
枚举类路径放到gmall-bean 模块中和bean同级目录。

在bean下建立order_detail
其中hasStock是一个非持久化属性,用户传递【是否还有库存】的标志。
如果商品在库存中有足够数据,suceess = “1”,fail=“0”

三、下订单
1 数据结构

分析下单:

  1. 保存单据前要做交易:验库存
  2. 保存单据: orderInfo orderDetail。
  3. 保存以后把购物车中的商品删除
  4. 重定向到支付页面。

在这里插入图片描述

返回orderId,保存完,应该调到支付,根据orderId。
// 设置创建时间
// 设置失效时间
// 生成第三方支付编号
// 插入订单详细信息
// 为了跳转到支付页面使用。支付会根据订单id进行支付。

如何解决用户利用浏览器回退重复提交订单?
在进入结算页面时,生成一个结算流水号,然后保存到结算页面的隐藏元素中,每次用户提交都检查该流水号与页面提交的是否相符,订单保存以后把后台的流水号删除掉。那么第二次用户用同一个页面提交的话流水号就会匹配失败,无法重复保存订单。
4.1 修改结算页增加流水号的生成。
// 生成流水号
// 验证流水号
// 删除流水号

验库存
通过restful接口查询商品是否有库存
一般电商系统的商品库存,都不由电商系统本身来管理,由另外一套仓库管理系统,或者进销存系统来管理,电商系统通过第三方接口调用该系统。
由于库管系统可能是异构的系统,所以不在dubbo的分布式体系之内。只支持restful风格的webservice调用和消息队列的调用。
详见《库存管理系统手册》
根据手册中的接口文档,编写调用代码。
在这里插入图片描述
5.2 查询仓库数量,进行校验
现在验证库存数量方法
在这里插入图片描述

在这里插入图片描述
分析 :
1、通过orderId取得订单信息
2、组合对应的支付信息保存到数据库。
3、组合需要传给支付宝的参数。
4、根据返回的表单生成html,传给浏览器。

// 获取订单Id
// 取得订单信息
// 保存支付信息
// 保存信息
问题:1 密钥如何得来,为什么有两个
利用工具生成 保存本地私钥 和支付宝公钥 把本地公钥上传给支付宝
2、url为什么有的用域名,有的用ip地址。
有域名的是本地返回地址!
Ip地址是发给阿里云的地址!公网上的!

猜你喜欢

转载自blog.csdn.net/weixin_44050355/article/details/100530514
今日推荐