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

一 要解决的问题

1 运营问题

门店有三个终端

自有开发的收银系统

饿了么收银系统

美团收银系统

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

2 数据问题

有三份数据

1 自有平台的订单数据(买了什么,消耗多少物料等)

2 饿了么订单数据(买了什么,消耗多少物料等)

3 美团订单数据(买了什么,消耗多少物料等)

解决方案:将美团饿了么订单数据接入自有平台

二 外卖开放平台调研

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

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

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

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

饿了么入口 : open.shop.ele.me/openapi 登录弹窗下方有一个切换” 商家账号登录 “

三 数据对接

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

1 商品的对接

2 订单的对接

注意:

外卖平台的商品数据结构录入时,要有选择的有倾向的将结构保持为可与自有平台商品结构对应起来,规则定下来后,不可改变

外卖适配成自有订单后,在前台显示用户所购商品,要和外卖平台的所购商品显示一致

三 架构设计

1 外卖平台->自有平台

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

2 自有平台->外卖平台

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

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

四 业务设计

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

1 模型关系

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

2 订单状态流转

order状态字段

state表示订单状态 已支付,已接单,制作中,制作完成,配送中,订单完成,退款中,退款完成,部分退款 ,订单取消等

waimai_order状态字段

state 表示外卖推送的订单状态,可参考饿了么推送的订单状态

order_state 记录 order 退款中之前的订单状态,在运营人员发生操作行为后,恢复order状态至该状态(比如,自有平台的订单状态为制作中,此时用户申请退单order state流转为退款中,商家拒绝退款,恢复order state 状态为制作中。

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

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

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

waimai_order推送状态

对应 order 状态

说明

订单生效(type=10)

未入库

用户支付

商户接单(type=12)

已支付

一分钟后的延迟队列,防止用户一分钟之内取消的订单入库

订单被取消(type=14)

不会入库

用户一分钟之内取消的订单不入库

订单置为无效(type=15)

不会入库

用户一分钟之内取消的订单不入库

订单强制无效(type=17)

退款成功

商家取消订单

订单已完成(type=18)

订单完成 部分退款(美团专有)

美团用户确认送达之前申请过部分退款,订单状态为部分退款

用户申请取消(type=20)

退款中

用户点击确认送达之前,申请取消订单,饿了么全取消,美团可申请部分取消,记录退款中之前的状态至waimai_order的order_state中

用户撤回取消(type=21)

已支付,已接单,制作中,制作完成,配送中

从waimai_order的order_state中 恢复订单状态

门店拒绝取消(type=22)

已支付,已接单,制作中,制作完成,配送中

从waimai_order的order_state中 恢复订单状态

门店同意取消(type=23)

已支付(美团专有),已接单(美团专有),制作中(美团专有),制作完成(美团专有),配送中(美团专有),退款成功

美团部分取消的情况下,从waimai_order的order_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会同步配送的实时状态,可根据此联合判断

五 风险点

必须保证外卖平台商品通过sku编码对应自有平台商品(如果不需要商品的对应,此条可忽略,实现的时候,去除改规则,但自己研发系统很可能不仅仅是为了订单的同步,商品的同步很可能也在考虑之中),增加了运营的人为风险(可通过商家上架操作流程化降低风险)。

系统崩溃外卖接单风险(可通过多终端备用降低风险)。

六 需注意的问题

1、美团确认送达之前用户操作申请退款后,在等待商家处理结果时,用户还可以操作确认送达按钮。此时自有平台的订单状态还应为退款中,拒绝之后,订单状态流转为订单完成(或部分退款用户之前申请过一次退款),同意之后,订单状态流转为退款成功(或部分退款用户之前申请过一次退款)。

2、上面的退款成功可能会有疑惑,为什么用户取消订单,同意后,也是退款成功,不应该是取消订单吗。这需要,根据自有的业务进行定义,用户支付完成后,进行的订单取消或退款,统一定义为退款成功

3、对于优惠的计算,饿了么,可对比 shopPrice和 price的不同,是否参加优惠,userPrice是用户看到的价格,shopPrice是该商品商家实际收入(具体多看看文档,其他人遇到的价格问题)。美团就比较坑了。。。它只有一个字段price,订阅前后表示的不一样,不订阅表示折扣价格,订阅表示原价,为什么不两个一起返回来呢?。

本作品采用《CC 协议》,转载必须注明作者和本文链接

NOT IS BECAUSE I WANT TO WRITE,

BUT I WANT TO INCREASE,

SO I GO TO WRITE~~

饿了么api接口 php,饿了么美团开放平台接入相关推荐

  1. 饿了么开放平台接入(2)——使用Java对接店铺

    点此查看全部文字教程.视频教程.源代码 本文目录 1. 概述 2. 下载SDK 3. 新建Java Web工程 4. 新建常量类,保存饿了么沙箱环境参数 5. 店铺授权URL 6. 编写Servlet ...

  2. 开放java平台允许访问_饿了么开放平台接入(2)——使用Java对接店铺

    概述 上回讲到在饿了么开放平台注册了账户,并申请资质认证,然后还创建了应用,对开放平台.资质认证.应用不了解的同学还是先去看下上一篇文章吧. 时间拍马而过,10几天过去了,上次申请的资质认证早已通过( ...

  3. 饿了么开放平台接入(1)——开放平台注册与使用

    点此查看全部文字教程.视频教程.源代码 本文目录 0. 序言 1. 背景 2. 注册账户 3. 资质认证 4. 创建应用 4.1 应用的概念 4.2 应用种类 4.3 应用的具体信息 5. 应用的测试 ...

  4. 淘宝api接口是什么意思(电商平台api接口对接方法)

    淘宝店铺商品接口用于查询店铺的所有商品,通常用于深度展示店铺. 一.淘宝店铺商品查询接口 点击获取 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_ ...

  5. 关于淘宝API的详细说明(淘宝开放平台API揭秘)

    自淘宝开放平台Beta公测开始,陆续开放了上百次个API,这些API涵盖了淘宝基本业务,截止发日志当天开放平台API每天的调用量可是说是天文数字. 作为TOP开发者的您对 于淘宝平台-API可以信手拿 ...

  6. 阿里开放平台接入——开放平台注册与API调用

    文章目录 1.背景 2.注册账户 3.获取key 4.能力列表 5.开发文档 6.获取SDK 7.注意事项 8.实在搞不定了点我 1.背景 目前对于大部分使用开放平台提供的技术开发应用的开发者而言,开 ...

  7. API 接口监控产品全新改版,免费开放全部功能

    作为 EOLINKER 研发管理体系的重要一环,EOLINKER 接口监控即 AMT 产品将在 3月4日 迎来全新变化,AMT 产品将正式命名为 EOLINKER-API Beacon --API-烽 ...

  8. jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)

    JeeWx-api 1.0.5 版本发布,微信SDK接口封装 1.jeewx-api为何诞生 现在微信越来越火,基于微信的公众号和服务号越来越丰富,虽然微信帮助文档已经提供了相关的接口,但是接口比较多 ...

  9. java 微信报关_微信开放平台,_请求微信报关接口返回的数据,微信开放平台 - phpStudy...

    请求微信报关接口返回的数据 请求微信报关 接口错误 552E051CB6F4DBC6029B8218DBD5A52A gh_4dbf09a0a18e 1342661701 20160825113538 ...

  10. python调用接口限流_淘宝开放平台

    TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); TbkDgVegasTljCreateRequest req = ...

最新文章

  1. 使用HttpOnly提升Cookie安全性
  2. Arch Linux PDF格式文件无法显示中文
  3. 实战应对三种因素引起的交换故障
  4. hyperledger-simple-app
  5. windbg 符号表
  6. SAP屏幕设计器专题:编写控件代码(三)
  7. cut命令详解(转)
  8. 微软中文网,越办越好了!
  9. WPF整理-使用ResourceDictionary管理Logical Resources
  10. Druid 在有赞的使用场景及应用实践
  11. 连接服务器的外呼系统设置,MicroSIP软电话配置说明
  12. 国内较高水平的计算电磁学方面的高校和教授们
  13. java apktool if_apktool反编译详细使用教程
  14. jsp教师信息管理系统
  15. [Linux 文件权限] 持续更新Linux文件权限命令
  16. 2022/7/14小记
  17. CSS—— grid 网格布局
  18. ps还原上一步快捷键_ps还原上一步快捷键_photoshop恢复上一步操作的快捷键是什么...
  19. 【MATLAB教程案例3】QPSK解调过程的MATLAB开发
  20. 学习1368个单词 - 有关物和人的名词

热门文章

  1. 土方测量-挖方填方量的计算思路
  2. Postgresql Bloom索引
  3. Android~adb卸载系统预装应用(亲测有效,android开发框架介绍
  4. 网上赚钱的方法门路有哪些?盘点网上赚钱最可靠的10种方法!
  5. 用java计算_用Java写的计算器
  6. python中怎么调用函数_python怎样调用函数
  7. 服务器版“永恒之蓝”高危预警 (Samba远程命令执行漏洞CVE-2017-7494) 攻击演示...
  8. Eureka微服务之服务核心动作
  9. 文献分享:定义的肿瘤抗原特异性T细胞增强了个性化的TCR-T细胞治疗和免疫治疗反应的预测
  10. Flink的State与Rescale