HC小区接口文档

签名方法

签名生成规则

签名是通过将多个参数按特定顺序拼接后进行MD5加密生成的,具体规则如下:

String reqInfo = transactionId + requestTime + APP_ID + param + SECURITY_CODE;
String sign = md5(reqInfo);

参数说明

参数名 来源 说明
transactionId HTTP Header中的TRANSACTION-ID 交易流水号
requestTime HTTP Header中的REQ-TIME 请求时间
APP_ID 系统配置(MappingCacheFactory.getValue("APP_ID")) 应用ID
param 请求参数 GET请求时为URL中?后的参数,POST请求时为请求体内容
SECURITY_CODE 系统配置(MappingCacheFactory.getValue("SECURITY_CODE")) 安全码

调用方式

GET请求签名生成

// GET请求示例
String url = "http://example.com/api?param1=value1&param2=value2";
String tempGetParam = "";

if (url.indexOf("?") > 0) {
    tempGetParam = url.substring(url.indexOf("?") + 1); // 获取?后的参数字符串
}

String sign = generatorSign(
    httpHeaders.get(SystemConstant.HTTP_TRANSACTION_ID).get(0), // TRANSACTION-ID
    httpHeaders.get(SystemConstant.HTTP_REQ_TIME).get(0),      // REQ-TIME
    tempGetParam                                               // URL参数
);

POST请求签名生成

// POST请求示例
String requestBody = "{\"key1\":\"value1\",\"key2\":\"value2\"}";

String sign = generatorSign(
    httpHeaders.get(SystemConstant.HTTP_TRANSACTION_ID).get(0), // TRANSACTION-ID
    httpHeaders.get(SystemConstant.HTTP_REQ_TIME).get(0),      // REQ-TIME
    requestBody                                                // 请求体内容
);

注意事项

签名功能可通过SIGN_FLAG配置项开关("ON"开启,"OFF"关闭)

当签名功能关闭时,generatorSign方法返回空字符串

所有参数拼接时需确保顺序正确

MD5加密结果应为32位小写字符串

请求时必须包含TRANSACTION-ID和REQ-TIME这两个HTTP Header

示例

假设:

TRANSACTION-ID = "123456"

REQ-TIME = "20230701120000"

APP_ID = "APP123"

SECURITY_CODE = "SECRET123"

GET参数 = "name=test&age=20"

则签名生成过程:

reqInfo = "123456" + "20230701120000" + "APP123" + "name=test&age=20" + "SECRET123"
        = "12345620230701120000APP123name=test&age=20SECRET123"
sign = md5("12345620230701120000APP123name=test&age=20SECRET123")

最终签名值为MD5加密后的32位小写字符串。