Getnet DocsGetnet Docs

Reembolsar um Pagamento

Este guia explica como reembolsar (ou cancelar) um pagamento previamente aprovado usando a operação Refund do POS Integrado.

O que é um reembolso

A operação Refund reverte uma venda concluída, total ou parcialmente. Você pode executá-la no mesmo dia da venda original ou em até 365 dias. Se algum parâmetro não for informado, o POS exibe as telas de digitação correspondentes. O manual usa “Cancellation” (cancelamento) para este comando.

Antes de começar

Antes de emitir um reembolso:

  • Um Connector deve ser criado e validado usando Polling
  • O Modo POS Integrado deve estar ativo
  • A transação original deve ser elegível para reembolso

Passo 1: Execute o reembolso

Para realizar um reembolso, chame a operação Refund com os detalhes da transação original. A maioria dos parâmetros é opcional: o POS os solicita na tela se estiverem ausentes. Informá-los garante um fluxo de automação mais fluido.

ParâmetroTipoObrigatórioDescrição
AuthorizationCodeStringNãoCódigo de autorização da transação original (por exemplo, do campo “AUT” do recibo ou da resposta de Sale).
OriginTransDateDateNãoData da transação original, no formato ISO8601 com fuso horário. Não pode ser posterior à data atual.
AmountLongNãoValor do reembolso na moeda local. Se omitido, o valor total é reembolsado (reembolsos parciais são suportados).
SkipConfirmationBoolNãoIgnora a tela de confirmação.
SkipReceiptBoolNãoNão imprime o recibo do cliente.
PrintOnPosBoolNãoImprime no POS ou retorna o conteúdo do recibo. Consulte o Capítulo 4, Responsabilidade de Impressão.
RefundTypeEnumNãoQual parte da venda reembolsar: SaleWithdrawal (venda e saque), Sale (somente a venda) ou Withdrawal (somente o saque).

Se uma informação obrigatória for omitida, o POS a solicita na tela. A elegibilidade para reembolso e as regras de reembolso parcial são aplicadas pelo POS e pelo adquirente. Você pode emitir vários reembolsos sobre a mesma transação original até que a soma dos valores alcance o total original.

O exemplo a seguir mostra como iniciar um reembolso de uma venda previamente aprovada. A data da transação (OriginTransDate) não pode ser posterior à data atual. A data retornada pela venda original é um valor válido.

var refundRequest = new RefundRequest
{
    AuthorizationCode = "551437",
    OriginTransDate = originalSale.AccountingDate,
    Amount = 10000
};

var refundResult = await connector.RefundAsync(refundRequest);

Passo 2: Trate a resposta

Após o processamento bem-sucedido, o POS retorna uma resposta estruturada com o resultado da reversão. Os campos a seguir estão sempre presentes em uma resposta de reembolso bem-sucedida:

{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "1234567890",
  "TerminalId": "GET00123",
  "AuthorizationCode": "654321",
  "NsuLastSuccessfulMessage": "123456789",
  "ReceiptContent": null
}

Onde:

CampoTipoObrigatórioDescrição
CodeIntSimCódigo de resposta. 0 indica sucesso.
MessageStringSimMensagem de resultado (por exemplo, APPROVED).
CommerceCodeStringSimCódigo de filial aprovado pela Getnet para o processamento de transações.
TerminalIdStringSimCódigo do terminal POS.
AuthorizationCodeStringSimCódigo de autorização da transação de reembolso.
NsuLastSuccessfulMessageStringSimÚltima mensagem NSU.
ReceiptContentDictNãoConteúdo estruturado do recibo. null quando PrintOnPos é true. Consulte Responsabilidade de Impressão.

ReceiptContent é null quando a requisição define PrintOnPos como true — o terminal imprime o recibo em vez de retorná-lo.

Sempre verifique os campos Code e Message antes de confirmar o reembolso no seu sistema.

Próximos passos