鼎熠智控-物联网管理系统
SDK 示例
本文档提供多种编程语言的 SDK 客户端调用示例。所有示例都遵循同一套签名规则:按参数名排序、排除 signature、使用 timestamp 和 nonce 参与 HMAC-SHA256 签名。
可用 SDK
Python 客户端
适用于后端服务、脚本和自动化任务。
Go 客户端
适用于服务端集成和命令行工具。
Node.js 客户端
适用于 Node.js 服务端和构建脚本。
PHP 客户端
适用于 PHP Web 应用后端。
Java 客户端
适用于 Java 服务端集成。
快速开始
1. 初始化客户端
# Python
client = WLWOpenAPIClient(
base_url="https://api.example.com",
access_key="ak_xxxxxxxxxx",
secret_key="sk_xxxxxxxxxx"
)
// Go
client := NewWLWOpenAPIClient(
"https://api.example.com",
"ak_xxxxxxxxxx",
"sk_xxxxxxxxxx"
)
// Node.js
const client = new WLWOpenAPIClient(
'https://api.example.com',
'ak_xxxxxxxxxx',
'sk_xxxxxxxxxx'
);
// PHP
$client = new WLWOpenAPIClient(
'https://api.example.com',
'ak_xxxxxxxxxx',
'sk_xxxxxxxxxx'
);
// Java
WLWOpenAPIClient client = new WLWOpenAPIClient(
"https://api.example.com",
"ak_xxxxxxxxxx",
"sk_xxxxxxxxxx"
);
2. 调用接口
# Python
try:
card_info = client.get_card_info("CARD123456789")
print(f"余额: {'{'}card_info['balance']{'}'}")
except APIError as e:
print(f"错误: {'{'}e.message{'}'}")
// Go
cardInfo, err := client.GetCardInfo("CARD123456789")
if err != nil {'{'}
log.Printf("错误: %v", err)
{'}'} else {'{'}
fmt.Printf("余额: %.2f\n", cardInfo.Balance)
{'}'}
// Node.js
try {'{'}
const cardInfo = await client.getCardInfo('CARD123456789');
console.log(`余额: ${'{'}cardInfo.balance{'}'}`);
{'}'} catch (error) {'{'}
console.error(`错误: ${'{'}error.message{'}'}`);
{'}'}
// PHP
try {'{'}
$cardInfo = $client->getCardInfo('CARD123456789');
echo "余额: " . $cardInfo['balance'];
{'}'} catch (APIError $e) {'{'}
echo "错误: " . $e->getMessage();
{'}'}
// Java
try {'{'}
CardInfo cardInfo = client.getCardInfo("CARD123456789");
System.out.println("余额: " + cardInfo.getBalance());
{'}'} catch (APIError e) {'{'}
System.err.println("错误: " + e.getMessage());
{'}'}
主要功能
接入 SDK 时建议封装以下核心能力:
基础功能
- ✅ HMAC-SHA256 签名生成
- ✅ 自动参数排序和签名
- ✅ 请求/响应处理
- ✅ 错误处理和异常封装
接口方法
heartbeat()- 心跳检测getAgentBalance()- 查询当前代理余额listConnectablePackages(packageCode)- 获取可对接套餐列表getCardInfo(cardNo)- 查询卡板信息getCardRealNameUrl(cardNo)- 获取卡板实名链接refreshCardFlow(cardNo)- 刷新卡板流量restartCard(cardNo)- 卡板复机stopCard(cardNo)- 卡板停机orderCardPackage(cardNo, packageCode, strategy)- 卡板套餐订购getMobileToken(channelKey)- 通过渠道密钥获取移动 Token(无需签名)getDeviceInfo(deviceNo)- 查询设备信息getDeviceRealNameUrls(deviceNo)- 获取设备实名链接orderDevicePackage(deviceNo, packageCode, strategy)- 设备套餐订购sendDeviceCommand(deviceNo, command, params)- 执行设备操作指令
错误处理
所有 SDK 都实现了统一的错误处理机制:
| 错误类型 | 错误码 | 说明 |
|---|---|---|
| 认证失败 | InvalidSignature、InvalidTimestamp、InvalidAccessKey |
检查签名、时间戳和密钥 |
| 权限不足 | PermissionDenied、Forbidden |
检查池中池余额、账单提取配置的对象绑定和禁止接口动作,或联系管理员 |
| 频率限制 | RateLimited |
降低请求频率或实现重试 |
| 业务错误 | 其他错误码 | 查看错误消息详情 |
最佳实践
-
密钥管理
- 使用环境变量存储密钥
- 不要在代码中硬编码密钥
- 定期轮换密钥
-
错误处理
- 捕获并处理所有异常
- 实现重试逻辑(指数退避)
- 记录详细的错误日志
-
性能优化
- 复用客户端实例
- 设置合理的超时时间
- 实现连接池(适用于高并发场景)
-
监控告警
- 监控 API 调用成功率
- 监控响应时间
- 设置异常告警
