接口约定
大约 2 分钟
接口约定
编码
数据编码统一为 utf-8
。
密钥
接口文档中提到的 appid
& appsecret
,都是指商户 appid
& appsecret
,可在商户后台设置接口密钥信息栏查看。
字段选填
对于接口参数标记为 选填
的字段,可传入具体的值或者空字符串。
数据提交
对于有数据提交的接口,统一使用 POST
的方式 。相关请求头的 content-type
字段为:
application/json
数据返回
系统统一返回json数据,示例如下:
{
"code": 200, // 200 成功,其它失败
"message": "success", // success 成功,其它失败描述
"data": { // 不同接口返回查看对应文档说明
"arg": "87.26"
},
"request_id": "f4094748-a327-42af-8b3a-5eb64540d2a1" // 请求id
}
交易查询
如接口有返回 hash
字段,商户可前往波场官方区块链浏览器(https://tronscan.org),查询交易详细信息。
签名算法
为保障接口安全,系统端会对接收到的所有数据,使用 sign
匹配校验,防止数据被非法篡改。
签名步骤
- 假设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 signstr。
- 在 signstr 最后拼接上 &appsecret=密钥 得到字符串,并对字符串进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到sign值。
签名规则
- 参数名 ASCII 码从小到大排序(字典序)。
- 参数的值为空不参与签名。
- 参数名区分大小写。
- 验证调用返回或平台主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该 sign 值作校验。
签名示例
例如签名参数如下:
{
"appid": "12345678",
"order_id": "8883214567"
}
对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序
appid=12345678&order_id=8883214567
对上一步中的字符串拼接 &appsecret=密钥
appid=12345678&order_id=8883214567&appsecret=XXXXXXXXXXXXX
对上一步中的字符串取 md5 并转化为大写
sign = hashlib.md5(signstr.encode()).hexdigest().upper()