和链开发者文档
文档中心开发者文档和链浏览器
文档中心开发者文档和链浏览器
  1. 用户指南
  • 平台介绍
    • 平台简介
    • 核心功能
  • 用户指南
    • 接入流程和说明
    • 网关鉴权签名示例
    • 交易结果异步回调通知
  • 常见问题
    • operation_id 的作用
  1. 用户指南

交易结果异步回调通知

应用平台方可通过该服务来接收和链平台主动推送的上链交易结果异步通知消息。

操作流程#

1.
登录 服务平台
2.
在【项目管理页】 - 【更多】操作项中,点击「设置回调地址」,输入您的上链交易结果异步推送回调地址;
image.png
或在【项目管理页】,点击【编辑】,输入您的上链交易结果异步推送回调地址。
image.png
注意:需保证回调地址能够被外网访问
3.
设置成功后,和链平台会将您每次接口请求上链的交易结果信息推送至设置好的地址。
4.
单笔交易推送失败,触发重试机制,重新推送 4 次,时间间隔为 1、3、5、10 分钟。
5.
成功接收到请求后,需要返回字符串 SUCCESS。(区分大小写)

回调推送#

触发回调行为时,和链平台会发送回调消息到您设置的服务回调地址中,请求内容如下:
请求方式:POST
Header Parameters:
参数类型说明
X-Api-Keystring项目 API Key
X-SignaturestringAPI 签名,算法为 SHA256 (Params+ApiSecret)
推送参数:
{
    "operation_id":"string",                 // 操作 ID
    "type": "string",                        // 用户操作类型
    "module": "string",                      // 交易模块
    "tx_hash": "string",                     // 交易哈希
    "status": 0,                             // 交易状态,1 成功; 2 失败
    "message": "string",                     // 交易失败的错误描述信息
    "block_height": 0,                       // 交易上链的区块高度
    "timestamp": "string",                    // 交易上链时间(UTC 时间)
    "nft": "{                                // 对应不同操作类型的消息体 (参数值为:json字符串)
         "class_id": "string"
         "nft_id": "string",
    }",
     "mt": "{                                // 对应不同操作类型的消息体(参数值为:json字符串)
         "class_id": "string"
         "mt_id": "string",
    }"
}

回调验签#

签名 = sha256 (body + api_secret)
将接收到的 body 转换成 json 字符串,拼接上 api_secret ,进行 sha256 计算。可参考网关鉴权签名示例中的 sha256 的计算方法。
       JSONObject jsonStr = JSON.parseObject("body参数");
       String jsonStr1 = JSON.toJSONString(jsonStr, SerializerFeature.MapSortField);
        // 执行签名
        String signature = sha256Sum(jsonStr1 + "api_secret");

回调验签示例 (java)#

public String huidiao(HttpServletRequest request, HttpServletResponse response,@RequestBody String data) throws Exception{
        String timestamp =  request.getHeader("X-Timestamp");
        String qianming = request.getHeader("X-Signature");
         // 验签
         JSONObject jsonStr = JSON.parseObject("data");
         String jsonStr1 = JSON.toJSONString(jsonStr, SerializerFeature.MapSortField);
         // 执行签名
         String signature = sha256Sum(jsonStr1 + "api_secret");
         if(!signature.equals(qianming)){
             return "failed";
         }
         Map map = new HashMap<>(); // map 是 data 转换成 json 格式后将数据组装到 map 中
            return "SUCCESS";
    }

地址无法接收到回调#

请检查设置的地址是否能够被外网访问。
请检查是否正确接收到回调信息。(建议接收 body、header 两个部分内容)
如果使用代理等配置(包括但不限限于问题),请检查确保能够成功请求到这个地址。
上一页
网关鉴权签名示例
下一页
operation_id 的作用
Built with