跳到主要内容

EIOTCLUB 接入说明

环境变量

请在 VM 的 /opt/aovis/aovis-store-staging/.env.production 中配置:

  • EIOTCLUB_APP_KEY
  • EIOTCLUB_SECRET
  • EIOTCLUB_BASE_URL=https://oapi.eiotclub.com
  • EIOTCLUB_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 请求签名:包含 appkeytimestampnonce 和业务参数,按 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

脚本会做两件事:

  1. 用文档里的 golden sample 做签名自检。
  2. 使用第一张测试 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