关闭订单
让一笔待支付订单立即失效,买家无法再通过收银台付款。
POST https://api.kukopay.com/v1/orders/{trade_no}/expire
收银台链接在订单创建后 24 小时内有效(见订单的 expires_at)。库存售罄、买家在你这边取消了购物车,或同一笔购买换了新订单时,调用此接口让旧订单立即失效,而不是等它自然过期。
路径参数同时接受平台的 trade_no 和商户自己的 out_trade_no。
curl -X POST "https://api.kukopay.com/v1/orders/ORD_20260921_0001/expire" \
-H "X-Api-Key: $KUKOPAY_API_KEY" \
-H "Idempotency-Key: expire-ORD_20260921_0001"成功时返回状态为 expired 的订单对象,并照常发出 payment.expired 事件与 Webhook。
关闭前会先确认支付状态
平台不会凭订单记录直接关单,而是先向支付通道确认这笔订单的支付状态:
| 情况 | 结果 |
|---|---|
| 买家尚未付款 | 订单关闭,返回 200 |
| 买家其实已经付款 | 订单照常入账,返回 409 conflict;你会收到 payment.succeeded |
| 买家正在完成钱包跳转或 3DS 验证,通道暂时无法取消 | 订单保持 pending,返回 409 conflict,稍后重试 |
| 支付通道暂时不可达 | 订单保持 pending,返回 502 processor_error,带上相同的幂等键重试 |
订单已经是 expired | 原样返回该订单,200 |
| 订单已支付、已退款或已失败 | 409 conflict |
收到 409 时请重新查询订单,以订单的最新状态为准——尤其是买家恰好在你关单的同时完成了付款的情况。
控制台的订单详情页也提供同样的「关闭订单」操作(需要所有者或管理员角色)。