对接顺丰开放平台-简单上手

1,024 阅读2分钟

顺丰开放平台open.sf-express.com/consolePers…

首次使用需注册账号,在开发控制台创建应用并关联API,这里就先创建一个测试应用001,并且关联医寄通的API

Screen Shot 2022-05-16 at 13.52.32.png

尚未测试过的会显示状态“测试中”,已经测试过的就会变更状态为“待上线”。

先了解开发规则:

入参:

参数列表类型是否必传含义
partnerIDString(64)Y合作伙伴编码(即顾客编码)
requestIDString(40)Y请求唯一号UUID
serviceCodeString(50)Y接口服务代码(到API接口详情查看具体服务代码)
timestamplongY调用接口时间戳
msgDigestString(128)条件数字签名;注意:使用鉴权方式-数字签名,则必传且参数accessToken为非必传
accessTokenString(100)条件访问令牌;注意:使用鉴权方式-OAuth2认证,则必传且参数msgDigest为非必传
msgDataStringY业务数据报文

数字签名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和官方的示例一致,所以参数没问题。

Screen Shot 2022-05-16 at 13.54.01.png

用自己的数据跑一下:

Screen Shot 2022-05-16 at 13.54.14.png

返回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&timestamp=1652410044726&msgDigest=CGeNU%2FKaaJGUK%2BZD8axtmA%3D%3D
参数:
{
    "hospitalCode": "LAAS000063",
    "destAddress": "白石龙一区",
    "destCity": "深圳市",
    "destDistrict": "龙华新区",
    "destProvince": "广东省",
    "srcAddress": "中山大道",
    "srcCity": "上海市",
    "srcDistrict": "黄浦区",
    "srcProvince": "上海市"
}