接口文档 / 鉴权与签名
鉴权与签名
业务接口通过公共请求头校验应用身份、时间戳、签名和门店令牌;事件回调通过 sign 判断请求是否来自 ABC 数字医疗云开放平台。
公共请求头
应用访问平台接口时,需要在 HTTP Header 中携带签名(sign)、请求时间戳(ts)、应用 ID(appId)和访问凭证(authorization)。
| 请求头 | 类型 | 说明 |
|---|---|---|
sign | string | 请求签名,签名方式见详细说明 |
ts | string | 当前时间戳,精确到秒;平台只接受与北京时间时间差5分钟内的请求,请确保应用服务时间同步 |
appId | string | 应用 ID |
authorization | string | AccessToken |
签名 sign 的计算方法
原始 Query 参数包括 param1=v1、param2=v2 等(参数值为空时,该参数不参与签名计算)。再加上公共参数 appId=APP_ID、ts=TS 和请求路径 path=PATH,按 key 的字典序升序排列,以 k=v 格式拼接为参数字符串 s。
s = "appId=APP_ID¶m1=v1¶m2=v2&path=PATH&ts=TS"
举例: "appId=1¶m1=2¶m2=3&path=/api/v2/open-agency/patient&ts=1648713476"在 s 末尾追加 appSecret=APP_SECRET,得到 s1。
s1 = "appId=APP_ID¶m1=v1¶m2=v2&path=PATH&ts=TS&appSecret=APP_SECRET"
举例: "appId=1¶m1=2¶m2=3&path=/api/v2/open-agency/patient&ts=1648713476&appSecret=qwer"对 s1 进行 MD5 计算,得到 sign。
举例: md5("appId=1¶m1=2¶m2=3&path=/api/v2/open-agency/patient&ts=1648713476&appSecret=qwer") = 0357972C991648DD192427C6C9FD3A78签名计算工具
参与签名的字段
appId = 1 param1 = 2 param2 = 3 path = /api/v2/open-agency/patient ts = 1648713476
s · 排序后的待签名参数
appId=1¶m1=2¶m2=3&path=/api/v2/open-agency/patient&ts=1648713476
s1 · 末尾追加 appSecret
appId=1¶m1=2¶m2=3&path=/api/v2/open-agency/patient&ts=1648713476&appSecret=qwer
sign · MD5 转大写
0357972C991648DD192427C6C9FD3A78
请求头示例
sign: 0357972C991648DD192427C6C9FD3A78 ts: 1648713476 appId: 1 authorization: <YOUR_ACCESS_TOKEN>
排查顺序
依次核对环境、应用密钥、时间戳单位、最终路径、Query 原文和排序结果。