跳至主要內容

接口约定

大约 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.orgopen in new window),查询交易详细信息。

签名算法

为保障接口安全,系统端会对接收到的所有数据,使用 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()

上次编辑于:
贡献者: yi