接入指引

### 1.接口请求地址 沙箱环境业务请求地址: http://zt-beta.can-dao.com:81/api 正式环境业务请求地址: https://openapi.can-dao.com/api MD5签名校验地址: https://md5jiami.51240.com/ ### 2.协议说明 **HTTP/POST**格式请求,所有数据整体打包成 JSON 格式传输,且字符编码为 **UTF-8**。请求头HTTP Header中 Content-type需设置为 **application/json**。 ### 3.公共请求参数 - accessKey:访问key - sourceAccessKey:可选,请求方来源accessKey(供应商订阅管理配置是否传来源方accessKey) - actionName:==接口名称== - timestamp:时间戳,单位毫秒。服务端允许应用请求的时间误差为正负15分钟之内。 - ticket:UUID4,用来唯一标记此次调用 - sign:签名,32位Md5加密,参考下文签名计算规则 - serviceType:请求服务,参见枚举类serviceType - vendor:可选,供应商名称,参见枚举类vendor,配合serviceType=pos/crm/pay/receipt/使用,否则可以为空 - storeId:可选,统一门店id - data:object 业务级请求参数 请求示例: ```JSON { "data": { "orderId": 123456 }, "accessKey": "testkey11111111", "actionName": "candao.order.test", "timestamp": 1539771447532, "ticket": "5c4fa976-b9ae-4cb4-9809-0f96b82b4471", "sign": "1155751927595ad5689398d8932ac02e", "serviceType": "pay", "vendor": "sodexo" } ``` ### 4.返回参数说明 - status:int,操作状态:1成功;不为1显示msg的错误提示;不为1时的含义若具体协议有另行定义,则以具体协议定义为准 - msg:操作结果描述 - logId:系统生成的任务id,用于异步通知回调接口的唯一值 - data:object,json对象/数组 ### 5.签名计算规则 1,按照 accessKey + actionName + secret + timestamp + data 的规则拼接签名原串。++需将data数据toJson转成json字符串++。如果json字符串为空,无需拼接。 ```JAVA String sign = Md5Util.get32MD5(accessKey + actionName + secret + timestamp + (StringUtil.isNullOrBlank(data) ? "" : data)) ``` 2,将上一步得到的字符串进行32位Md5加密 >注:访问accessKey,secret,将由开放平台统一提供。 ticket不参与签名计算。 MD5加密前字符串为: `testkey11111111candao.order.testd060627fe1f0c07dfd2b1ead123456781539838907550{"orderId":123456}` ### 6.注意事项 1. ~~==serviceType为"delivery"是骑手系统==,为本次即时配送接入的serviceType~~ 第三方小程序和POS收银系统,他们不需要直接请求到其他定制系统,故他们++serviceType++均传【==pos==】即可。 2. 作为开发者在开发者中心调试同步门店信息接口时,品牌名称为 ==企业简称== 3.当供应商(如小程序)只走配送时,++无需维护餐品信息++,在推送新订单(candao.order.pushOrder)时,需要传容错字段【==ftType==】 4.参数定义: - **extOrderId** : 平台订单id,指的是第三方自己的订单号,每次提交订单都需要更变订单id,订单ID不可重复 - **longitude与latitude** :经纬度,此字段使用的是高德经度,非堂食订单时必传; - **fromType** : 订单来源,第三方提交订单时建议传此字段便于区分订单渠道,订单来源可参见fromType枚举; - **orderStatus** : 订单状态,第三方提交订单时应==传状态7:商家待接单==,可参见枚举类orderStatus; - 若供应商无须在餐道维护餐品信息,可使用==容错模式==; - 门店信息的维护则需要双方做映射维护处理,维护方式如下:供应商及餐 道各创建一份数据,将供应商 ID 填写在餐道系统中,或供应商系统中填写 餐道系统 ID 进行映射,推单时可直接推送第三方 ID - 若双方均不维护餐 品可用容错模式,当 推送订单字段 emptyProductId 为 true 时,餐道系 统则不会校验餐品 ==更多注意事项,会写在接口文档里==