# 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 `onActivityResult` quando 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:

```kotlin
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`.

```kotlin
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](/pt/app2app/core-concept-a2a/refund-and-cancellation) — como o terminal trata cancelamentos no mesmo dia e reembolsos de transações já liquidadas.
* [Parâmetros de deeplink](/pt/app2app/reference-a2a/deeplink-parameters) — todos os campos de requisição e resposta do reembolso.