## 1、 API调用请求基于HTTP协议,要求如下:
Method : POST
Content-Type : application/json
## 2、API调用请求分为2部分:请求URL和请求body。
平台参数:写入请求URL中;
业务参数:写入body中,目前只支持JSON字符串。
## 3、appkey、appsecret、API接入地址
appkey、appsecret、API接入地址获取方式
1.在推送订单的接收平台(以下简称接收平台)入驻成为跑腿商家,入驻链接联系接收平台获取。入驻完成后,需接收平台审核通过后才算是入驻成功;
2.入驻成功后联系接收平台为入驻商户创建应用,创建完成后由接收平台提供appkey、appsecret、API接入地址;
3.推送订单时应保证商家的预存金余额充足。
## 4、平台参数
| 参数名称 | 是否必填 | 范例 | 参数说明 |
| ---- | ---- | ---- | ---- |
| appkey | 是 | G86JM5RJ3h69ZHX286 | 为每个应用提供的唯一标识 |
| timestamp | 是 | 1604027239 | 本次调用的秒级时间戳 |
| nonce | 是 | 741852 | 随机数 |
| sign| 是 | f30fc2aeb50c984bea266ba285ce2e8d9617253f | 签名,签名规则详见下说明 |
| operate | 是 | deliveryFee | 请求api的名称 |
调用URL示例:
例如API接入地址是:https://xxx.xxx.com
则调用URL的完整地址是: https://xxx.xxx.com?appkey=G86JM5RJ3h69ZHX286×tamp=1604027239&nonce=741852&sign=f30fc2aeb50c984bea266ba285ce2e8d9617253f&operate=deliveryFee
## 5、签名规则
1. 将URL中的平台参数appkey、nonce、operate、timestamp 按照 **参数名** ASCII码从小到大排序(字典序),每个参数后拼接'='以及参数值,然后再用'&'拼接,得到字符串A。
如:appkey=G86JM5RJ3h69ZHX286&nonce=741852&operate=deliveryFee×tamp=1604027239
2. 字符串A拼接'&body=',再拼接body中的字符串内容,再拼接"&secret="和appsecret值,得到字符串B。
如:appkey=G86JM5RJ3h69ZHX286&nonce=741852&operate=deliveryFee×tamp=1604027239&body={"acceptaddress":{"realname":"张三","mobile":"15364810000","sex":1,"address":"太原高新技术产业开发区山投大厦","location_x":"37.789","location_y":"112.56619"},"goods_weight":1.5,"delivery_time":"2020-10-30 12:00","delivery_tips":1}&secret=116588fe7846ee0bc24047c561691654
3. 对字符串B用sha-1签名算法进行hash运算,最终得到sign值。
如:83176cf89b06c639e7a89650c502e96c11c5fb04
**注意**:*回调中的签名的生成方式与请求API时签名的生成方式一致,开发者可通过验证签名来判断是否为合法请求*
## 6、平台响应参数
| 参数 | 类型 | 说明 |
| --- | --- | --- | --- |
| errno | Number | 平台响应码 |
| message | String或Array | 具体的返回信息 |
errno 可能的值: 0 请求成功 -1请求失败
请求成功结果示例:
{
"errno": 0,
"message": {
"delivery_fee": 5.5,
"delivery_tips": 0,
"total_fee": 5.5,
"discount_fee": 0,
"final_fee": 5.5,
"distance": 1.1,
"fees": {
"basic": {
"title": "基础配送费",
"note": "固定金额",
"fee": 5.5,
"fee_cn": "¥5.5"
}
},
"delivery_time": "2020-10-30 12:00",
"goods_weight": 1.5
}
}
请求失败结果示例:
{
"errno": -1,
"message": "签名验证错误"
}