Skip to content

申请退款

更新时间:2026/7/26 21:23:52

接口说明

对已支付成功的订单发起退款。

注意

  • 支持部分退款和全额退款
  • 退款金额不能超过订单可退款余额(查询订单返回的 refundableBalance
  • 同一笔订单的多次退款请求,bizRefundNo 必须唯一(不传则由系统生成)

接口列表

退款接口属于管理 API/mch/*),通过 Sa-Token 会话认证,响应使用 Result 包装(字段名为 message,非 msg)。

与支付 API 的区别

支付 API(/unipay/*)使用 RSA 签名认证、DaxResult 响应;退款接口使用 Accesstoken 请求头认证、Result 响应。

请求地址

POST /mch/order/refund/refund

  • 认证:Sa-Token(请求头 Accesstoken
  • 响应:Result<RefundOrderResult>

请求头

参数名必填描述
AccesstokenSa-Token 会话令牌
Content-Typeapplication/json

请求参数

RefundParam

参数类型必填描述
tradeNostring否*原支付资金交易号(平台 tradeNo)
bizOrderNostring否*商户业务订单号
amountlong退款金额,单位分(@Positive,必须大于 0)
bizRefundNostring商户退款号(不传由系统生成)
reasonstring退款原因

*tradeNobizOrderNo 至少传一个,优先使用 tradeNotradeNo 解析时若按资金号查不到,会再尝试网关容器 orderNo 反查。

请求示例

json
{
  "bizOrderNo": "ORDER20241201001",
  "amount": 100,
  "bizRefundNo": "REFUND20241201001",
  "reason": "用户申请退款"
}

响应参数

Result<RefundOrderResult>data 字段结构(主要字段,完整 27 字段见源码 RefundOrderResult):

参数类型描述
idlong退款单 ID
mchNostring商户号
mchNamestring商户名称(翻译)
appIdstring应用号
refundNostring系统退款号
bizRefundNostring商户退款号
relationOrderNostring实际上送通道的关联号
titlestring标题
tradeNostring原支付资金交易号
tradeTypestring原支付交易形态
bizOrderNostring原商户订单号
outOrderNostring通道支付订单号
outRefundNostring通道退款流水号
amountlong退款金额(分)
orderAmountlong原订单总金额(分)
currencystring币种
reasonstring退款原因
statusstring退款状态(RefundOrderStatusEnum
finishTimestring退款完成时间(UTC)
channelstring支付通道
productstring支付产品
channelMchNostring通道商户号
channelAppIdstring通道应用 AppId
notifyUrlstring异步通知地址
attachstring商户附加参数
clientIpstring客户端 IP
storeNostring门店号
errorMsgstring错误信息(失败时)

退款状态(RefundOrderStatusEnum)

status说明
progress退款中(已创建并调用通道,等待结果)
success退款成功
fail退款失败
close退款关闭(超时未确认等)

响应示例

json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "1853123456789012345",
    "refundNo": "R2024120112345700001",
    "bizRefundNo": "REFUND20241201001",
    "bizOrderNo": "ORDER20241201001",
    "tradeNo": "T2024120112345700001",
    "amount": 100,
    "orderAmount": 100,
    "status": "progress",
    "reason": "用户申请退款"
  }
}

退款回调

退款成功后,平台会向原支付订单的 notifyUrl 发送 event=refund.success 的异步通知,报文结构见 异步回调

基于 GNU LGPL v3.0 协议开源