Open API 加签文档
Open API 使用加签,API 密钥需要使用 RSA 加验签模式
版本(1.0.0)
域名
- 测试环境
- 生成环境
公共请求头
列名 | 类型 | 是否必填 | 说明 | 实例值 |
---|---|---|---|---|
version | String | 是 | API 版本 | 1.0.0 |
token | String | 否 | 认证 token | |
sign_str | String(Base64) | 否 | 签名字符串(参考加签流程) | |
timestamp | Integer | 是 | 时间戳(毫秒) | 1721299458423 |
请求体
参考具体接口要求,如请求体需要加密参考加密流程(先加密再计算加签字符串),请求参考示例
curl --location --request POST 'https://{gateway-host}/{api-path}' \
--header 'token: a0e13fe1-5626-4c05-926b-20f586c69102-20240821144204' \
--header 'timestamp: 1724222524375' \
--header 'version: 1.0.0' \
--header 'sign_str: EowIBAAKCAQEArbNcSNSLjHzqOzrYL+7afEh5TI4hn1BCxsuzY02c1RMn24a2YEvpqCCVDxmgN/dcAdcCcvhO/2wDG389LuEkw+QhVPzdAE29bbzz+Gb/FDusVNo6tl8mbfd/XA53h3sOCekEMP2QCoPAoUO94wUWK5RpjsONf9Bs0Q6YUmL4TWqvPGmWjc/Y8winDtFzKN2his5PhbWlRiSkENGXSma6lr66BA/SduAY/Fl8YxEWThVkYsAurg0rEd83DilN4zp7hZf82Msjgp8kPm/SMHTEF2V2cOo82m12HyRJKuKS0L8WPVIwQmXJ6VN55ue+b96sryUs/WZyfiXTh0thoa9vqQIDAQABAoIBAQCsOMDQSUTPl27aKR7+b5FbVrRF7kpx3i9HUeLcG7DbJrIHHAspcTsLgrqoDR1pQC2OeXMpMP+KirqOAdtU5tAAFenijRBGY83kx0sSSHSyx/O28eTyu2ar84/oY0OqJZ0mwE1ykYXGlxlgC31zYLC5pt3+Oe/LAYlSwmjOjuhoQDMZoiCByIw6oDAVLIlZwTl8A/HAR1yacDTh6lps1vTZ5lBfIDpbn1gHb2GWqHu8q9oD9G9IEyWwwTE1IsNXVwBKEifjLubd2WfTWDmROVZZ9T4AXm/40/Eb6ALApwY5s7lBMIiapmcJZzlyELEukUMmYN7vHBjdMDOPK3tjLSKNA' \
--data-raw '{"task_id": 1}'
公共请求体
列名 | 类型 | 不是 null | 说明 | 实例值 |
---|---|---|---|---|
code | String | 是 | 响应 code | 0000 |
message | String | 否 | 响应说明 | success |
data | Object | 否 | 数据体 | {"task_name": "test_task1"} |
加签流程
- 生成待加签字符串
- path 为接口地址,get 请求需要完整 url 包含 query 参数
- version 为请求头中的接口版本
- timestamp 为请求头中的时间戳
- token 为请求头中的 token
- data 为接口请求体,如果接口需要加密则为加密后的 base64 字符串
rs
//format!("{}\n{}\n{}\n{}\n{}", path, version, timestamp, token, data)
/api/user/order/get_this_week_residue_withdrawal_count
1.0.0
1724222524375
a0e13fe1-5626-4c05-926b-20f586c69102-20240821144204
{"username":"test1","password":"password1"}
- 获取到待签名字符串后,通过 rsa_sha256_prik_sign 签名算法,进行计算签名,然后生成 BASE64 字符串
- 然后设置请求头的 sign_str 字段,value 为生成的 BASE64 字符串
加密流程
- 根据 rsa 公钥对请求体进行 rsa_pubk_encrypt 算法加密
- 之后将加密 byte 数组转换为 BASE64 字符串
- 然后将 BASE64 字符串放入请求体中
- 如果请求同时需要加密和加签,则需要先进行加密步骤,再进行加签步骤