回首页

最近在做一个外卖平台订单的接入,跳了好多个坑~~这里做个简单的记录,欢迎交流

一 要解决的问题

1 运营问题

门店有三个终端

解决方案:将三端统一为一端

1

2 数据问题

有三份数据

1

二 外卖开放平台调研

饿了么美团分别有对应的开放平台,来为商家提供支持

饿了么

要对外提供服务的可申请平台应用或者企业应用

自有门店或连锁门店可申请个人应用

中间趟了几个大坑,最后申请的是个人应用,接口什么的都一样

美团

在美团外卖开放平台申请注册即可

三 数据对接

外卖平台的商品可填入一个叫sku编码的字段,可在这里做文章,与自有平台的商品一一对应。

1 商品的对接

1

2 订单的对接

1

注意:

三 架构设计

1 外卖平台->自有平台

外卖订单进来后,先进入redis队列,根据算法,可将对应门店的订单,推送到相应的redis队列。多个门店可以使用同一个,或者不同的队列,但要保证,一个门店推送的队列是同一个(防止订单状态流转错误)。

1

2 自有平台->外卖平台

自有平台操作外卖订单比如,退单,退款等

1

对于自有平台->外卖平台也可直接请求外卖平台接口进行操作,这里做成异步,队列消费完成后,再通知前端,操作行为完成。因为运营人员也可直接在外卖平台的后台操作退款退单等,这时就是走外卖平台->自有平台同步订单状态到自有平台的流程,保持外卖操作的一致性。

四 业务设计

对于外卖订单的适配,订单状态的流转是非常重要的。一个是自有平台的订单状态,另外一个是外卖平台一方的订单状态。这里对订单状态的流转做个说明。

1 模型关系

外卖平台适配成自有平台的订单order(数据源从waimai_order中取出,展示给前端),记录外卖的源数据waimai_order中,将orderwaimai_order做个对应。

1

2 订单状态流转

order状态字段

waimai_order状态字段

实际开发时,可参考饿了么推送的订单状态(饿了么推送的订单状态节点,比较清晰) ,将其作为基准美团推送的订单状态转换成和饿了么一样的,记录在 waimai_orderstate

饿了么推送的订单状态预览

1

开发中比较重要的几个订单状态节点,实现下列的订单状态流转,主流程的可正常运行

waimai_order推送状态 对应 order 状态 说明
订单生效(type=10) 未入库 用户支付
商户接单(type=12) 已支付 一分钟后的延迟队列,防止用户一分钟之内取消的订单入库
订单被取消(type=14) 不会入库 用户一分钟之内取消的订单不入库
订单置为无效(type=15) 不会入库 用户一分钟之内取消的订单不入库
订单强制无效(type=17) 退款成功 商家取消订单
订单已完成(type=18) 订单完成 部分退款(美团专有) 美团用户确认送达之前申请过部分退款,订单状态为部分退款
用户申请取消(type=20) 退款中 用户点击确认送达之前,申请取消订单,饿了么全取消,美团可申请部分取消,记录退款中之前的状态至waimai_orderorder_state
用户撤回取消(type=21) 已支付已接单制作中制作完成配送中 waimai_orderorder_state中 恢复订单状态
门店拒绝取消(type=22) 已支付已接单制作中制作完成配送中 waimai_orderorder_state中 恢复订单状态
门店同意取消(type=23) 已支付(美团专有)已接单(美团专有)制作中(美团专有)制作完成(美团专有)配送中(美团专有)退款成功 美团部分取消的情况下,从waimai_orderorder_state中恢复订单状态,否则订单状态为退款成功
用户申请退单(type=30) 退款中 用户点击确认送达之后,饿了么可申请一次退款,美团可申请两次退款
用户取消退单(type=31) 订单完成 部分退款(美团专有) 对于美团的第二次申请退款,然后取消退单的时候,订单状态为部分退款
门店拒绝退单(type=32) 订单完成 部分退款(美团专有) 对于美团用户申请过一次部分退款,订单状态为部分退款
门店同意退单(type=33) 退款成功 部分退款 饿了么退一次,要么是 退款成功 ,要么是部分退款。美团可以申请两次第一次部分退款,第二次退款成功
配送员待取餐(type=53) 制作完成 order中的rider_state会同步配送的实时状态,可根据此联合判断
配送员已到店(type=54) 制作完成 order中的rider_state会同步配送的实时状态,可根据此联合判断
配送员配送中(type=55) 配送中 order中的rider_state会同步配送的实时状态,可根据此联合判断
配送成功(type=56) 配送中 order中的rider_state会同步配送的实时状态,可根据此联合判断

五 风险点