Files
device-voice-h5/docs/API.md
sexygoat 3f997063f4
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 1m37s
fix: 优化体验
2026-05-09 16:14:06 +08:00

1370 lines
30 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BaseUrl: https://cmp-api.xm-iot.cn
错误响应示例:
{
"code": 1001,
"msg": "参数验证失败",
"data": {},
"timestamp": "2026-03-20T10:00:00Z"
}
# 2. 认证
## 2.1 资产验证
URL
POST /api/c/v1/auth/verify-asset
请求说明:
- 请求方式POST
- 认证方式:无需认证
- Content-Typeapplication/json
请求体参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求示例:
{
"identifier": "1234567890"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"asset_token": "asset_token_example",
"expires_in": 300
}
}
字段说明:
data
- asset_token资产令牌5分钟有效
- expires_in过期时间
## 2.2 公众号登录接口
## 接口信息
- **路径**`POST /api/c/v1/auth/wechat-login`
- **说明**:公众号登录(通过微信 OAuth code 登录)
- **认证**:无需登录
---
## 请求参数
### Bodyapplication/json
```json
{
"asset_token": "string",
"code": "string"
}
```
---
## 参数说明
| 字段 | 必填 | 说明 |
|------|------|------|
| asset_token | 是 | A1 返回的资产令牌 |
| code | 是 | 微信 OAuth 授权码 | wxea8c599fe100ce8a 先临时用这个
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"timestamp": "2026-04-01T10:00:00Z",
"data": {
"is_new_user": false,
"need_bind_phone": false,
"token": "jwt_token"
}
}
```
---
## data 字段说明
| 字段 | 说明 |
|------|------|
| is_new_user | 是否新用户 |
| need_bind_phone | 是否需要绑定手机号 |
| token | 登录后的 JWT Token |
## 2.3 发送验证码
URL
POST /api/c/v1/auth/send-code
请求说明:
- 请求方式POST
- 认证方式:无需认证
- Content-Typeapplication/json
请求体参数:
- phonestring必填- 手机号11位
- scenestring必填- 业务场景bind_phone:绑定手机号, change_phone_old:换绑旧手机, change_phone_new:换绑新手机)
请求示例:
{
"phone": "13800138000",
"scene": "bind_phone"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"cooldown_seconds": 60
}
}
字段说明:
data
- cooldown_seconds冷却秒数
## 2.4 绑定手机号
URL
POST /api/c/v1/auth/bind-phone
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- phonestring必填- 手机号11位
- codestring必填- 验证码6位
请求示例:
{
"phone": "13800138000",
"code": "123456"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"phone": "13800138000",
"bound_at": "2026-03-20T10:00:00Z"
}
}
字段说明:
data
- phone已绑定手机号
- bound_at绑定时间
## 2.5 更换手机号
URL
POST /api/c/v1/auth/change-phone
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- old_phonestring必填- 旧手机号11位
- old_codestring必填- 旧手机号验证码6位
- new_phonestring必填- 新手机号11位
- new_codestring必填- 新手机号验证码6位
请求示例:
{
"old_phone": "13800138000",
"old_code": "123456",
"new_phone": "13900139000",
"new_code": "654321"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"phone": "13900139000",
"changed_at": "2026-03-20T10:00:00Z"
}
}
字段说明:
data
- phone换绑后手机号
- changed_at换绑时间
## 2.6 退出登录
URL
POST /api/c/v1/auth/logout
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
请求示例:
(无请求体)
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"success": true
}
}
字段说明:
data
- success是否成功
url: /api/c/v1/asset/info
请求地址的响应发生变化, 请根据变化来调整首页里面的数据 我有在响应后面加了注释
然后到期时间: 拿的是 资产套餐历史 列表里面的 "status_name": "生效中",expires_at
```json
{
"code": 0,
"data": {
"asset_type": "device", // isDevice: true, 如果是device就是true
"asset_id": 1,
"identifier": "862639070804960", // 当前卡
"virtual_no": "862639070804960",
"status": 1, // 状态 到期时间右边那个
"real_name_status": 0, // 实名状态
"carrier_name": "", // 运营商
"generation": "1",
"wallet_balance": 0,
"current_package": "",
"package_total_mb": 0,
"package_used_mb": 0,
"package_remain_mb": 0,
"device_name": "WiFi1",
"imei": "862639070804960",
"device_model": "WM-2000",
"device_type": "WiFi",
"manufacturer": "华为",
"max_sim_slots": 4,
"bound_card_count": 1,
"cards": [
{
"card_id": 5,
"iccid": "89860441192590297661",
"msisdn": "13800138000",
"network_status": 0,
"real_name_status": 0,
"slot_position": 1,
"is_current": false
}
],
"device_protect_status": "none",
"device_realtime": {
"gateway_msg": null,
"online_status": 1, // 在线状态1:在线, 2:离线)
"battery_level": 100, // 设备电量
"status": 0,
"run_time": "527020",
"connect_time": "239077",
"rsrp": -78, // 根据这三个计算出网络信号
"rsrq": -9, // 根据这三个计算出网络信号
"rssi": "-47", // 根据这三个计算出网络信号
"sinr": 12,
"ssid": "MiFi-DA78", // WiFi名称
"wifi_enabled": true,
"wifi_password": "1234567890", // WiFi密码
"wan_ip": "10.99.164.211",
"lan_ip": "192.168.1.1", // 点击后台管理
"mac_address": "60:83:e2:01:da:78",
"daily_usage": "3321987788",
"dl_stats": "0",
"ul_stats": "0",
"limit_speed": 0,
"max_clients": 1, // 放到连接数里面 现在换成 client_number/max_clients
"client_number": 1, // 已连接数 现在换成 client_number/max_clients
"software_version": "LBF2AKAS01070_N20_8_ESIM_V001",
"sync_interval": 120,
"device_id": "862639070804960",
"imei": "862639070804960",
"imsi": "460068049567506"
}
},
"msg": "success",
"timestamp": "2026-03-30T09:21:25+08:00"
}
```
# 3. 资产
## 3.1 资产信息
URL
GET /api/c/v1/asset/info
更新说明2026-05-08
* 本月流量展示以该接口返回字段为准
* 总流量:`real_total_mb`
* 已使用:`enable_virtual_data=true` 时取 `virtual_used_mb`,否则取 `real_used_mb`
* 剩余:`real_total_mb - 已使用`
* 进度条:`已使用 / real_total_mb`
Query 参数:
identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
/api/c/v1/asset/info?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"asset_id": 1,
"asset_type": "device",
"carrier_name": "中国移动",
"generation": "4G",
"identifier": "1234567890",
"real_name_status": 1,
"status": 1,
"virtual_no": "17000000000",
"wallet_balance": 1000
}
}
字段说明:
data
- asset_id资产ID
- asset_type资产类型card:卡, device:设备)
- carrier_name运营商名称
- generation制式
- identifier资产标识符
- real_name_status实名状态0:未实名, 1:已实名)
- status状态0:禁用, 1:启用)
- virtual_no虚拟号
- wallet_balance钱包余额
## 3.2 资产套餐历史
URL
GET /api/c/v1/asset/package-history
更新说明2026-05-08
* 涉及“本月流量”展示时,以 `/api/c/v1/asset/info` 的规则为准
* 旧说明中“启用虚流量时总流量/剩余切换为虚流量”的规则已废弃
* 当前规则:总流量固定取 `real_total_mb`,已使用按 `enable_virtual_data``virtual_used_mb` / `real_used_mb` 间切换,剩余和进度条按该结果计算
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- pageinteger必填- 页码
- page_sizeinteger必填- 每页数量
- package_typestring可选- 套餐类型 (formal:正式套餐, addon:加油包)
- statusinteger必填- 套餐状态 (0:待生效, 1:生效中, 2:已用完, 3:已过期, 4:已失效)
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/asset/package-history?identifier=1234567890&page=1&page_size=10
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"items": [
{
"activated_at": "2026-03-01T00:00:00Z",
"created_at": "2026-03-01T00:00:00Z",
"data_limit_mb": 10240,
"data_usage_mb": 2048,
"expires_at": "2026-03-31T23:59:59Z",
"master_usage_id": null,
"package_id": 1001,
"package_name": "10GB月套餐",
"package_type": "formal",
"package_usage_id": 5001,
"priority": 1,
"status": 1,
"enable_virtual_data": true,
"status_name": "生效中",
"usage_type": "single_card",
"virtual_limit_mb": 20480,
"virtual_ratio": 0.5,
"virtual_remain_mb": 16384,
"virtual_used_mb": 4096
}
],
"page": 1,
"page_size": 10,
"total": 1
}
}
字段说明:
data
- items套餐历史列表
- page页码
- page_size每页数量
- total总数
data.items[]
- activated_at激活时间待生效套餐为空
- created_at创建时间
- data_limit_mb套餐真流量总量(MB)
- data_usage_mb已用真流量(MB)
- expires_at到期时间待生效套餐为空
- master_usage_id主套餐ID加油包时有值
- package_id套餐ID
- package_name套餐名称
- package_type套餐类型formal 普通类型 / addon 加油包)
- package_usage_id套餐使用记录ID
- priority优先级
- status状态0待生效 1生效中 2已用完 3已过期 4已失效
- status_name状态名称
- usage_type使用类型single_card/device
- virtual_limit_mb套餐虚流量总量(MB)按virtual_ratio换算
- virtual_ratio虚流量比例(real/virtual)
- virtual_remain_mb剩余虚流量(MB)按virtual_ratio换算
- virtual_used_mb已用虚流量(MB)按virtual_ratio换算
- enable_virtual_data是否启用虚流量
* 如果启用了虚流量那么 本月流量展示的就是 套餐虚流量总量 剩余虚流量 已用虚流量 只是值用这些,已使用,总流量,剩余不要改
* 如果没有启用那就是 套餐真流量总量 已用真流量 剩余真流量(自己计算) 然后如果大于或者等于1024MB 转换成 GB
* 本月流量哪里需要调用这个接口,带上参数status: 1:生效中 只会有一个生效的
*
## 3.3 资产可购套餐列表
URL
GET /api/c/v1/asset/packages
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/asset/packages?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"packages": [
{
"cost_price": 1000,
"data_allowance": 10240,
"data_unit": "MB",
"description": "适用于日常上网使用",
"is_addon": false,
"package_id": 1001,
"package_name": "10GB月套餐",
"package_type": "formal",
"retail_price": 1500,
"validity_days": 30
}
]
}
}
字段说明:
data
- packages套餐列表
data.packages[]
- cost_price成本价
- data_allowance流量额度
- data_unit流量单位
- description套餐说明
- is_addon是否加油包
- package_id套餐ID
- package_name套餐名称
- package_type套餐类型formal:正式套餐, addon:加油包)
- retail_price零售价
- validity_days有效天数
## 3.4 资产刷新
URL
POST /api/c/v1/asset/refresh
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求示例:
{
"identifier": "1234567890"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"accepted": true,
"cooldown_seconds": 60,
"refresh_type": "device"
}
}
字段说明:
data
- accepted是否已受理
- cooldown_seconds冷却秒数
- refresh_type刷新类型card:卡, device:设备)
# 4. 设备
## 4.1 获取设备卡列表
URL
GET /api/c/v1/device/cards
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/device/cards?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"cards": [
{
"card_id": 1,
"carrier_name": "中国移动",
"iccid": "89860012345678901234",
"is_active": true,
"msisdn": "17000000000",
"network_status": "online",
"real_name_status": 1,
"slot_position": 1
}
]
}
}
字段说明:
data
- cards设备卡列表
data.cards[]
- card_id卡ID
- carrier_name运营商名称
- iccid物联网卡ICCID
- is_active是否当前激活卡
- msisdn手机号
- network_status网络状态
- real_name_status实名状态0:未实名, 1:已实名)
- slot_position插槽位置
## 4.2 恢复出厂设置
URL
POST /api/c/v1/device/factory-reset
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求示例:
{
"identifier": "1234567890"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"accepted": true,
"request_id": "req_123456789"
}
}
字段说明:
data
- accepted是否已受理
- request_id请求ID
## 4.3 设备重启
URL
POST /api/c/v1/device/reboot
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求示例:
{
"identifier": "1234567890"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"accepted": true,
"request_id": "req_123456789"
}
}
字段说明:
data
- accepted是否已受理
- request_id请求ID
## 4.4 设备切卡
URL
POST /api/c/v1/device/switch-card
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- target_iccidstring必填- 目标ICCID
请求示例:
{
"identifier": "1234567890",
"target_iccid": "89860012345678901234"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"accepted": true,
"target_iccid": "89860012345678901234"
}
}
字段说明:
data
- accepted是否已受理
- target_iccid目标ICCID
## 4.5 设备WiFi配置
URL
POST /api/c/v1/device/wifi
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- enabledboolean必填- 是否启用WiFi
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- passwordstring必填- WiFi密码
- ssidstring必填- WiFi名称
请求示例:
{
"enabled": true,
"identifier": "1234567890",
"password": "12345678",
"ssid": "MyWiFi"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"accepted": true,
"request_id": "req_123456789"
}
}
字段说明:
data
- accepted是否已受理
- request_id请求ID
# 5. 换货
## 5.1 提交收货信息
URL
POST /api/c/v1/exchange/{id}/shipping-info
Path 参数:
- idinteger必填- 换货单ID
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- recipient_addressstring必填- 收货地址
- recipient_namestring必填- 收件人姓名
- recipient_phonestring必填- 收件人电话
请求示例:
{
"recipient_address": "广东省深圳市南山区科技园1号",
"recipient_name": "张三",
"recipient_phone": "13800138000"
}
成功响应示例:
(接口文档未定义成功响应示例,通常为 200/204可根据后端实际返回补充
字段说明:
请求体:
- recipient_address收货地址
- recipient_name收件人姓名
- recipient_phone收件人电话
## 5.2 查询待处理换货单
URL
GET /api/c/v1/exchange/pending
Query 参数:
- identifierstring必填- 资产标识符ICCID/虚拟号/IMEI/SN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/exchange/pending?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"id": 1,
"exchange_no": "EX202603200001",
"exchange_reason": "设备故障",
"status": 1,
"status_text": "待填写信息",
"created_at": "2026-03-20T10:00:00Z"
}
}
字段说明:
data
- id换货单ID
- exchange_no换货单号
- exchange_reason换货原因
- status换货状态1:待填写信息, 2:待发货, 3:已发货待确认, 4:已完成, 5:已取消)
- status_text换货状态文本
- created_at创建时间
# 6. 订单
## 6.1 订单列表
URL
GET /api/c/v1/orders
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- payment_statusinteger选填- 支付状态0:待支付, 1:已支付, 2:已取消)
- pageinteger必填- 页码
- page_sizeinteger必填- 每页数量
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/orders?identifier=1234567890&payment_status=1&page=1&page_size=10
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"items": [
{
"created_at": "2026-03-20T10:00:00Z",
"order_id": 1,
"order_no": "ORD202603200001",
"package_names": [
"10GB月套餐",
"5GB加油包"
],
"payment_status": 1,
"total_amount": 2500
}
],
"page": 1,
"page_size": 10,
"total": 1
}
}
字段说明:
data
- items订单列表
- page页码
- page_size每页数量
- total总数
data.items[]
- created_at创建时间
- order_id订单ID
- order_no订单号
- package_names套餐名称列表
- payment_status支付状态0:待支付, 1:已支付, 2:已取消)
- total_amount订单总金额
## 6.2 订单详情
URL
GET /api/c/v1/orders/{id}
Path 参数:
- idinteger必填- 订单ID
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/orders/1
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"completed_at": "2026-03-20T10:30:00Z",
"created_at": "2026-03-20T10:00:00Z",
"order_id": 1,
"order_no": "ORD202603200001",
"packages": [
{
"package_id": 1001,
"package_name": "10GB月套餐",
"package_type": "formal",
"price": 1500,
"quantity": 1
},
{
"package_id": 1002,
"package_name": "5GB加油包",
"package_type": "addon",
"price": 1000,
"quantity": 1
}
],
"paid_at": "2026-03-20T10:05:00Z",
"payment_method": "wechat",
"payment_status": 1,
"total_amount": 2500
}
}
字段说明:
data
- completed_at完成时间
- created_at创建时间
- order_id订单ID
- order_no订单号
- packages订单套餐列表
- paid_at支付时间
- payment_method支付方式
- payment_status支付状态0:待支付, 1:已支付, 2:已取消)
- total_amount订单总金额
data.packages[]
- package_id套餐ID
- package_name套餐名称
- package_type套餐类型formal:正式套餐, addon:加油包)
- price单价
- quantity数量
## 6.3 创建订单
URL
POST /api/c/v1/orders/create
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- app_typestring必填- 应用类型official_account:公众号, miniapp:小程序)
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- package_idsarray<integer>,必填)- 套餐ID列表
请求示例:
{
"app_type": "miniapp",
"identifier": "1234567890",
"package_ids": [1001, 1002]
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"linked_package_info": {
"force_recharge_amount": 500,
"package_names": [
"10GB月套餐",
"5GB加油包"
],
"total_package_amount": 2500,
"wallet_credit": 300
},
"order": {
"created_at": "2026-03-20T10:00:00Z",
"order_id": 1,
"order_no": "ORD202603200001",
"payment_status": 0,
"total_amount": 2200
},
"order_type": "package",
"pay_config": {
"app_id": "wx1234567890",
"nonce_str": "randomstring",
"package": "prepay_id=wx201410272009395522657a690389285100",
"pay_sign": "SIGNATURE",
"sign_type": "RSA",
"timestamp": "1710928800"
},
"recharge": {
"amount": 500,
"auto_purchase_status": "enabled",
"recharge_id": 10,
"recharge_no": "RC202603200001",
"status": 0
}
}
}
字段说明:
data
- linked_package_info关联套餐信息
- order订单信息
- order_type订单类型package:套餐订单, recharge:充值订单)
- pay_config支付配置
- recharge充值信息
data.linked_package_info
- force_recharge_amount强制充值金额
- package_names套餐名称列表
- total_package_amount套餐总金额
- wallet_credit钱包抵扣金额
data.order
- created_at创建时间
- order_id订单ID
- order_no订单号
- payment_status支付状态0:待支付, 1:已支付, 2:已取消)
- total_amount订单总金额
data.pay_config
- app_id应用ID
- nonce_str随机字符串
- package预支付参数
- pay_sign支付签名
- sign_type签名类型
- timestamp时间戳
data.recharge
- amount充值金额
- auto_purchase_status自动购包状态
- recharge_id充值ID
- recharge_no充值单号
- status状态0:待支付, 1:已支付, 2:已关闭)
# 7. 实名
## 7.1 获取实名认证链接
URL
GET /api/c/v1/realname/link
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- iccidstring选填- 物联网卡ICCID
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/realname/link?identifier=1234567890&iccid=89860012345678901234
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"card_info": {
"iccid": "89860012345678901234",
"msisdn": "17000000000",
"virtual_no": "17100000000"
},
"expire_at": "2026-03-20T10:30:00Z",
"realname_mode": "gateway",
"realname_url": "https://example.com/realname/verify"
}
}
字段说明:
data
- card_info卡片简要信息
- expire_at过期时间
- realname_mode实名模式none:无需实名, template:模板实名, gateway:网关实名)
- realname_url实名链接
data.card_info
- iccid物联网卡ICCID
- msisdn手机号
- virtual_no虚拟号
# 8. 钱包
## 8.1 钱包详情
URL
GET /api/c/v1/wallet/detail
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/wallet/detail?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"balance": 10000,
"frozen_balance": 500,
"resource_id": 1,
"resource_type": "device",
"updated_at": "2026-03-20T10:00:00Z",
"wallet_id": 101
}
}
字段说明:
data
- balance可用余额
- frozen_balance冻结余额
- resource_id资源ID
- resource_type资源类型iot_card:物联网卡, device:设备)
- updated_at更新时间
- wallet_id钱包ID
## 8.2 创建充值订单
URL
POST /api/c/v1/wallet/recharge
请求说明:
- 请求方式POST
- 认证方式Bearer TokenJWT
- Content-Typeapplication/json
请求体参数:
- amountinteger必填- 充值金额(分)
- app_typestring必填- 应用类型official_account:公众号, miniapp:小程序)
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- payment_methodstring必填- 支付方式wechat:微信支付)
请求示例:
{
"amount": 1000,
"app_type": "miniapp",
"identifier": "1234567890",
"payment_method": "wechat"
}
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"pay_config": {
"app_id": "wx1234567890",
"nonce_str": "randomstring",
"package": "prepay_id=wx201410272009395522657a690389285100",
"pay_sign": "SIGNATURE",
"sign_type": "RSA",
"timestamp": "1710928800"
},
"recharge": {
"amount": 1000,
"recharge_id": 1,
"recharge_no": "RC202603200001",
"status": 0
}
}
}
字段说明:
data
- pay_config支付配置
- recharge充值信息
data.pay_config
- app_id应用ID
- nonce_str随机字符串
- package预支付参数
- pay_sign支付签名
- sign_type签名类型
- timestamp时间戳
data.recharge
- amount充值金额
- recharge_id充值ID
- recharge_no充值单号
- status状态0:待支付, 1:已支付, 2:已关闭)
## 8.3 充值前校验
URL
GET /api/c/v1/wallet/recharge-check
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/wallet/recharge-check?identifier=1234567890
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"force_recharge_amount": 1000,
"max_amount": 100000,
"message": "当前资产需先充值后再进行相关操作",
"min_amount": 100,
"need_force_recharge": true,
"trigger_type": "low_balance"
}
}
字段说明:
data
- force_recharge_amount强制充值金额
- max_amount最大充值金额
- message提示信息
- min_amount最小充值金额
- need_force_recharge是否需要强制充值
- trigger_type触发类型
## 8.4 充值记录列表
URL
GET /api/c/v1/wallet/recharges
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- statusinteger选填- 充值状态0:待支付, 1:已支付, 2:已关闭)
- pageinteger必填- 页码
- page_sizeinteger必填- 每页数量
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/wallet/recharges?identifier=1234567890&status=1&page=1&page_size=10
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"items": [
{
"amount": 1000,
"auto_purchase_status": "enabled",
"created_at": "2026-03-20T10:00:00Z",
"payment_method": "wechat",
"recharge_id": 1,
"recharge_no": "RC202603200001",
"status": 1
}
],
"page": 1,
"page_size": 10,
"total": 1
}
}
字段说明:
data
- items充值记录列表
- page页码
- page_size每页数量
- total总数
data.items[]
- amount充值金额
- auto_purchase_status自动购包状态
- created_at创建时间
- payment_method支付方式
- recharge_id充值ID
- recharge_no充值单号
- status状态0:待支付, 1:已支付, 2:已关闭)
## 8.5 钱包流水列表
URL
GET /api/c/v1/wallet/transactions
Query 参数:
- identifierstring必填- 资产标识符SN/IMEI/虚拟号/ICCID/MSISDN
- transaction_typestring选填- 流水类型
- start_timestring选填- 开始时间
- end_timestring选填- 结束时间
- pageinteger必填- 页码
- page_sizeinteger必填- 每页数量
请求说明:
- 请求方式GET
- 认证方式Bearer TokenJWT
请求示例:
GET /api/c/v1/wallet/transactions?identifier=1234567890&transaction_type=recharge&start_time=2026-03-01T00:00:00Z&end_time=2026-03-20T23:59:59Z&page=1&page_size=10
成功响应示例:
{
"code": 0,
"msg": "success",
"timestamp": "2026-03-20T10:00:00Z",
"data": {
"items": [
{
"amount": 1000,
"balance_after": 5000,
"created_at": "2026-03-20T10:00:00Z",
"remark": "钱包充值",
"transaction_id": 1,
"type": "recharge"
}
],
"page": 1,
"page_size": 10,
"total": 1
}
}
字段说明:
data
- items流水列表
- page页码
- page_size每页数量
- total总数
data.items[]
- amount变动金额
- balance_after变动后余额
- created_at创建时间
- remark备注
- transaction_id流水ID
- type流水类型