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

30 KiB
Raw Blame History

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

{
  "asset_token": "string",
  "code": "string"
}

参数说明

字段 必填 说明
asset_token A1 返回的资产令牌
code 微信 OAuth 授权码

返回结构

{
  "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

{
  "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_datavirtual_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必填- 套餐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流水类型