Processe um reembolso
Este guia mostra como reverter uma transação já concluída usando o deeplink de Reembolso. Reembolsos parciais são aceitos quando o valor é menor que o da transação original.
Antes de começar
Antes de iniciar um reembolso, confirme que você tem:
- O código de autorização (AUT) e a data da transação da resposta do pagamento original bem-sucedido.
- O valor total ou parcial a ser revertido.
- A confirmação de que o terminal está pronto via
getnet://payment/v1/polling.
Passo 1: configure o Intent de reembolso
Para iniciar a reversão, use a URI getnet://payment/v1/refund.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
authorizationCode | String | Sim | Código da transação original, exibido como “AUT” no comprovante. |
transactionDate | String | Sim | Data da transação original no formato dd/MM/yyyy. |
amount | String | Sim | Valor a ser revertido; se for menor que o original, o reembolso é parcial. |
refundType | String | Não | Tipo de reembolso: "1" venda com saque, "2" venda, "3" saque. |
skipConfirmation | String | Não | Defina como "true" para pular a tela de confirmação do valor. |
skipReceipt | String | Não | Define se o comprovante do cliente é impresso. |
allowPrintCurrentTransaction | String | Não | Defina como "false" para receber os dados do comprovante em automationSlip em vez de imprimi-lo. |
O código de autorização e a data da transação são retornados na resposta do
onActivityResultquando você processa um pagamento. Guarde esses valores após cada transação bem-sucedida para usá-los depois nos reembolsos.
Reembolsos parciais: se o valor for menor que o da transação original, o reembolso é processado como parcial. Você pode fazer vários reembolsos sobre a mesma transação original até alcançar o valor total.
Veja como configurar e enviar o Intent de reembolso:
private val REFUND_REQUEST_CODE = 2001
fun processRefund(authCode: String, transactionDate: String, amount: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/refund")).apply {
putExtra("authorizationCode", authCode)
putExtra("transactionDate", transactionDate)
putExtra("amount", amount)
putExtra("refundType", "2")
}
startActivityForResult(intent, REFUND_REQUEST_CODE)
}Passo 2: trate a resposta
O terminal processa a reversão e devolve o resultado para a sua activity. A resposta inclui result, resultDetails, authorizationCode, commerceCode, amount, gmtDateTime, callerId, nsuLastSuccesfullMessage, refundTransactionDate, refundOriginTerminal e automationSlip.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REFUND_REQUEST_CODE && resultCode == RESULT_OK) {
val extras = data?.extras
val result = extras?.getString("result")
if (result == "0") {
// Refund approved
} else {
val details = extras?.getString("resultDetails")
// Handle error
}
}
}Próximos passos
- Reembolso e cancelamento — como o terminal trata cancelamentos no mesmo dia e reembolsos de transações já liquidadas.
- Parâmetros de deeplink — todos os campos de requisição e resposta do reembolso.