对已支付订单发起全额或部分退款,并查询异步结果。
POST https://web.kukopay.com/api/v1/refunds
curl -X POST "https://web.kukopay.com/api/v1/refunds" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $KUKOPAY_API_KEY" \
-d '{
"trade_no": "TRD_9F3A...",
"out_refund_no": "REF_20260921_0001",
"amount": 1000,
"reason": "买家协商退货"
}'| 字段 | 必填 | 说明 |
|---|---|---|
trade_no | 是 | 原订单的 KukoPay 交易号 |
out_refund_no | 正式必填 | 商户退款单号,也是退款幂等键 |
amount | 否 | 退款金额,单位分;省略表示退剩余全部金额 |
reason | 否 | 退款原因 |
同步完成时状态为 succeeded。部分渠道异步处理退款,此时返回 HTTP 202 和 pending:金额先从可用余额转入冻结,渠道确认成功后正式扣除并发送 refund.succeeded;若渠道拒绝,冻结金额会退回可用余额。
GET https://web.kukopay.com/api/v1/refunds/{refund_no}
路径参数接受平台 refund_no 或商户 out_refund_no。
curl "https://web.kukopay.com/api/v1/refunds/REF_20260921_0001" \
-H "X-Api-Key: $KUKOPAY_API_KEY"关键字段:
| 字段 | 含义 |
|---|---|
status | pending / succeeded / failed |
funds_frozen | 是否仍有金额被该退款占用 |
settled_at | 完成扣账的时间,处理中为 null |
建议收到 pending 后每 10 秒查询一次,最多持续 5 分钟,之后改为低频兜底查询。后台对账任务也会持续核对未决退款。
部分支付方式只能在一段时间内退款,例如支付宝、微信支付。订单对象的 refundable_until 给出最晚可退款时间,没有期限时为 null。超过期限的退款请求会被直接拒绝,返回 HTTP 400 和 refund_window_expired,不会扣减余额,也不会发送给支付通道。这类订单请与买家线下协商处理。
同一个 out_refund_no 在期限内已被受理的,期限过后重复请求仍会返回原退款结果。
退款需要足够的可用余额。支持多次部分退款,但累计金额不能超过原订单金额;手续费不随退款退回。