Callback de pagamento de saída

Os retornos de chamada de pagamento usam os mesmos cabeçalhos de assinatura e mecanismo de nova tentativa que os retornos de chamada de pagamento.

The platform calls back only when a payout reaches the confirmed or failed final state.

POSTnotifyUrl da solicitação de criação de ordem de pagamento body

Cabeçalhos

CampoTipoObrigatórioDescrição
content-typeapplication/jsonSimSempre aplicação/json.
x-callback-timestampstringSimRetorno de chamada timestamp em milissegundos.
x-callback-noncestringSimRetorno de chamada nonce.
x-callback-signaturestringSimHMAC-SHA256(apiKey, timestamp + "." + nonce + "." + rawBody)。
x-callback-signature-algorithmstringSimSempre HMAC-SHA256.
x-callback-signature-versionstringSimSempre v1.

Parâmetros

CampoTipoObrigatórioDescrição
merchantUidstringSimMerchant UID.
orderNostringSimNúmero da ordem de pagamento da plataforma.
merchantOrderNostring | nullSimNúmero do pedido do comerciante.
chainCodestringSimCódigo da cadeia.
tokenSymbolstringSimSímbolo simbólico.
fromAddressstring | nullSimEndereço do remetente.
toAddressstringSimEndereço de recebimento.
txHashstring | nullNãoHash na cadeia.
amountstringSimValor do pagamento.
statusstringSimFinal payout state: confirmed or failed.
failedStagestringNãoReturned only when status=failed.

Exemplo de requisição

{
  "merchantUid": "880001",
  "orderNo": "PO1776193200A1B2C3D4",
  "merchantOrderNo": "PO202604150001",
  "chainCode": "TRON",
  "tokenSymbol": "USDT",
  "fromAddress": "TNjBrNq2a9FK2vwu4W9C1QdLKSZ42Yx5YY",
  "toAddress": "TS7b7iD8G2PaPqK1TqSmLJ9nrrYH4oKX1S",
  "txHash": "b3d4fb0cb11eb86bb906d1e0ee3b84e17f40d5441d1e4c651ea46920a48a9a01",
  "amount": "35.500000",
  "status": "confirmed"
}

Campos da resposta

CampoTipoObrigatórioDescrição
HTTP Status200-299SimQualquer resposta 2xx é tratada como sucesso.
Response Bodystring | jsonNãoA resposta body pode ser customizada.

Exemplo de resposta

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

success

Exemplos de código

Exemplo de manipulador expresso
app.post('/merchant/callback', (req, res) => {
  if (req.body.status === 'confirmed') {
    // Pagamento realizado com sucesso
  }

  if (req.body.status === 'failed') {
    // Pagamento failed
  }

  return res.status(200).send('success');
});

Notas

  • Handle callbacks idempotently by orderNo; only confirmed or failed final states are sent automatically.