## 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": "簽名驗證錯誤"
}