开发接口文档
  1. 前言
开发接口文档
  • 快跑者开放接口文档
    • 前言
      • 文档说明
      • 订单创建商户映射逻辑
      • 签名生成规则
    • 订单相关接口
      • 计算配送费
      • 创建订单
      • 获取订单详情
      • 获取订单进程
      • 获取订单配送员坐标
      • 订单增加小费功能
      • 配送订单出餐
      • 撤销订单
      • 评论配送员
      • 拉黑骑手
    • 联盟订单相关接口
      • 计算配送费
      • 创建订单
    • 团队相关接口
      • 获取团队信息
    • 商户相关接口
      • 获取所有商户
      • 解绑授权商户
      • 设置商家名称
      • 创建关联快跑者商户
      • 获取商家储备金余额及充值链接
      • 获取指定团队是否存在相关商户
    • 门店相关接口
      • 获取门店列表
      • 修改门店
      • 删除门店
      • 关联门店
    • 配送员相关接口
      • 获取所有配送员
      • 获取指定范围配送员
      • 解除拉黑骑手
    • 回调通知
      • 配送订单状态变更回调
    • 其他
      • 常见问题
      • 微盛小程序对接快跑者
  1. 前言

签名生成规则

PHP 开发者可直接使用或借鉴快跑者 Keloop-PHP-SDK,其他语言开发者可根据以下签名规则自己编写签名方法,具体的签名流程如下:

请求参数签名#

示例:使用以下 dev_key 和 dev_secret 来签名请求参数:
{
    "dev_key": "YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN",
    "dev_secret": "DF2075B439B7B7BBFE0708E174B8994B",
}

1. 参数筛选#

获取所有请求参数(不包括字节类型参数,如文件、字节流),剔除参数名为 sign、sign_type、key 的参数及参数值为 '' 或 null 的参数。
注意: 请不要将 dev_secret 参数直接加入到请求参数中。
假定需要请求的参数如下:
{
    "version": 1,
    "timestamp": 1527132222,
    "team_token": "HCDJ3DVM9LM9FTNZ",
    "dev_key": "YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN",
    "ticket": "017AC3A2-D071-6674-79D3-D847E2EB405B",
    "body": "{\"pay_status\":1,\"pay_fee\":1.66}"
}
则根据规则经过参数筛选之后的参数为筛选只会剔除空值的参数:
{
    "version": 1,
    "timestamp": 1527132222,
    "team_token": "HCDJ3DVM9LM9FTNZ",
    "dev_key": "YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN",
    "ticket": "017AC3A2-D071-6674-79D3-D847E2EB405B",
    "body": "{\"pay_status\":1,\"pay_fee\":1.66}"
}

2. 参数排序#

按照参数名第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推。
经过参数排序之后参数为:
{
    "body": "{\"pay_status\":1,\"pay_fee\":1.66}",
    "dev_key": "YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN",
    "team_token": "HCDJ3DVM9LM9FTNZ",
    "ticket": "017AC3A2-D071-6674-79D3-D847E2EB405B",
    "timestamp": 1527132222,
    "version": 1
}

3. 参数拼接#

1.
将排序后的参数名与参数值,组合成“参数名=参数值”的格式,并把这些参数用 & 字符连接起来,此时生成的字符串为最初的待签名字符串。经过参数拼接之后的最初待签名字符串为:
body={"pay_status":1,"pay_fee":1.66}&dev_key=YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN&team_token=HCDJ3DVM9LM9FTNZ&ticket=017AC3A2-D071-6674-79D3-D847E2EB405B&timestamp=1527132222&version=1

4. 签名#

使用 md5()方法对最终的待签名字符串进行签名使用上面拼接好的参数拼接上 开发者 secret:
md5("body={\"pay_status\":1,\"pay_fee\":1.66}&dev_key=YC9OB9QF76WJ7YMI9C4QVZV01OZPAGHN&team_token=HCDJ3DVM9LM9FTNZ&ticket=017AC3A2-D071-6674-79D3-D847E2EB405B&timestamp=1527132222&version=1DF2075B439B7B7BBFE0708E174B8994B")
# 结果为:
37f7ea0b45d49dc2acf211b7194649d0
因此,请求参数的签名结果(即 sign 参数的值)为:37f7ea0b45d49dc2acf211b7194649d0

返回参数验证签名#

开发者在快跑者 开发者中心 可设置一个回调地址(notify_url),当快跑者订单的状态发生变化时,会回调该地址,请开发者对快跑者回调传递的参数进行验证签名,以保证接口调用安全。
验证签名,需要将获取到的参数进行签名(参考上面的签名流程),然后再对比 sign 值是否相等,由此进行参数签名验证!
上一页
订单创建商户映射逻辑
下一页
计算配送费
Built with