# 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-Type:application/json 请求体参数: - identifier(string,必填)- 资产标识符(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 登录) - **认证**:无需登录 --- ## 请求参数 ### Body(application/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-Type:application/json 请求体参数: - phone(string,必填)- 手机号(11位) - scene(string,必填)- 业务场景(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 Token(JWT) - Content-Type:application/json 请求体参数: - phone(string,必填)- 手机号(11位) - code(string,必填)- 验证码(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 Token(JWT) - Content-Type:application/json 请求体参数: - old_phone(string,必填)- 旧手机号(11位) - old_code(string,必填)- 旧手机号验证码(6位) - new_phone(string,必填)- 新手机号(11位) - new_code(string,必填)- 新手机号验证码(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 Token(JWT) 请求示例: (无请求体) 成功响应示例: { "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 参数: identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: /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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - page(integer,必填)- 页码 - page_size(integer,必填)- 每页数量 - package_type(string,可选)- 套餐类型 (formal:正式套餐, addon:加油包) - status(integer,必填)- 套餐状态 (0:待生效, 1:生效中, 2:已用完, 3:已过期, 4:已失效) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 Token(JWT) - Content-Type:application/json 请求体参数: - identifier(string,必填)- 资产标识符(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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 Token(JWT) - Content-Type:application/json 请求体参数: - identifier(string,必填)- 资产标识符(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 Token(JWT) - Content-Type:application/json 请求体参数: - identifier(string,必填)- 资产标识符(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 Token(JWT) - Content-Type:application/json 请求体参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - target_iccid(string,必填)- 目标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 Token(JWT) - Content-Type:application/json 请求体参数: - enabled(boolean,必填)- 是否启用WiFi - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - password(string,必填)- WiFi密码 - ssid(string,必填)- 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 参数: - id(integer,必填)- 换货单ID 请求说明: - 请求方式:POST - 认证方式:Bearer Token(JWT) - Content-Type:application/json 请求体参数: - recipient_address(string,必填)- 收货地址 - recipient_name(string,必填)- 收件人姓名 - recipient_phone(string,必填)- 收件人电话 请求示例: { "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 参数: - identifier(string,必填)- 资产标识符(ICCID/虚拟号/IMEI/SN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - payment_status(integer,选填)- 支付状态(0:待支付, 1:已支付, 2:已取消) - page(integer,必填)- 页码 - page_size(integer,必填)- 每页数量 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - id(integer,必填)- 订单ID 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 Token(JWT) - Content-Type:application/json 请求体参数: - app_type(string,必填)- 应用类型(official_account:公众号, miniapp:小程序) - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - package_ids(array,必填)- 套餐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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - iccid(string,选填)- 物联网卡ICCID 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 Token(JWT) - Content-Type:application/json 请求体参数: - amount(integer,必填)- 充值金额(分) - app_type(string,必填)- 应用类型(official_account:公众号, miniapp:小程序) - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - payment_method(string,必填)- 支付方式(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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - status(integer,选填)- 充值状态(0:待支付, 1:已支付, 2:已关闭) - page(integer,必填)- 页码 - page_size(integer,必填)- 每页数量 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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 参数: - identifier(string,必填)- 资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN) - transaction_type(string,选填)- 流水类型 - start_time(string,选填)- 开始时间 - end_time(string,选填)- 结束时间 - page(integer,必填)- 页码 - page_size(integer,必填)- 每页数量 请求说明: - 请求方式:GET - 认证方式:Bearer Token(JWT) 请求示例: 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:流水类型