|
|
|
Content-Type |
|
application/json |
App-Key |
|
|
Timestamp |
|
|
Signature |
|
|
{"sn":["sn_test"]}
var timestamp = Math.round(new Date()/1000);
var appKey = "AK";
var requestBody = pm.request.body.raw;
var secretKey = "SK";
pm.environment.set("Timestamp", timestamp);
var signContent = appKey + timestamp + requestBody;
console.log("signContent:" + signContent);
var signature = CryptoJS.HmacSHA256(signContent, secretKey).toString();
pm.environment.set("Signature", signature);
var timestamp = Math.round(new Date()/1000);
var appKey = "AK";
var secretKey = "SK";
// 将URL查询参数序列化为JSON字符串(值为数组形式)
var params = {};
pm.request.url.query.each(function(param) {
if (!params[param.key]) {
params[param.key] = [];
}
params[param.key].push(param.value);
});
var requestContent = JSON.stringify(params);
pm.environment.set("Timestamp", timestamp);
var signContent = appKey + timestamp + requestContent;
console.log("signContent:" + signContent);
var signature = CryptoJS.HmacSHA256(signContent, secretKey).toString();
pm.environment.set("Signature", signature);
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
/**
* Signature Utility
*/
public class SignatureUtils {
private static final String ALGORITHM = "HmacSHA256";
public static String createSignature(String accessKey, String secretKey, Long timeStamp, String param) {
String data = accessKey + timeStamp + param;
try {
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), ALGORITHM));
byte[] bytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
StringBuilder builder = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
builder.append(String.format("%02x", b & 0xff));
}
return builder.toString();
} catch (Exception e) {
throw new RuntimeException("Build Signature error", e);
}
}
}
https://developer.tbbpower.com
:POST /pdm/firmwarepackage
|
|
|
| name |
|
|
| primaryKey |
|
ID |
| version |
|
|
| firmwareList |
|
|
|
|
|
| firmwareDetail |
|
|
| upgradePrompt |
|
|
| languageSetting |
|
|
[{
"language":"zh", // Language: zh-Chinese, en-English, de-German, fr-French, es-Spanish, it-Italian, nl-Dutch, no-Norwegian
"text":"升级更新" // Prompt text
}]
|
|
|
| name |
|
|
| externalVersion |
|
|
| itemCode |
|
|
| itemName |
|
|
| attachmentList |
|
|
:GET /pdm/rsaPublicKey
|
|
|
| id |
|
|
| keyType |
|
|
| bizSource |
|
|
| bizId |
|
|
| publicKey |
|
|
| signHex |
|
|
| createTime |
|
|
{
"success": true,
"code": 200,
"msg": "操作成功",
"data": {
"id": "01kq6ac7hy9yy3ke5t91zv4kxw",
"keyType": "RSA_2048",
"bizSource": "OTA",
"bizId": "sn_test",
"publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjAN...\n-----END PUBLIC KEY-----",
"signHex": "213800D2C5E56626F6152A4D22C08142...",
"createTime": "2026-04-27 09:55:32"
}
}
:GET /pdm/signature
|
|
|
| bizSource |
|
|
| bizId |
|
|
| dataHex |
|
|
| signHex |
|
|
{
"success": true,
"code": 200,
"msg": "操作成功",
"data": {
"bizSource": "OTA",
"bizId": "sn_test",
"dataHex": "A1B2C3D4E5F6...",
"signHex": "3F8D1A2B4C5E6F7..."
}
}
:POST /pdm/download
:POST /pdm/downloadSoftware
:GET /pdm/itemCodeList
|
|
|
| itemCode |
|
|
| itemName |
|
|
| classifyName |
|
|
| url |
|
|
{
"code": 200,
"msg": "操作成功",
"data": [
{
"itemCode": "S12345678",
"itemName": "主控软件",
"classifyName": "主控",
"url": "https://minio.example.com/bucket/path/to/file"
}
]
}