Skip to content

/cashin/pix/refund-partner 代收退款接口介绍 ​

接口背景 ​

/cashin/pix/refund-partner 提供给合作商的收款订单退款申请接口。合作商可以通过原平台订单号或原商户订单号定位原收款订单,并提交本次退款金额、退款原因等信息。

原平台订单号 origPlatOrderNo 和原商户订单号 origMerchantOrderNo 至少填写一个。退款申请本金 refundAmount 不包含手续费,币种必须与原订单币种保持一致,金额单位为元。合作商应保证商户退款订单号在同一商户范围内唯一,用于退款请求的幂等控制和后续跟踪。

退款时限:Pix 原路退款须在原交易完成后的 90 个自然日内发起,超过 90 天不允许退款。该 90 天期限仅指"Pix 原路退款",不是所有退款及 MED 的统一期限。超过该期限,原交易不再支持通过 Pix 退款接口退回;如仍需向客户返还资金,应通过新的付款流程处理。MED 争议适用独立的监管时效及处理规则。

接口请求地址 ​

项目内容
请求方式POST
请求路径/cashin/pix/refund-partner
Content-Typeapplication/json
接口用途发起收款订单退款

接口接入规范 ​

接口请求字段 ​

字段名位置类型字段长度是否必填说明
X-Merchant-IdHeaderstring64是一级商户号,从请求头读取。
X-TimestampHeaderint19是Unix 秒级请求时间戳,用于请求时效校验。
X-NonceHeaderstring64是请求防重放随机字符串。
DigestHeaderstring52是请求体摘要,格式为 SHA-256=<Base64摘要>。
AuthorizationHeaderstring-是ES256 请求签名信息,其中 keyId 为合作商密钥版本号。
subMerchantNoBodystring64是二级商户号。
origPlatOrderNoBodystring64二选一原平台订单号;与 origMerchantOrderNo 至少填写一个。
origMerchantOrderNoBodystring64二选一原商户订单号;与 origPlatOrderNo 至少填写一个。
merchantOrderNoBodystring64是商户退款订单号;同一商户范围内应保持唯一。
refundAmountBodydecimal25,2是本次申请退还的本金金额,不包含手续费,必须大于 0;币种必须与原订单币种一致。可以多次退款,累计退款本金不能超过原订单本金。
refundReasonBodystring128是退款原因。
refundReasonCategoryBodystring16否退款原因分类。
notifyUrlBodystring255否合作商接收退款结果通知的地址。

请求示例 ​

请求头示例:

http
POST /cashin/pix/refund-partner HTTP/1.1
Content-Type: application/json
X-Merchant-Id: 92315566000120
X-Timestamp: 1790200000
X-Nonce: 550e8400-e29b-41d4-a716-446655440000
Digest: SHA-256=<Base64摘要>
Authorization: Signature keyId="v1",alg="ES256",headers="(request-target) x-timestamp x-nonce digest",signature="<ES256_SIGNATURE_BASE64>"

请求 Body 示例:

json
{
  "subMerchantNo": "SUB00000001",
  "origPlatOrderNo": "BAS202608160000000001",
  "origMerchantOrderNo": "CASHIN202608160001",
  "merchantOrderNo": "REFUND202608160001",
  "refundAmount": 50.00,
  "refundReason": "商户与客户协商退款",
  "refundReasonCategory": "CUSTOMER_REQUEST",
  "notifyUrl": "https://merchant.example.com/callback/refund"
}

接口响应字段 ​

接口使用统一的 status、msg、data 响应结构。退款的最终结果应以 orderStatus、异步通知或后续查询结果为准。

字段名类型字段长度是否必返说明
statusint4是响应码
msgstring128是与 status 对应
dataobject不适用否退款响应数据;请求在验签或协议解析阶段失败时可能不返回。
data.subMerchantNostring64是二级商户号,与请求中的 subMerchantNo 一致。
data.merchantOrderNostring64是商户退款订单号,回写请求值。
data.platOrderNostring64条件必返平台退款订单号;退款订单创建成功后返回。
data.amountdecimal(25,2)25,2是本次申请退还的本金金额,不包含手续费,回写请求中的 refundAmount。
data.refundAmountdecimal(25,2)25,2是本次成功退还的本金金额,不包含手续费;本次退还的手续费见 data.feeRefundAmount。
data.feeRefundAmountdecimal(25,2)25,2是本次退还的手续费金额;未退还手续费时为 0。
data.origPlatOrderNostring64条件必返原平台订单号。
data.origMerchantOrderNostring64条件必返原商户订单号。
data.origAmountdecimal25,2条件必返原商户订单金额。
data.origTotalRefundAmountdecimal(25,2)25,2条件必返原代收订单当前累计成功退还的本金金额,不包含手续费。
data.origTotalFeeRefundAmountdecimal(25,2)25,2条件必返原代收订单当前累计成功退还的手续费金额,不包含退款本金。
data.e2eIdstring64否Pix 端到端交易 ID。
data.orderStatusstring16是退款当前状态。
data.refundTimeint19否退款时间,Unix 秒级时间戳。

data.orderStatus 枚举 ​

枚举值状态说明是否终态
PENDING退款处理中;否
SUCCESS退款成功;是
FAILED退款失败;是

响应示例 ​

以下示例为原订单首次退款成功:退还本金 50.00、手续费 0.30,累计退款本金为 50.00,累计退还的手续费为 0.30。

json
{
  "status": 200,
  "msg": "sucesso",
  "data": {
    "subMerchantNo": "SUB00000001",
    "merchantOrderNo": "REFUND202608160001",
    "platOrderNo": "RFD202608160000000001",
    "amount": 50.00,
    "refundAmount": 50.00,
    "feeRefundAmount": 0.30,
    "origPlatOrderNo": "BAS202608160000000001",
    "origMerchantOrderNo": "CASHIN202608160001",
    "origAmount": 100.00,
    "origTotalRefundAmount": 50.00,
    "origTotalFeeRefundAmount": 0.30,
    "e2eId": "E1234567820260816000000000000001",
    "orderStatus": "SUCCESS",
    "refundTime": 1786887025
  }
}

响应错误码 ​