订单 (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
买家可以对订单进行哪些操作?
买家可以付款,取消订单和确认收货。
卖家可以对订单进行哪些操作?
卖家可以修改地址,修改价格和数量,发货和作废订单。
取消订单和作废订单有什么区别?
取消订单是买家操作的,作废订单是卖家或后台操作的,
取消订单只能在付款前操作,作废订单可以在订单交易之前操作。
多卖家下单时是怎样处理的?
多卖家下单时会根据每个卖家分别创建订单和交易,所有交易创建完成后会创建一笔合并交易。
这个插件没有提供卖家发货的管理界面,只能在后台中发货,需要这个功能应该使用关联的其他插件。
合并支付订单是怎么处理的?
如果下单时包含多个卖家的商品,会根据卖家创建多个订单和多个交易,并再创建一笔合并交易。
如果不支付合并交易而是单独打开子交易进行支付,合并交易会自动作废。
会员可以在会员中心手动创建新的合并交易,这时原有的合并交易也会自动作废。
各个操作的条件是什么
- 买家取消订单: 买家付款之前
- 买家付款: 买家付款之前
- 买家确认收货: 卖家全部发货之后,订单交易成功之前
- 卖家修改地址: 卖家全部发货之前
- 卖家修改价格: 买家付款之前,和担保交易开始付款之前
- 卖家发货: 卖家全部发货之前
- 卖家作废订单: 订单交易成功之前
- 卖家代确认收货: 卖家全部发货之后,订单交易成功之前