账号申请
需要联系美团商务人员, 来为开发者提供clientId / signKey。
域名信息
如果接口中没有特殊说明,默认美团文档上所有接口 Content-Type:application/x-www-form-urlencoded 关于合作方下的域名信息不能带有端口号,美团服务器有端口号限制。 回调美团域名仅支持(https),http不再提供支持。
测试环境:https://qcs-openapi.apigw.test.meituan.com
线上环境:https://qcs-openapi.meituan.com
联调
开发完接口之后, 通知美团打车相关人员, 来进行接口联调。
上线
联调测试通过之后, 合作方接口可以先上线, 然后美团打车车进行相关配置上线。
其他
接口公共参数
请求公共参数
参数名 | 类型 | 描述 |
---|---|---|
channel | string | 美团分配的渠道标示,对应client_id |
timestamp | long | 请求时间,Unix Timestamp单位毫秒 |
sign | string | 请求参数签名 |
结果公共参数
参数名 | 类型 | 描述 |
---|---|---|
result | int | 0:成功, 非0 :失败 |
message | string | 成功: SUCCESS, 失败:具体原因 |
data | object/list | 具体数据信息 |
鉴权方式
- 合作方进行服务调用时,需要根据申请client_id时生成的sign_key,对请求参数进行SHA1签名,并将参数名带入请求参数中。
- 合作方接受到请求后使用sign_key 重新计算参数签名进行比较是否被篡改。
签名步骤如下:
1.生成签名时将sign_key加入传递的参数,参与签名;
2.将所有的参数(不包括空值的参数)按照key值按字符升序排列(key1value1key2value2),生成小写的签名作为sign;
3.生成sign后,sign与其他的参数一同传递;
4.sign_key不参与传递;
java代码示例如下:
public String sign(Map<String, Object> params, String signKey) throws Exception {
Map<String, String> needVerify = new HashMap<>();
Map<String, Object> signMap = Maps.filterEntries(params, entry -> null != entry.getValue() && StringUtils.isNotBlank(String.valueOf(entry.getValue())));
TreeMap<String, String> sortMap = new TreeMap<>();
for (Map.Entry<String, Object> entry : signMap.entrySet()) {
needVerify.put(entry.getKey(), String.valueOf(entry.getValue()));
}
//sign_key 是美团分配的密钥
needVerify.put("sign_key", signKey);
sortMap.putAll(needVerify);
List<Map.Entry<String, String>> entryList = new ArrayList<>(sortMap.entrySet());
StringBuilder signStr = new StringBuilder();
for (Map.Entry<String, String> entry : entryList) {
signStr.append(entry.getKey()).append(entry.getValue());
}
logger.info("sha1 签名参数:{}", signStr.toString());
try {
return org.apache.commons.codec.digest.DigestUtils.sha1Hex(signStr.toString());
} catch (Exception e) {
logger.warn("sha1 签名异常,参数:{}", signStr.toString(), e);
throw e;
}
}
订单状态流转
分单匹配流程
美团侧作为聚合平台会依据各家运力商上报的运力择优成单,未被选中的运力会发起取消流程.