Skip to content

回调通知代付合作商接口文档 ​

1. 通知接口背景 ​

合作商发起 Pix 代付交易后,交易的最终结果可能无法在同步请求中确定。Adopay 在代付订单成功或失败后,通过 HTTP 异步回调将最终结果通知给合作商。

合作商应根据 platOrderNo 或 merchantOrderNo 对通知做幂等处理。同一订单可能因重试收到多次通知。

2. 回调地址和请求方式 ​

项目内容
请求方式POST
请求地址{notifyUrl}
Content-Typeapplication/json
接口用途通知 Pix 代付最终结果

{notifyUrl} 为合作商提供的代付回调地址,必须是完整的 HTTP 或 HTTPS 地址。

3. 请求头字段 ​

字段名类型字段长度是否必传说明
Content-Typestring16是固定为 application/json。
X-Merchant-Idstring64是接收通知的商户号。
X-Timestampstring19是Unix 秒级时间戳。
X-Noncestring64是本次请求的随机串,用于防重放。
Digeststring52是原始请求体摘要,格式为 SHA-256=<Base64(SHA256(body_bytes))>。
Authorizationstring-是ES256 HTTP Signature 签名信息。

Digest 和 Authorization 均基于最终发送的原始 JSON 字节计算。合作商验签时不能先对 JSON 重新序列化。

4. 请求体字段 ​

业务状态判断:status 为整数;status = 200 表示业务正常,此时 msg = "sucesso"。非 200 表示业务错误,错误原因见 msg。

字段名类型字段长度是否必返说明
eventstring64是见下属事件枚举。
subMerchantNostring64是该代付订单所属的二级商户号。
attachstring128是原付款订单下单时合作商传入的 attach 值;下单时已传入则原样返回,未传入则为空。
merchantOrderNostring64是合作商发起代付时传入的商户订单号。
platOrderNostring64是Adopay 代付平台订单号。
orderStatusstring16是代付结果:SUCCESS 表示代付成功,FAILED 表示代付失败。
e2eIdstring64是银行 E2E 交易号/外部渠道代付流水号;未生成时可为空。
amountdecimal25,2是商户订单金额。
receivedAmountdecimal25,2是收款方实际到账金额。
feedecimal25,2是商户手续费;失败时为 0。
fromIspbstring16是付款机构 ISPB 编码。
fromIspbNamestring512是付款机构名称。
fromCnpjstring64是付款方 CNPJ。
fromNamestring128是付款方名称。
toPixstring64是收款方 Pix Key;属于敏感信息。
toIspbstring16是收款机构 ISPB 编码;未取得时可为空。
toIspbNamestring512是收款机构名称;未取得时可为空。
toNamestring128是收款人名称;属于敏感信息。
toCpfCnpjstring64是收款方 CPF/CNPJ;属于敏感信息。
payTimeint19是代付完成时间,Unix 秒级时间戳;未取得时为 0。
statusint-是响应码
msgstring128是与 status 对应

事件和状态对照 ​

eventorderStatus含义
PIX_CASHOUT_SUCCESSSUCCESS代付成功。
PIX_CASHOUT_ERRORFAILED代付失败。

5. 请求示例 ​

http
POST /notify/adopay/cashout HTTP/1.1
Host: merchant.example.com
Content-Type: application/json
X-Merchant-Id: 92315566000120
X-Timestamp: 1786838460
X-Nonce: 4de901987ca14b25acf2639056ac6002
Digest: SHA-256=<REQUEST_BODY_SHA256_BASE64>
Authorization: Signature keyId="v1",alg="ES256",headers="(request-target) x-timestamp x-nonce digest",signature="<ES256_SIGNATURE_BASE64>"

{
  "status": 200,
  "msg": "sucesso",
  "event": "PIX_CASHOUT_SUCCESS",
  "subMerchantNo": "SUBMERCHANT0001",
  "attach": "merchant-data-001",
  "merchantOrderNo": "CASHOUT202608170001",
  "platOrderNo": "APS202608170000000001",
  "orderStatus": "SUCCESS",
  "e2eId": "E0000000020260817000000000000002",
  "amount": 100.00,
  "receivedAmount": 100.00,
  "fee": 1.50,
  "fromIspb": "87654321",
  "fromIspbName": "ADOX INSTITUICAO DE PAGAMENTO LTDA",
  "fromCnpj": "12345678000195",
  "fromName": "",
  "toPix": "maria.oliveira@example.com",
  "toIspb": "60701190",
  "toIspbName": "ITAÚ UNIBANCO S.A.",
  "toName": "MARIA OLIVEIRA",
  "toCpfCnpj": "12345678901",
  "payTime": 1786838460
}

6. 合作商响应要求 ​

合作商完成幂等处理后,应返回 HTTP 200—299,且响应体严格为纯文本 SUCCESS 或 OK:

http
HTTP/1.1 200 OK
Content-Type: text/plain

SUCCESS

7. 通知场景与重试次数 ​

代付成功或代付失败时,Adopay 会向合作商发送回调通知。

每笔通知首次发送失败后,最多重试 9 次,合计最多发送 10 次。合作商成功接收并返回规定的成功响应后,不再重试。

是否重试由 HTTP 状态码和响应体共同决定:

HTTP 状态码响应体处理结果
200—299去除首尾空白后严格等于 SUCCESS 或 OK通知成功,不再重试
200—299空响应体、JSON、其他文本或非规定大小写通知失败,继续重试
非 2xx任意内容通知失败,继续重试
未收到 HTTP 响应网络超时或连接失败通知失败,继续重试

SUCCESS 和 OK 区分大小写。例如 success、Success 或 {"status":"SUCCESS"} 均不会被识别为成功响应。HTTP 204 虽属于 2xx,但因响应体为空,仍会继续重试。

8. 接入注意事项 ​

  1. 建议以 event 和 orderStatus 判断交易结果,不能只使用 event 判断成功或失败。
  2. 收到成功通知时,应复核 amount、收款人和 Pix Key。
  3. toPix、toName、fromCnpj 和 toCpfCnpj 属于敏感信息,日志和审计系统中应脱敏存储。