水机类 SIM 卡充值 — 前端 API 文档
对接流程
- 商用水机(机主中心):SIM卡列表 / 设备的SIM卡 → 创建充值订单(可多选)→ 拿
order_ids走商城标准订单支付页 → 充值记录 - 家用水机、厨下水机(设备中心):查看SIM卡 → 创建充值订单(按设备)→ 拿
order_ids走商城标准订单支付页 → 充值记录
通用说明
- 所有接口都要求会员已登录。返回
result=1为成功,result=0为失败,失败原因在msg里,直接提示给用户即可。 - SIM 卡有两个到期时间:机主到期时间
owner_expire_at(商城,机主每充值一次按"单次充值天数"顺延)和平台到期时间platform_expire_at(中台)。任一到期设备都不可用。 -
expire_at是有效到期时间 = 两者中较早的那个,页面上的"到期时间/有效期"直接显示它;expire_status也按它计算。expire_warn=true(已到期或剩余 ≤10 天)时日期标红。 - 支付:创建订单返回
order_ids(多个用英文逗号分隔),跳转商城标准订单支付页,和普通商品下单后的支付一致(支付页调用order.merge-pay,参数order_ids)。SIM 充值订单不会出现在"我的订单"里,也不支持退款。 - 支付成功后系统自动向平台续费,一般几十秒内完成。期间充值记录显示"处理中",SIM 卡的
renewing=true,这时不能重复充值。续费失败会原路退款,记录显示"失败(已退款)"。 - 商用水机和家用、厨下的接口不同。家用和厨下共用同一套接口,只是路由的插件名不一样。
一、商用水机
1. SIM卡列表
简要描述:
机主名下所有设备的 SIM 卡列表(原型:SIM卡管理)。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认1 |
| page_size | int | 否 | 每页条数,默认15 |
| sim_no | string | 否 | SIM卡号,模糊搜索 |
返回示例:
正确时返回:
{
"result": 1,
"msg": "ok",
"data": {
"current_page": 1,
"data": [
{
"sim_no": "89860861TEST00000603",
"device_id": 3,
"device_no": "860000000000603",
"device_name": "SIM测试商用3",
"address": "南山区测试路3号",
"city": "深圳",
"status": "未激活",
"operator": "中国电信",
"month_usage": "0.00",
"expire_at": "2026-09-20 17:56:52",
"expire_warn": true,
"expire_status": "expired",
"expire_status_text": "已到期",
"owner_expire_at": "2026-09-20 17:56:52",
"platform_expire_at": "2027-09-20 17:56:52",
"recharge_amount": "50.00",
"recharge_days": 365,
"can_recharge": false,
"renewing": false
},
{
"sim_no": "89860861TEST00000601",
"device_id": 1,
"device_no": "860000000000601",
"device_name": "SIM测试商用1",
"address": "天河区测试路1号",
"city": "广州",
"status": "已激活",
"operator": "中国移动",
"month_usage": "12.50",
"expire_at": "2030-09-27 17:56:52",
"expire_warn": false,
"expire_status": "normal",
"expire_status_text": "正常",
"owner_expire_at": "2026-09-20 17:56:52",
"platform_expire_at": "2027-09-20 17:56:52",
"recharge_amount": "45.00",
"recharge_days": 365,
"can_recharge": true,
"renewing": false
}
],
"first_page_url": "http://xx.com?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://xx.com?page=1",
"next_page_url": null,
"path": "http://xx.com",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2
}
}
错误时返回:
{
"result": 0,
"msg": "您还不是机主, 请先申请机主!",
"data": []
}
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| total | int | 总条数 |
| per_page | int | 每页条数 |
| current_page | int | 当前页 |
| last_page | int | 最后一页 |
| data | array | SIM卡列表 |
| data[].sim_no | string | SIM卡号,创建充值订单时传这个 |
| data[].device_id | int | 设备ID |
| data[].device_no | string | 设备号 |
| data[].device_name | string | 设备名称 |
| data[].address | string | 设备地址 |
| data[].city | string | 设备所在城市,原型"(中国移动 广州)"里的城市 |
| data[].status | string | SIM卡状态:已激活 / 未激活 |
| data[].operator | string | 运营商 |
| data[].month_usage | string | 本月用量(MB) |
| data[].expire_at | string | 有效到期时间(机主到期、平台到期中较早的一个),页面显示的"有效期/到期时间",未设置时为空字符串 |
| data[].expire_warn | bool | 是否标红:已到期或剩余≤10天 |
| data[].expire_status | string | 到期状态(按 expire_at):normal正常 / soon即将到期 / expired已到期 / unset未设置;expired 时设备不可用 |
| data[].expire_status_text | string | 到期状态文字 |
| data[].owner_expire_at | string | 机主到期时间(商城) |
| data[].platform_expire_at | string | 平台到期时间(中台) |
| data[].recharge_amount | string | 单次充值金额(元) |
| data[].recharge_days | int | 单次充值天数(后台"激活一次有效天数",默认365),充值一次机主到期顺延这么多天 |
| data[].can_recharge | bool | 能否充值,false 时置灰充值按钮 |
| data[].renewing | bool | 是否有续费处理中的订单,true 时提示"续费处理中" |
2. 设备的SIM卡
简要描述:
设备管理 → 查看sim卡弹窗,查询一台设备绑定的 SIM 卡。设备没绑卡时 data 为 null,前端提示"该设备未绑定SIM卡"。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| device_id | int | 是 | 设备ID |
返回示例:
正确时返回:
{
"result": 1,
"msg": "ok",
"data": {
"sim_no": "89860861TEST00000601",
"device_id": 1,
"device_no": "860000000000601",
"device_name": "SIM测试商用1",
"address": "天河区测试路1号",
"city": "广州",
"status": "已激活",
"operator": "中国移动",
"month_usage": "12.50",
"expire_at": "2030-09-27 17:56:52",
"expire_warn": false,
"expire_status": "normal",
"expire_status_text": "正常",
"owner_expire_at": "2026-09-20 17:56:52",
"platform_expire_at": "2027-09-20 17:56:52",
"recharge_amount": "45.00",
"recharge_days": 365,
"can_recharge": true,
"renewing": false
}
}
错误时返回:
{
"result": 0,
"msg": "设备不存在",
"data": []
}
返回参数说明:
同「1. SIM卡列表」的 data[] 字段。弹窗展示:卡号 sim_no、状态 status、运营商 operator、本月用量 month_usage、到期时间 expire_at。
3. 创建充值订单
简要描述:
SIM卡管理页勾选一张或多张卡后充值。每张卡生成一个订单,返回的 order_ids 一起传给标准支付页合并支付。金额由服务端按卡计算,前端不需要传金额。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| sim_nos | array | 是 | SIM卡号数组,1~20张,如 sim_nos[]=898...601&sim_nos[]=898...602;也支持逗号分隔的字符串 |
返回示例:
正确时返回:
{
"result": 1,
"msg": "成功",
"data": {
"order_ids": "231494,231495",
"amount": "95.00"
}
}
错误时返回:
{
"result": 0,
"msg": "SIM卡89860861TEST00000603暂不支持续费,请联系平台",
"data": []
}
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| order_ids | string | 订单ID,多个用英文逗号分隔,传给标准支付页 |
| amount | string | 本次应付总金额(元) |
常见错误 msg:请选择SIM卡 / 单次最多充值20张 / SIM卡xxx不存在 / SIM卡xxx不属于您的设备 / SIM卡xxx暂不支持续费,请联系平台 / SIM卡xxx续费处理中,请稍后再试 / SIM卡充值订单金额异常,请联系平台
4. 充值记录
简要描述:
机主的 SIM 卡缴费记录(原型:SIM卡缴费记录)。只返回已支付的记录,未支付和已取消的不返回。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认1 |
| page_size | int | 否 | 每页条数,默认15 |
| sim_no | string | 否 | SIM卡号,模糊搜索 |
返回示例:
正确时返回:
{
"result": 1,
"msg": "ok",
"data": {
"current_page": 1,
"data": [
{
"id": 4,
"sim_no": "89860861TEST00000602",
"device_no": "860000000000602",
"device_name": "SIM测试商用2",
"amount": "50.00",
"pay_type_name": "余额",
"days": 365,
"paid_at": "2026-09-23 18:17:24",
"status": 3,
"status_text": "失败(已退款)",
"remark": "中台续费失败:SIM卡充值失败:该SIM卡未设置续费金额,请联系运营人员设置后再充值"
},
{
"id": 3,
"sim_no": "89860861TEST00000601",
"device_no": "860000000000601",
"device_name": "SIM测试商用1",
"amount": "45.00",
"pay_type_name": "余额",
"days": 365,
"paid_at": "2026-09-23 18:16:45",
"status": 2,
"status_text": "成功",
"remark": ""
}
],
"first_page_url": "http://xx.com?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://xx.com?page=1",
"next_page_url": null,
"path": "http://xx.com",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2
}
}
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| total | int | 总条数 |
| data | array | 记录列表 |
| data[].id | int | 记录ID |
| data[].sim_no | string | SIM卡号 |
| data[].device_no | string | 设备号 |
| data[].device_name | string | 设备名称 |
| data[].amount | string | 支付金额(元) |
| data[].pay_type_name | string | 支付方式 |
| data[].days | int | 本次充值顺延的机主到期天数 |
| data[].paid_at | string | 充值时间 |
| data[].status | int | 状态:1处理中 / 2成功 / 3失败(已退款) / 4失败(请联系客服) |
| data[].status_text | string | 状态文字,直接展示;原型里"成功"用绿色,"失败"用红色 |
| data[].remark | string | 失败原因,可不展示 |
二、家用水机 / 厨下水机
两个插件的接口完全一样,只是路由里的插件名不同:
| 插件 | 路由前缀 |
|---|---|
| 家用水机 | plugin.yz-supply-home-water-machin.frontend.sim. |
| 厨下水机 | plugin.yz-supply-under-sink-machine.frontend.sim. |
下面的示例以厨下水机为例。
5. 查看SIM卡
简要描述:
设备中心 → 查看sim卡弹窗(原型:卡号、状态、运营商、本月用量、到期时间、单次充值金额、单次充值天数、充值按钮)。设备没绑卡时 data 为 null。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| device_id | int | 是 | 设备ID |
返回示例:
正确时返回:
{
"result": 1,
"msg": "ok",
"data": {
"sim_no": "89860862TEST00000701",
"device_id": 1,
"device_no": "860000000000701",
"device_name": "SIM测试厨下1",
"address": "天河区测试路7号",
"location_name": "广州站",
"status": "已激活",
"operator": "中国移动",
"month_usage": "5.00",
"expire_at": "2029-11-21 17:56:52",
"expire_warn": false,
"expire_status": "normal",
"expire_status_text": "正常",
"owner_expire_at": "2026-09-20 17:56:52",
"platform_expire_at": "2027-09-20 17:56:52",
"recharge_amount": "40.00",
"recharge_days": 365,
"can_recharge": true,
"renewing": false
}
}
错误时返回:
{
"result": 0,
"msg": "设备不存在",
"data": []
}
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| sim_no | string | 卡号 |
| device_id | int | 设备ID |
| device_no | string | 设备IMEI |
| device_name | string | 设备名称 |
| address | string | 安装地址 |
| location_name | string | 场所名称 |
| status | string | SIM卡状态:已激活 / 未激活 |
| operator | string | 运营商 |
| month_usage | string | 本月用量(MB) |
| expire_at | string | 有效到期时间(机主到期、平台到期中较早的一个),弹窗里的"到期时间"显示它,未设置时为空字符串 |
| expire_warn | bool | 是否标红:已到期或剩余≤10天 |
| expire_status | string | 到期状态(按 expire_at):normal正常 / soon即将到期 / expired已到期 / unset未设置;expired 时设备不可用 |
| expire_status_text | string | 到期状态文字 |
| owner_expire_at | string | 机主到期时间(商城) |
| platform_expire_at | string | 平台到期时间(中台) |
| recharge_amount | string | 单次充值金额(元) |
| recharge_days | int | 单次充值天数(后台"激活一次有效天数",默认365),充值一次机主到期顺延这么多天 |
| can_recharge | bool | 能否充值,false 时置灰充值按钮 |
| renewing | bool | 是否有续费处理中的订单,true 时提示"续费处理中" |
6. 创建充值订单
简要描述:
查看sim卡弹窗点"充值",按设备下单(一张卡一个订单),返回 order_ids 跳转标准支付页。金额由服务端计算。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| device_id | int | 是 | 设备ID |
返回示例:
正确时返回:
{
"result": 1,
"msg": "成功",
"data": {
"order_ids": "231496",
"amount": "40.00"
}
}
错误时返回:
{
"result": 0,
"msg": "该设备未绑定SIM卡",
"data": []
}
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| order_ids | string | 订单ID,传给标准支付页 |
| amount | string | 应付金额(元) |
常见错误 msg:设备不存在 / 该设备未绑定SIM卡 / 该SIM卡暂不支持续费,请联系平台 / 该SIM卡未设置充值金额,请联系平台 / SIM卡续费处理中,请稍后再试 / SIM卡充值订单金额异常,请联系平台
7. 充值记录
简要描述:
设备中心 → SIM卡缴费记录。只返回已支付的记录。
请求域名:
- http://xx.com
请求路由:
请求参数说明:
| 参数名 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认1 |
| page_size | int | 否 | 每页条数,默认15 |
| sim_no | string | 否 | SIM卡号,模糊搜索 |
返回示例:
正确时返回:
{
"result": 1,
"msg": "ok",
"data": {
"current_page": 1,
"data": [
{
"id": 1,
"sim_no": "89860862TEST00000701",
"device_no": "860000000000701",
"device_name": "SIM测试厨下1",
"amount": "40.00",
"pay_type_name": "余额",
"days": 365,
"paid_at": "2026-09-24 08:51:41",
"status": 2,
"status_text": "成功",
"remark": ""
}
],
"first_page_url": "http://xx.com?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://xx.com?page=1",
"next_page_url": null,
"path": "http://xx.com",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1
}
}
返回参数说明:
同「4. 充值记录」。