POST /api/actions/refund-ticket/resubmit-ticket
认证: 商户 API Key(服务端到服务端)。
Resubmit 复用 创建退款工单 的请求结构,额外需要 ticketId 标识被修订的工单。原始 paymentId 绑定在工单上,不可更改。
请求体
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
ticketId | string | 是 | 被修订的退款工单 Short ID,例如 TKT_3bVzrkD0FJjFdZNLk8Ualx |
reason | string | 是 | 修订后的退款原因 |
requestedAmount.amount | string | 是 | 修订后的退款金额(显示格式,必须 > 0 且 ≤ payment.amount) |
requestedAmount.currency | string | 是 | ISO 4217 代码,必须与支付货币一致 |
refundTicketMerchantExternalId 在 resubmit 中不可变 — 工单创建后不能改。
成功响应 (200)
versionNumber 递增。工单重新进入审核队列(buyer 发起为 pending,merchant 发起为 processing)。
错误响应
重试策略:4xx 一律不要重试 — 修正请求后重发。5xx 指数退避重试(起步 5s,最多 3 次)。
| 状态码 | errors[0].message | 含义 | 推荐处理 |
|---|---|---|---|
| 400 | Missing required field: ticketId | 未提供 ticketId | 添加 ticketId 后重发 |
| 400 | Expected format: TKT_xxx, got "..." | ticketId Short ID 解码失败 | 修正 ticketId 格式后重发 |
| 400 | Invalid requestedAmount.amount format | 金额字符串无法解析 | 使用显示格式如 "10.50" |
| 401 | Unauthorized | API Key 签名无效 | 检查认证请求头 |
| 403 | Submitter is not the original ticket owner | 调用者不是工单创建者 | 只有原始提交者可以 resubmit |
| 404 | Ticket not found | 工单不存在或不属于调用者 | 验证 ticketId |
| 409 | Ticket status is X, only rejected/failed can be resubmitted | 工单不在可 resubmit 状态 | 等待 rejected / failed,或新建工单 |
| 409 | Requested amount exceeds payment amount | 修订金额超过 payment.amount | 修正金额 |
| 500 | Internal server error | 服务端意外失败 | 指数退避重试(起步 5s,最多 3 次) |