# Referência do resultado da transação

O `TransactionResultCallback` entrega o resultado de `initSale` e `initRefund`. Ele é chamado uma vez por operação, imediatamente antes de a Activity do SDK ser fechada. O contrato não lança exceções para o integrador — as falhas aparecem no valor e na mensagem do resultado.

## Campos do resultado

| Campo | Tipo | Descrição |
| :--- | :--- | :--- |
| `result` | `String?` | Código de resultado padronizado e curto. |
| `resultMessage` | `String?` | Descrição legível do resultado. |
| `payload` | `Any?` | Dados específicos da operação. Faça o cast para o tipo da operação. |

## Códigos de resultado

| Código | Significado |
| :--- | :--- |
| `"00"` | Transação aprovada. |
| `"1-*"` | Erro do terminal (POS). |
| `"33-*"` | Erro de host — um erro HTTP do serviço de pagamento (SEP) ou uma recusa do emissor. |

Trate `"00"` como aprovação e qualquer outro valor como não aprovação, exibindo `resultMessage` quando disponível. Terminais mais antigos ainda podem retornar o prefixo legado `"4-*"` para erros de host — trate `"4-*"` e `"33-*"` como equivalentes. Para o catálogo completo de erros, consulte a [Referência de códigos de erro](/pt/getnet-toolbox/sdk-white-label/reference-sdk/error-codes); para saber como reagir a cada falha, consulte [Solução de problemas](https://docs.globalgetnet.com/pt/products/in-store-payments/getnet-toolbox?doc=sdk-wl-troubleshooting).

## Payload por operação

Faça o cast de `payload` para o tipo que corresponde à operação. Acessar campos sem o cast pode lançar um `ClassCastException`.

### Pagamentos — `IPaymentResponse`

Retornado por `initSale` (crédito, débito, voucher, Pix). Campos principais:

| Campo | Tipo | Descrição |
| :--- | :--- | :--- |
| `paymentId` | `String?` | Identificador único da transação. Armazene-o para permitir um estorno direto. |
| `orderId` | `String?` | Identificador do pedido. |
| `amount` | `String?` | Valor da transação. |
| `currency` | `String?` | Moeda. |
| `status` | `String?` | Status da transação. |
| `paymentMethod` | `String?` | Meio de pagamento usado. |
| `authorizationCode` | `String?` | Código de autorização. |
| `authorizedAt` | `String?` | Data e hora da autorização. |
| `acquirer` | `String?` | Adquirente. |
| `transactionId` / `acquirerTransactionId` | `String?` | Identificadores da transação. |
| `reasonCode` / `reasonMessage` | `String?` | Código e mensagem do motivo. |
| `emv` | `String?` | Dados EMV. |

### Estornos — `ICancelPaymentResponse`

Retornado por `initRefund`. Campos principais:

| Campo | Tipo | Descrição |
| :--- | :--- | :--- |
| `paymentId` | `String?` | Identificador da transação original que foi estornada. |
| `amount` | `Int?` | Valor estornado. |
| `status` | `String?` | Status do estorno. |
| `authorizationCode` | `String?` | Código de autorização do estorno. |
| `traceNumber` | `Int?` | Número de rastreio. |
| `canceledAt` | `String?` | Data e hora do cancelamento. |
| `reasonCode` / `reasonMessage` | `String?` | Código e mensagem do motivo. |

## Exemplo

```kotlin
val onResult = TransactionResultCallback { result ->
    when (result.result) {
        "00" -> when (val payload = result.payload) {
            is IPaymentResponse -> { /* handle an approved payment */ }
            is ICancelPaymentResponse -> { /* handle an approved refund */ }
            else -> { /* ... */ }
        }
        else -> { /* non-approval — show result.resultMessage */ }
    }
}
```