顺丰开放平台open.sf-express.com/consolePers…
首次使用需注册账号,在开发控制台创建应用并关联API,这里就先创建一个测试应用001,并且关联医寄通的API
尚未测试过的会显示状态“测试中”,已经测试过的就会变更状态为“待上线”。
先了解开发规则:
入参:
参数列表 | 类型 | 是否必传 | 含义 |
---|---|---|---|
partnerID | String(64) | Y | 合作伙伴编码(即顾客编码) |
requestID | String(40) | Y | 请求唯一号UUID |
serviceCode | String(50) | Y | 接口服务代码(到API接口详情查看具体服务代码) |
timestamp | long | Y | 调用接口时间戳 |
msgDigest | String(128) | 条件 | 数字签名;注意:使用鉴权方式-数字签名,则必传且参数accessToken为非必传 |
accessToken | String(100) | 条件 | 访问令牌;注意:使用鉴权方式-OAuth2认证,则必传且参数msgDigest为非必传 |
msgData | String | Y | 业务数据报文 |
数字签名javascript
import MD5 from 'crypto-js/md5'
export default {
mounted() {
const data = {
language: 'zh-CN',
orderId: 'QIAO-20200618-004'
}
const timestamp = 1652410044726
const checkWord = 'cURqDC12jflwXdruegDudWwXBVSsQk7t'
const msgData = JSON.stringify(data)
console.log('msgData', msgData)
let toVerifyText = msgData + timestamp + checkWord
toVerifyText = encodeURIComponent(toVerifyText)
const hash = MD5(toVerifyText)
const msgDigest = hash.toString(Crypto.enc.Base64)
console.log('msgDigest', msgDigest)
}
}
// console.log
// msgData {"language":"zh-CN","orderId":"QIAO-20200618-004"}
// msgDigest IIKJtuLVzoFTu4kHI8M8vA==
以上验证了js计算出的msgDigist和官方的示例一致,所以参数没问题。
用自己的数据跑一下:
返回resultCode:A1000,证明接口请求成功了
请求:
https://sfapi-sbox.sf-express.com/std/service?msgData={%22hospitalCode%22%3A%22LAAS000063%22%2C%22destAddress%22%3A%22%E7%99%BD%E7%9F%B3%E9%BE%99%E4%B8%80%E5%8C%BA%22%2C%22destCity%22%3A%22%E6%B7%B1%E5%9C%B3%E5%B8%82%22%2C%22destDistrict%22%3A%22%E9%BE%99%E5%8D%8E%E6%96%B0%E5%8C%BA%22%2C%22destProvince%22%3A%22%E5%B9%BF%E4%B8%9C%E7%9C%81%22%2C%22srcAddress%22%3A%22%E4%B8%AD%E5%B1%B1%E5%A4%A7%E9%81%93%22%2C%22srcCity%22%3A%22%E4%B8%8A%E6%B5%B7%E5%B8%82%22%2C%22srcDistrict%22%3A%22%E9%BB%84%E6%B5%A6%E5%8C%BA%22%2C%22srcProvince%22%3A%22%E4%B8%8A%E6%B5%B7%E5%B8%82%22}&partnerID=DZQXzcTTX5&requestID=000180BB3FF47C3FEF51954848B06B4F&serviceCode=COM_RECE_MRDS_SUPPORT_VALUE×tamp=1652410044726&msgDigest=CGeNU%2FKaaJGUK%2BZD8axtmA%3D%3D
参数:
{
"hospitalCode": "LAAS000063",
"destAddress": "白石龙一区",
"destCity": "深圳市",
"destDistrict": "龙华新区",
"destProvince": "广东省",
"srcAddress": "中山大道",
"srcCity": "上海市",
"srcDistrict": "黄浦区",
"srcProvince": "上海市"
}