PayZuDocs

MED (特殊退款机制)

央行针对 Pix 欺诈和骗局的安全网:当付款方所在机构发起退款请求时,你会在同一个交易 webhook 上收到通知,不用离开原有流程就能处理这笔争议。

MED (特殊退款机制) 是巴西央行的一项程序,用于保护 Pix 用户在欺诈、骗局或未授权交易情况下的 权益。

它作为安排的 "安全网" 运作:当识别到 可疑活动时,付款方机构发起正式流程 请求退款。

在 PayZu,MED 流程通过 webhook 交付,复用 交易的同一个 callbackUrl。原交易的状态会 被更新,infraction 对象会插入到 payload 中。

MED 概念流程

高层流程:

  1. Pix 交易成功完成
  2. 识别到问题 (欺诈、错误、未授权扣款)。
  3. 付款方机构在安排中发起 MED,webhook 到达时 status: "OPEN"
  4. 收款银行收到通知,可能在分析期间冻结金额。
  5. 由机构分析争议 + Bacen 规则。
  6. 结果:接受 (AGREED,退还金额) 或拒绝 (DISAGREED,交易保持有效)。

包含 infraction 的 webhook 示例

Pix 交易遭遇 infraction 时收到的真实 payload 示例:

{
  "id": "PAYZU20260811K7M2X9QP4T000000",
  "type": "DEPOSIT",
  "status": "COMPLETED",
  "serviceFeeCharged": 1,
  "amount": 30,
  "clientReference": "d2b2a5ed-f1a4-477e-81da-9",
  "qrCodeText": "00020101021226870014br.gov.bcb.pix...",
  "payerName": "João da Silva",
  "payerDocument": "12345678901",
  "payerInstitutionName": "PAYZU IP",
  "receiverName": "PAYZU LTDA",
  "receiverDocument": "123456789010110",
  "endToEndId": "E18236120202608111046s1235ee7a91",
  "paidAt": "2026-08-11T10:46:26.986Z",
  "createdAt": "2026-08-11T10:45:18.403Z",
  "updatedAt": "2026-08-11T10:46:27.346Z",
  "callbackUrl": "https://seuwebhook.com",
  "infraction": {
    "id": "cmide759mb9i3s601bhwf6e",
    "protocol": "4dd32924-9b53-4408-af4b-6d3b4d7ac",
    "status": "OPEN",
    "type": "REFUND_REQUEST",
    "reportDetails": "Relato de fraude: transação contestada formalmente pelo pagador",
    "reportedBy": "DEBITED_PARTICIPANT",
    "analysisResult": null,
    "analysisDetails": null,
    "reportedAt": "2026-08-24T16:52:15.808Z",
    "createdAt": "2026-08-24T17:00:00.490Z",
    "updatedAt": "2026-08-24T17:00:00.490Z"
  }
}

infraction 对象的字段

字段类型描述
idstringinfraction 的唯一标识符
protocolstring支付提供商的协议编号
statusInfractionStatusinfraction 的当前状态
typeInfractionTypeinfraction 的类型
reportDetailsstring争议原因的描述
reportedByReportedBy谁报告了 infraction
analysisResultAnalysisResult | null最终决定 (待定时为 null)
analysisDetailsstring | null决定的理由
reportedAtstring报告时间
expiresAtstring | null解决期限
createdAtstring创建日期
updatedAtstring最后更新时间

statustypereportedByanalysisResult 的完整取值见 术语表

收到 infraction 时如何应对

检测回调

infraction 对象到达 payload 时,立即触发内部告警。Bacen 的期限很短,通常为 72 小时,沉默通常被解读为接受。

if (callback.infraction?.status === 'OPEN') {
  await alertOperations({
    transactionId: callback.id,
    infractionId: callback.infraction.id,
    expiresAt: callback.infraction.expiresAt,
    reportDetails: callback.infraction.reportDetails,
  });
}

调查

使用 GET /user/infractions/{id} 获取争议、原交易和期限的完整详情。与您的日志交叉核对:

  • 付款前的 DICT 日志 (如果是 Pix 付款)
  • 谁在您的系统中执行了该操作
  • 客户的 IP、设备、会话
  • payerDocument 的交易历史

决策:抗辩或接受

场景推荐决策
合法收款,有产品/服务交付证据抗辩 通过 POST /user/infractions/{id}/defenses
您这边确有欺诈嫌疑 (客户已被入侵)接受 (不抗辩)。金额被退还,案件关闭。
您没有证据视具体情况评估。无抗辩时,Bacen 倾向于接受异议。

跟踪直到 CLOSED

infraction 经过若干状态 (OPEN → ACKNOWLEDGED/DEFENDED → ANSWERED/WAITING_ADJUSTMENTS → CLOSED)。每次变更都会产生新的回调。最终结果在 status: "CLOSED" 时通过 analysisResult 给出。

完整生命周期

财务影响

当 infraction 为 AGREED 时

原交易(COMPLETED)经过 WAITING_FOR_REFUND,金额从余额扣除,交易最终变为 REFUNDED,并发送完成 webhook。实际退回的金额见回调中的 refundAmount,可能与原始 amount 不同。

当 infraction 为 DISAGREED 时

不退款:余额保持不变,交易仍为 COMPLETED

下一步

本页内容