# device/task/{taskId} - 查询任务 ## 概述 任务查询API用于查询设备任务的执行状态和详情。通过绑定/解绑接口获取的任务ID,可以使用本接口查询任务进度。 ### 用户使用场景 本接口用于: - 查询VCC卡绑定任务的状态 - 查询VCC卡解绑任务的状态 - 查询支付任务的状态 - 获取任务的详细信息和设备状态 ## 请求说明 | 项目 | 值 | |------|-----| | **请求地址** | `https://${endpoint}/device/task/{taskId}` | | **请求方法** | GET | | **注意事项** | taskId从绑定/解绑接口返回中获取 | ### Header 参数 | 参数名称 | 类型 | 是否必选 | 示例值 | 说明 | |----------|------|----------|--------|------| | client-key | String | 是 | xxxxx | 联系我们获取生产环境 key | | client-secret | String | 是 | xxxxx | 联系我们获取生产环境 secret | ### URL 参数 | 参数名称 | 类型 | 是否必选 | 示例值 | 说明 | |----------|------|----------|--------|------| | taskId | String | 是 | "task-bind-123456" | 任务ID,从绑定/解绑接口返回 | ## 返回参数 成功时返回任务详情: ```json { "deviceId": "device-001", "deviceStatus": "ONLINE", "task": { "taskId": "task-bind-123456", "taskType": "BIND_VCC", "status": "PROCESSING", "createTime": "2025-01-15T10:30:00Z", "updateTime": "2025-01-15T10:35:00Z", "deviceId": "device-001", "orderId": null, "creditCard": { "cardNumber": "424242******4242", "cvv": "***", "expiryDate": "12/25" }, "orderDetail": null } } ``` | 参数名称 | 类型 | 说明 | |----------|------|------| | deviceId | String | 执行任务的设备ID | | deviceStatus | String | 设备状态:ONLINE=在线,OFFLINE=离线 | | task | Object | 任务详细信息 | ### Task 任务信息 | 参数名称 | 类型 | 说明 | |----------|------|------| | taskId | String | 任务ID | | taskType | String | 任务类型:BIND_VCC=绑定VCC卡,UNBIND_VCC=解绑VCC卡,PAYMENT=支付 | | status | String | 任务状态:PENDING=等待中,PROCESSING=处理中,COMPLETED=已完成,FAILED=失败 | | createTime | String | 创建时间(ISO 8601格式) | | updateTime | String | 更新时间(ISO 8601格式) | | deviceId | String | 设备ID | | orderId | String | 订单ID(仅PAYMENT类型任务) | | creditCard | Object | 信用卡信息(仅BIND_VCC类型任务,脱敏显示) | | orderDetail | String | 订单详情(仅PAYMENT类型任务) | ## 业务案例 ### 查询绑定任务状态 ### 请求 ```bash curl -X GET "https://${endpoint}/device/task/task-bind-123456" \ -H "client-key: your_key" \ -H "client-secret: your_secret" ``` ### 响应 - 任务处理中 ```json { "deviceId": "device-001", "deviceStatus": "ONLINE", "task": { "taskId": "task-bind-123456", "taskType": "BIND_VCC", "status": "PROCESSING", "createTime": "2025-01-15T10:30:00Z", "updateTime": "2025-01-15T10:35:00Z", "deviceId": "device-001", "creditCard": { "cardNumber": "424242******4242", "cvv": "***", "expiryDate": "12/25" } } } ``` ### 响应 - 任务完成 ```json { "deviceId": "device-001", "deviceStatus": "ONLINE", "task": { "taskId": "task-bind-123456", "taskType": "BIND_VCC", "status": "COMPLETED", "createTime": "2025-01-15T10:30:00Z", "updateTime": "2025-01-15T10:36:00Z", "deviceId": "device-001" } } ``` ### 响应 - 任务不存在 ```json { "deviceId": null, "deviceStatus": null, "task": null } ``` ## 常见问题 ### 任务状态有哪几种? - **PENDING**:任务在队列中等待执行 - **PROCESSING**:任务正在执行中 - **COMPLETED**:任务执行完成 - **FAILED**:任务执行失败 ### 任务查询不到是什么原因? - 任务ID错误 - 任务已完成且已被清理(根据系统配置,任务可能会在完成后一段时间被清理) - 任务ID来自其他客户 ### 为什么要轮询查询任务状态? 因为绑定/解绑操作是异步的,设备需要时间完成操作。建议间隔3-5秒轮询一次,直到任务状态变为 COMPLETED 或 FAILED。 ### 信用卡信息为什么要脱敏? 为了保护支付安全,任务详情中的信用卡信息只显示脱敏后的卡号和掩码CVV。