订单 (Shopping.Order)
订单插件提供了购买商品相关功能,包括
- 购物车
 - 订单支付
 - 订单管理
 - 发货管理
 - 收货地址管理
 
购物车的数据结构
购物车商品可以关联用户,也可以关联会话,如果开启了非会员下单,则不需要登陆也可以添加商品到购物车。

订单的数据结构
一个订单对应多个订单商品,订单商品保存了下单时的商品价格等信息。
订单可以关联买家和卖家,但不能关联多个卖家,如果购物车中有多个卖家的商品时会分别下单。

发货单的数据结构
一个订单可以分多次发货,发货单关联了订单商品和发货数量。
如果发货商品中包含了实体商品,应该选择物流和填写物流编号。
订单和发货单会把用户填写的收货地址复制一份保存在内部,不会关联收货地址表中的数据。

购物车页面

前台订单页面

后台订单页面

订单数据的详细解释
每个订单都会分一个买家订单和卖家订单,买家订单属于买家,卖家订单属于卖家。
订单的数据主要在卖家订单中,交易关联的也是卖家订单。
- BuyerOrder 买家订单
- SellerOrder 对应的卖家订单
 - BuyerSessionId 买家的会话Id,仅用于非会员下单
 - Owner 买家用户,没有时等于null
 - CreateTime 创建时间
 - UpdateTime 更新时间
 - Deleted 是否已删除
 - Remark 买家备注
 
 - SellerOrder 卖家订单
- Serial 订单编号,唯一键
 - Buyer 买家用户,没有时等于null
 - Owner 卖家用户,没有时等于null
 - State 订单状态,一个枚举值
 - OrderParameters 订单参数,类型是Dictionary
- ShippingAddress 收货地址,格式是{ Country: 国家Id, RegionId: 地区Id, ... }
 - SellerToLogistics 卖家分别选择的物流,格式是{ SellerId: LogisticsId, ... }
 - PaymentApiId 支付接口Id
 - CartProducts 商品列表,格式是{ 购物车商品Id: 数量, ... }
 - 支持更多的参数
 
 - TotalCost 当前的订单总金额
 - Currency 货币单位
 - TotalCostCalcResult 当前的订单总金额的计算结果,类型是OrderPriceCalcResult
 - OriginalTotalCostCalcResult 原始的订单总金额的计算结果,类型同上,创建订单时的价格
 - CreateTime 创建时间
 - UpdateTime 更新时间
 - StateTimes 各个状态的切换时间
 - Deleted 是否已删除
 - Remark 卖家备注
 - OrderProducts 订单商品的集合,一对多
- Product 对应的商品,多对一
 - MatchParameters 商品匹配参数,包含规格等信息
 - Count 购买数量
 - UnitPrice 单价
 - Currency 单价的货币
 - UnitPriceCalcResult 单价的计算结果,类型是OrderPriceCalcResult
 - OriginalUnitPriceCalcResult 原始单价的计算结果,类型同上,创建订单时的价格
 - CreateTime 创建时间
 - LastUpdated 更新时间
 - PropertyValues 关联的属性值集合,多对多,类型是OrderProductToPropertyValue
 
 - OrderComments 订单留言的集合,一对多
- Creator 留言人
 - Side 买家或卖家留言,枚举类型
 - Content 留言内容
 - CreateTime 创建时间
 
 
 - OrderDelivery 发货单
- Serial 发货单编号,唯一键
 - Order 属于的订单,多对一
 - Logistics 物流,多对一
 - LogisticsSerial 物流给出的发货编号(快递单编号),虚拟发货时不需要
 - Operator 发货人
 - CreateTime 创建时间
 - LastUpdated 更新时间
 - Remark 备注
 - OrderProducts 包含的商品集合,一对多,类型是ISet
- OrderProduct 订单商品,多对一
 - Count 发货件数
 
 
 
完整的订单流程
- 买家添加商品到购物车
 - 买家跳转到购物车页面
 - 买家提交订单
- 提交商品和数量,收货地址,物流和支付接口等信息
 - 如果提交了包含多个卖家的商品,应该每个卖家创建一个单独的订单
 - 运费每个卖家分别计算
 
 - 买家跳转到结算页面
- 结算页面会显示金额和跳转到支付平台的按钮
 
 - 卖家有需要时可以修改收货地址或金额
 - 买家跳转到支付平台
 - 买家在支付平台上完成付款
- 即时到账或担保交易
 
 - 卖家在后台进行发货操作
- 可以分几次发货完毕
 
 - 买家确认收货,确认后订单交易完成
- 可以在会员中心确认收货
 - 也可以在支付平台上确认收货
 
 
FAQ
买家可以对订单进行哪些操作?
买家可以付款,取消订单和确认收货。
卖家可以对订单进行哪些操作?
卖家可以修改地址,修改价格和数量,发货和作废订单。
取消订单和作废订单有什么区别?
取消订单是买家操作的,作废订单是卖家或后台操作的,
取消订单只能在付款前操作,作废订单可以在订单交易之前操作。
多卖家下单时是怎样处理的?
多卖家下单时会根据每个卖家分别创建订单和交易,所有交易创建完成后会创建一笔合并交易。
这个插件没有提供卖家发货的管理界面,只能在后台中发货,需要这个功能应该使用关联的其他插件。
合并支付订单是怎么处理的?
如果下单时包含多个卖家的商品,会根据卖家创建多个订单和多个交易,并再创建一笔合并交易。
如果不支付合并交易而是单独打开子交易进行支付,合并交易会自动作废。
会员可以在会员中心手动创建新的合并交易,这时原有的合并交易也会自动作废。
各个操作的条件是什么
- 买家取消订单: 买家付款之前
 - 买家付款: 买家付款之前
 - 买家确认收货: 卖家全部发货之后,订单交易成功之前
 - 卖家修改地址: 卖家全部发货之前
 - 卖家修改价格: 买家付款之前,和担保交易开始付款之前
 - 卖家发货: 卖家全部发货之前
 - 卖家作废订单: 订单交易成功之前
 - 卖家代确认收货: 卖家全部发货之后,订单交易成功之前