快速入门

饿了么OpenAPI是饿了么提供给广大商户和第三方平台的一种技术接入方式。

使用OpenAPI可以实现统一的餐厅和菜单管理、订单生成和查询等操作。

如有任何对接疑问,请发邮件至 openapi@ele.me

注解

此版本为初稿,仅供参考。不做任何保证。

应以正式对接开始后的版本为准。

系统级输入参数

API参数共由两部分组成, 系统级参数指所有由 饿了么 提供的API所必须的参数, 应用级参数是指对应API所需的参数。 在没有特别说明的一般情况下, 系统级参数是调用API时所必须传递的参数。

参数名 类型 描述
timestamp long 进行接口调用时的时间戳,即当前时间戳 (时间戳:当前距离Epoch(1970年1月1日) 以秒计算的时间,即unix-timestamp)
consumer_key string eleme分配给APP的consumer_key
sig string 输入参数计算后的签名结果

注解

不论接口是GET、POST还是PUT等HTTP方法,系统级参数都是以URL参数(即Query String)的方式传递的

请求流程

针对每个接口的请求流程如下:

  1. 根据功能需求确认接口
  2. 确认请求参数
  3. 计算签名
  4. 拼接请求地址
  5. 针对不同接口,指定 content_type 和请求方法(GET/POST/PUT/DELETE)

注解

关于 POST / PUT 请求头中 contennt_type 的说明:

  • 除特别声明需要指定的请求头之外,其他接口都默认使用 application/x-www-form-urlencoded

签名计算

签名计算规则

  1. 对参数进行排序得到 字符串A

将所有参数(sig除外)按照参数名的字母顺序排序,并用 & 连接:

consumer_key=7284397484&timestamp=1374908054

注解

计算 sig 时需要注意的以下几点:

  • 除特别声明不需要计算的参数(如图片接口的图片内容参数 file)之外,其他参数都需要包含在字符串 A 中
  • 所有接口中的请求方法 GET / POST / PUT / DELETE 的请求参数在计算 sig 前需要进行 utf-8 编码,然后 urlencode
  • urlencode (百分号编码) 注意需要对保留字符进行编码, 参考 百分号编码
  • 未保留字符包括字母数字 “- _ . ~”
  • 保留字符 “! * ‘ ( ) ; : @ & = + $ , / ? # [ ]”
  • urlencode 中 x-www-form-urlencoded 规范 空格 => ‘+’
  1. 计算 字符串B

按照请求url + ? + 字符串A + consumer_secret的顺序进行连接,得到 字符串B

http://openapi.ele.me/v2/restaurants/?consumer_key=7284397484&timestamp=13749080544d31ba58fd73c71db697ab5e4946d52d
  1. 对``字符串B``用UTF-8 Encode之后计算HEX值字符串(用HEX Encode),得到``字符串C``:

    687474703a2f2f7070652d6f70656e6170692e656c652e6d652f76322f72657374617572616e74732f3f636f6e73756d65725f6b65793d373238343339373438342674696d657374616d703d313337343930383035343464333162613538666437336337316462363937616235653439343664353264
    
  2. 计算签名

字符串C 计算SHA1哈希,得到签名:

e76dfee7276f0c7a382b4f0dbdad802a95c642aa
  1. 拼接请求URL

将得到的签名赋给sig作为HTTP请求的URL参数:

http://openapi.ele.me/v2/restaurants/?consumer_key=7284397484&sig=e76dfee7276f0c7a382b4f0dbdad802a95c642aa&timestamp=1374908054

注解

  • 不论访问的URL是否最后是以/结束,计算sig的时候都要加上末尾的/ 即使用 http://openapi.ele.me/v2/food/ 而不是 http://openapi.ele.me/v2/food
  • URL参数(即用<>占位的参数,如/order/<eleme_order_id>/status)不需要参与sig的计算

示例代码

可以参考 示例代码

接口测试信息

饿了么开放平台测试请求的基础地址为:

https://openapi.ele.me/v2/

地址支持 https

平台测试

第三方平台接入测试帐号,和线上账户信息联系我们。

测试餐厅

第三方使用测试账号时, 系统限制只能在测试餐厅下单: 测试餐厅联系我们获取

接口特别说明

  • 所有涉及到地理位置坐标的,均使用的是 高德坐标系
  • 所有的图片地址可以任意指定宽高,具体参考 图片大小说明

接口更新日志

随着使用方需求变更以及系统升级,OpenAPI的接口可能会发生改变。

相应的改变会记录在:变更日志

接口错误码

接口返回的错误码参考 错误码列表