EIOTCLUB 接入说明
环境变量
请在 VM 的 /opt/aovis/aovis-store-staging/.env.production 中配置:
EIOTCLUB_APP_KEYEIOTCLUB_SECRETEIOTCLUB_BASE_URL=https://oapi.eiotclub.comEIOTCLUB_WEBHOOK_SECRET
如果前两个变量缺失,客户端会返回 null / EIOTCLUB not configured,而不是直接抛错。EIOTCLUB_WEBHOOK_SECRET 在 EIOTCLUB 允许的情况下可以复用 EIOTCLUB_SECRET。
IP 白名单
EIOTCLUB 要求先把 VM 出网 IP 加入白名单,API 调用才能成功。
- 当前 VM 出网 IP:
8.229.42.246 - 白名单状态:等待 EIOTCLUB 确认
- 在 EIOTCLUB 后台中的位置:
boss.eiotclub.com→平台设置→白名单设置 - EIOTCLUB 说明里提到:单账号最多可配置 15 个 IP,接口频率限制为 10 次 / 秒
Webhook 地址
EIOTCLUB 回调地址请配置为:
https://aovis.app/api/webhooks/eiotclub
签名规则
这里有两套不同的 SHA1 签名规则:
- API 请求签名:包含
appkey、timestamp、nonce和业务参数,按 ASCII 顺序排序后拼成key=value&...,最后追加&secret=...,再做 SHA1 并转大写。 - Webhook 验签:不包含
sign,也不包含appkey,剩余字段按 ASCII 顺序排序,数组 / 对象使用JSON.stringify,最后追加&secret=...,再做 SHA1 并转大写。
实现见 lib/eiotclub.ts。
连通性测试脚本
在 VM 环境变量和白名单都准备好之后,执行:
npx tsx scripts/test-eiotclub-connection.ts
# 或
npm run eiotclub:connection-test
脚本会做两件事:
- 用文档里的 golden sample 做签名自检。
- 使用第一张测试 ICCID 发起一次真实的
getCardInfo请求。
Smoke 脚本
只读检查可使用:
npm run eiotclub:smoke -- account-balance
npm run eiotclub:smoke -- card-count
npm run eiotclub:smoke -- cards --page 1 --size 5
npm run eiotclub:smoke -- card --iccid 8910300000050270479