交易订单与售后 API

本文归纳购物车、个人订单、商户订单、平台订单、第三方商品采购、支付动作、确认收货、退货和售后处理接口。

使用场景

场景 主要接口 说明
购物车管理 /api/v1/personal/shopping/cart 加购、查询当前用户购物车、删除
直接购买 /api/v1/personal/order/demo/api/v1/personal/order/create 从商品详情直接下单
购物车下单 /api/v1/personal/order/cart/demo/api/v1/personal/order/cart/create 从已勾选购物车生成订单
支付 /api/v1/personal/order/{orderId}/payment 支付订单并推进状态
订单查询 /api/v1/personal/order/page/api/v1/personal/order/{orderId} 消费者订单列表和详情
商户处理 /api/v1/merchant/order/api/v1/merchant/return/order 商户查看订单、确认或拒绝退货
平台监管 /api/v1/order/api/v1/order/return-request 平台查询订单和处理售后
第三方商品采购 /api/v1/third-party/platform/order/api/v1/third-party/platform/purchase-order 支付后由平台确认订单,采购人员到第三方平台下单并登记入库物流

标准下单流程

  1. 消费者进入商品详情或购物车。
  2. 选择 SKU、数量和收货地址。
  3. 调用预创建接口,后端返回商品价格、运费、优惠和可下单结果。
  4. 前端展示订单确认页。
  5. 用户确认后调用正式创建接口。
  6. 支付成功后调用支付接口,订单进入待发货。
  7. 商户通过发货单或订单侧能力处理发货。
  8. 消费者查看订单物流,签收后确认完成或申请退货。

第三方商品采购与中央仓入库

本流程适用于消费者在 client-we 购买第三方平台商品的场景。当前不直接调用第三方平台的下单 API,由采购人员在 admin 查看商品、复制中央仓收货信息,手动到第三方平台完成下单和支付。

flowchart TD A["client-we 用户下单并支付"] --> B["第三方订单进入 WAITING_CONFIRM"] B --> C["admin 确认订单并生成待采购单"] C --> D["采购人员选择中央仓并到第三方平台下单"] D --> E["登记平台订单号,采购单进入 ORDERED"] E --> F["平台发货后选择物流公司并登记第三方物流单号"] F --> G["创建采购入库履约单、包裹、内部运单和轨迹"] G --> H["中央仓按现有物流流程收货"] H --> I["采购单进入 DOMESTIC_RECEIVED"] I --> J["admin 创建客户配送履约单"]

操作顺序

阶段 admin 操作 接口 结果
支付后确认 在“第三方订单”中对 WAITING_CONFIRM 订单点击“确认订单”并核对订单;确认时间默认当前时间,备注可按需修改 PUT /api/v1/third-party/platform/order/{orderId}/confirm 按平台和店铺生成 WAITING_PURCHASE 采购单
第三方平台下单 在“采购单”中对 WAITING_PURCHASE 采购单点击“平台下单”,选择中央仓并复制收货信息,在第三方平台完成下单后填写平台订单号;采购金额、采购时间、备注和采购明细可按实际情况补充 GET /api/v1/logistics/warehouse/list?abroad=false&status=ENABLEPUT /api/v1/third-party/platform/purchase-order/{purchaseOrderId}/confirm 页面要求选择中央仓并填写平台订单号,提交后采购单进入 ORDERED
创建采购入库履约 平台发货后,对 ORDERED 采购单点击“入库履约”,再次选择同一中央仓,从启用的物流公司中选择承运方并填写平台物流单号;发货时间和发货人信息可选填 GET /api/v1/system/logistics/company/list?status=ENABLEPUT /api/v1/third-party/platform/purchase-order/{purchaseOrderId}/inbound-delivery 中央仓、物流公司和平台物流单号必填;创建采购入库履约单、包裹、内部运单和轨迹,采购单进入 PLATFORM_SHIPPED
中央仓收货 仓库人员按现有入库流程处理包裹 现有仓入库接口 采购单联动进入 DOMESTIC_RECEIVED
创建客户配送 DOMESTIC_RECEIVED 采购单点击“客户配送”;发件人和发件人电话可选填,不填时使用入库中央仓信息 PUT /api/v1/third-party/platform/purchase-order/{purchaseOrderId}/customer-delivery 创建客户履约单,后续继续走现有配送流程

按钮与权限

状态 可执行操作 接口权限 查询和资源权限
WAITING_CONFIRM 确认订单 admin:third-party:order:confirm admin:third-party:order:query
WAITING_PURCHASE 平台下单 admin:third-party:purchase-order:edit admin:third-party:purchase-order:queryadmin:logistics:warehouse:list
ORDERED 入库履约 admin:third-party:purchase-order:edit admin:third-party:purchase-order:queryadmin:logistics:warehouse:listadmin:system:logistics:company:list
DOMESTIC_RECEIVED 客户配送 admin:third-party:purchase-order:edit admin:third-party:purchase-order:query

页面按钮同时受采购状态和接口权限控制。状态不匹配或账号缺少对应权限时,按钮不会显示。

单号与字段口径

字段 含义 录入时机
platformOrderNo 采购人员在拼多多、1688、淘宝或京东下单后获得的平台订单号 第三方平台下单完成后
inboundWaybillNo 第三方平台或供应商发货后的物流单号 平台发货后
inboundCompanyId 选择物流公司后由页面提交的系统物流公司主数据 ID,不需要手工录入 创建采购入库履约单时
inboundCompany 选择物流公司后由页面自动回填的物流公司名称 创建采购入库履约单时
warehouseId 第三方商品寄送的目标中央仓 ID 平台下单时用于查看收货信息,入库履约时作为正式接口字段提交
waybillNo 采购入库履约创建后由系统生成的内部运单号 系统自动生成,不由采购人员录入

当前边界

  • 平台下单是人工操作。admin 只提供商品链接、中央仓收货信息和采购结果登记,不代替采购人员在第三方平台支付。
  • 平台下单界面选择的中央仓只用于展示和复制收货信息,不随采购确认接口保存。平台发货后,采购人员必须在“入库履约”中再次选择同一中央仓。
  • 中央仓下拉框复用物流仓库列表接口,采购角色除采购单权限外,还需要 admin:logistics:warehouse:list 权限。
  • 物流公司下拉框只查询启用的物流公司,采购角色还需要 admin:system:logistics:company:list 权限。
  • 中央仓收货后会联动采购状态,但客户配送履约单目前仍由工作人员在 admin 手动创建。

后端订单逻辑

订单域以“试算 -> 创建 -> 支付 -> 履约 -> 完成或售后”为主线。试算和正式创建会复用价格、库存、地址和营销校验,但只有正式创建会持久化订单和锁定优惠券。

阶段 后端处理
购物车试算 校验购物车归属、SKU、货架、库存、地址、当前价格和优惠券结构
SKU 直购试算 校验 SKU、SPU、店铺、库存、地址、当前价格和优惠券适用范围
创建订单 保存主订单、子订单、订单项、状态日志,锁定所选优惠券,移除已下单购物车项
支付订单 校验待支付状态,校验锁券有效性,支付成功后标记用券、创建补贴、记录钱包入账
取消订单 待支付订单取消,释放锁定优惠券和预算预占
确认收货 推进订单项完成,触发后续评价和结算条件
申请退货 校验订单项状态、数量、售后窗口和是否已有未完成申请

订单金额计算来源:

金额 来源
商品原价 店铺货架价乘以数量
商品优惠 价格策略或活动价
优惠券优惠 平台券和商户券
运费 国内和国际运费规则
实付金额 商品金额减优惠加运费
商户结算基数 订单项快照,由价格和营销规则决定

关键状态

状态 业务含义 主要操作
待支付 订单已创建但未支付 支付、取消
待发货 支付完成,等待商户履约 商户发货、平台查询
待收货 已进入物流履约 查看物流、确认收货
待评价 订单完成但未评价 创建评价
售后中 用户发起退货或退款 商户确认、平台审核
已完成 交易闭环完成 结算、评价、售后限制

优惠券订单流程

优惠券已经接入订单预览、创建和支付。

步骤 接口 结果
不带券试算 POST /personal/order/cart/demoPOST /personal/order/demo 返回基础金额和按店铺拆单结果
查询可用券 POST /personal/order/cart/available-couponPOST /personal/order/available-coupon 返回当前订单可用平台券和商户券
带券试算 预览接口传 platformCouponWalletItemIdmerchantCouponWalletItems 返回优惠后金额
创建订单 创建接口传同一组卡券字段 保存订单并锁定优惠券
支付订单 POST /personal/order/{orderId}/payment 用券、生成分摊记录和补贴确认
取消或超时 取消接口或定时任务 释放卡券和预算预占

跨店订单中,平台券最多一张,商户券按店铺维度传入,每个店铺最多一张商户券。

端别 接口名称 方法 路径 权限标识 主要用途 主要调用端 后端 Controller
shared 购物车 GET /listGET /pageGET /{cartId}GET /personalPOSTDELETE /api/v1/personal/shopping/cart *:personal:shopping:cart:* 购物车查询、加购和删除 adminclient ShoppingCartController
client 个人订单交易 POST /cart/demoPOST /cart/createPOST /demoPOST /createPOST /{orderId}/paymentPUT /cancelPUT /sub-order/{orderSubItemId}/completedPUT /sub-order/{orderSubItemId}/return /api/v1/personal/order client:personal:order:* 预下单、下单、支付、取消、确认和申请退货 client PersonalOrderTransactionController
client 个人订单查询 GET /countGET /pageGET /page/pending-paymentGET /sub-order/pageGET /sub-order/page/waiting-shipGET /sub-order-item/page/waiting-receiveGET /sub-order-item/page/waiting-commentGET /sub-order-item/page/completedGET /sub-order-item/{orderSubItemId}/shipping-detailGET /{orderId} /api/v1/personal/order client:personal:order:query 订单列表、详情、状态计数和物流详情 client PersonalOrderQueryController
client 个人退货申请 GET /pageGET /{requestId}POSTPUT /{requestId}/cancel /api/v1/personal/return/order client:personal:return:order:* 消费者退货申请和取消 client PersonalReturnOrderController
client 商户订单 GET /pageGET /{orderSubItemId}PUT /sub-order/confirm /api/v1/merchant/order client:merchant:order:* 商户侧订单查询和确认 ops MerchantOrderController
client 商户退货处理 GET /pageGET /{requestId}PUT /{requestId}/confirmPUT /{requestId}/reject /api/v1/merchant/return/order client:merchant:return:order:* 商户确认或拒绝退货 ops MerchantReturnOrderController
admin 平台订单查询 GET /listGET /pageGET /{orderId} /api/v1/order admin:order:* 平台订单列表和详情 admin OrderQueryController
admin 平台订单交易 POST /cart/demoPOST /cart/createPOST /demoPOST /createPOST /{orderId}/paymentPUT /{orderId}/cancelPUT /{orderId}/closePUT /sub-order/{orderSubItemId}/confirmPUT /sub-order/{orderSubItemId}/payment-cancelPUT /sub-order/{orderSubItemId}/confirm-cancelPUT /sub-order/{orderSubItemId}/arrivedPUT /sub-order/{orderSubItemId}/completedPUT /sub-order/{orderSubItemId}/return-completed /api/v1/order admin:order:* 平台代操作订单状态 admin OrderTransactionController
admin 平台退货申请 GET /pageGET /{requestId}PUT /{requestId}/approvePUT /{requestId}/rejectPUT /{requestId}/complete /api/v1/order/return-request admin:order:return-request:* 平台售后审核和完成 admin OrderReturnRequestController
admin 第三方平台订单 GET /listGET /pageGET /{orderId}PUT /{orderId}/confirmPUT /{orderId}/close /api/v1/third-party/platform/order admin:third-party:order:* 查询支付后订单,后台确认并生成待采购单 admin ThirdPartyPlatformOrderController
admin 第三方平台采购单 GET /listGET /pageGET /{purchaseOrderId}PUT /{purchaseOrderId}/confirmPUT /{purchaseOrderId}/abnormalPUT /{purchaseOrderId}/inbound-deliveryPUT /{purchaseOrderId}/customer-delivery /api/v1/third-party/platform/purchase-order admin:third-party:purchase-order:* 登记平台采购、入库物流和客户配送履约 admin ThirdPartyPlatformPurchaseOrderController
admin 采购中央仓选项 GET /list /api/v1/logistics/warehouse admin:logistics:warehouse:list 查询启用的国内仓库和收货信息 admin LogisticsWarehouseController
admin 采购物流公司选项 GET /list /api/v1/system/logistics/company admin:system:logistics:company:list 查询启用的物流公司,供入库履约选择 admin LogisticsCompanyController
admin 账户异常工单 GET /pageGET /{caseId}POSTPUTDELETE /api/v1/account/abnormal-case admin:account:abnormal-case:* 账户异常与业务问题处理 admin AccountAbnormalCaseController
admin 商户退款异常 GET /pageGET /{recordId} /api/v1/merchant/refund-exception admin:merchant:refund-exception:* 商户退款异常查询 admin MerchantRefundExceptionController
client 商户退款异常 GET /pageGET /{recordId} /api/v1/merchant/refund-exception client:merchant:refund-exception:* 商户侧退款异常查询 ops MerchantRefundExceptionController

前端封装

  • admin/src/api/orderApi.ts
  • admin/src/api/thirdPartyPlatformApi.ts 封装第三方订单、采购确认、采购入库和客户配送接口。
  • admin/src/views/third-party/order/index.vue 承载支付后订单确认,admin/src/views/third-party/purchase/index.vue 承载平台下单、物流登记和客户配送。
  • client/api/index.jsshoppingCartpersonalOrdercartOrderorderDemo 分组。
  • app/src/screens/order-*app/src/services/trade-api.ts 当前覆盖订单列表、订单确认和订单成功等基础页面。
  • ops/api/logistics.jsops-app/src/services/api.ts 中商户发货页面会消费发货单和发货明细接口,详见 物流履约.md

维护注意事项

  • 预创建接口只用于展示和校验,不应产生不可回滚的业务副作用。
  • 正式创建、支付、取消、确认收货等动作需要幂等,避免用户重复点击造成重复扣款或重复状态推进。
  • 订单金额字段需要明确原价、优惠、运费、实付和币种。
  • 退货申请需要校验订单状态、商品数量、售后期限和是否已有未完成售后。
  • 商户订单和平台订单的查询范围不同,不能只靠前端隐藏数据,后端必须做数据权限控制。
  • 支付前会重新校验锁定优惠券,失败时订单优惠可能需要重新试算。
  • 退款完成后需要联动优惠券、预算、补贴和商户结算反冲,不能只改变退货申请状态。
  • 第三方平台订单号与物流单号是两个业务字段,不能相互替代。
  • 平台下单阶段的中央仓选择不作为持久化事实来源,创建采购入库履约单前需要采购人员再次核对。

联调验收

场景 验收口径
购物车下单 购物车归属、数量调整、库存、价格和地址都按后端校验
SKU 直购 单商品试算和正式订单金额一致
带券下单 创建订单后卡券锁定,重复下单不能重复使用同一张券
支付成功 订单状态、支付流水、用券记录、预算流水和补贴记录完整
取消订单 待支付订单取消后卡券释放,订单状态不可继续支付
退货申请 已完成或符合售后条件的订单项才能申请退货
商户处理 商户只能查看和处理自己店铺的订单和退货
平台代操作 平台操作需要状态日志和明确业务原因
第三方订单确认 WAITING_CONFIRM 订单确认后生成对应待采购单
第三方平台下单 平台订单号保存后,采购单进入 ORDERED
采购入库履约 重新核对中央仓,从启用列表选择物流公司并提交平台物流单号后生成包裹、运单和轨迹
中央仓收货后 采购单进入 DOMESTIC_RECEIVED,可在 admin 创建客户配送履约单