# Cancelamentos e estornos

Este guia aborda os procedimentos para interromper um processo técnico em andamento no Pinpad e explica a distinção entre um cancelamento técnico e um estorno financeiro.

## Cancelamento técnico (Y06)

Um cancelamento técnico usando o comando **Y06** aborta imediatamente a operação atual que está sendo executada pelo Pinpad. Ele é usado para interromper um processo **antes** que uma transação tenha sido autorizada.

### Casos de uso comuns

* O operador cancela a transação no software do Sistema Host.
* Ocorre um timeout no Sistema Host, exigindo um reset do estado do terminal.
* O usuário está demorando muito para agir e o Sistema Host decide abortar.

### Implementação e comportamento

Para interromper o terminal, o Sistema Host envia o requisito `Y06`.

* **Payload do Comando**: Inclui o ID do Comando (`Y06`) e o campo **TOM**.
* **Timeout (`TOM`)**: Estabelece um novo tempo de espera (em segundos). Uma vez que esse tempo expira sem uma mensagem do Host, um cancelamento é acionado. Este valor deve ser enviado como ASCII (ex: `30 36 30` para 60 segundos).
* **Resposta do Terminal**:
  * O Pinpad retorna um **ACK**.
  * Se recebido enquanto o Pinpad está em **INATIVO** (IDLE/reposo) ou durante uma solicitação de conta Contactless, ele também responde com um **EOT**.
  * Se recebido durante uma exibição de **QR (Y0Q)**, o Pinpad retorna uma resposta `Y0Q` com status `STS = 01`.
* **Feedback Visual**: O terminal exibe **"Operação Cancelada"** por 3 segundos antes de retornar à tela inativa.

> **Cenários de Y06 Ignorado**: Este comando é ignorado se o teclado seguro estiver visível para a entrada do PIN. Além disso, se recebido durante a execução de `Y19`, `Y02`, `Y03` ou `YDL`, o Pinpad não fornecerá nenhuma resposta adicional além do **ACK** inicial.

### Cancelamento iniciado pelo usuário

Se o usuário pressionar o botão físico vermelho **Cancela** no teclado do Pinpad (durante a entrada do PIN ou fluxos gerais), o dispositivo aborta o processo e retorna uma resposta de Erro (**Y0E**) ao Sistema Host com o código **"01"** (Cancelado).

## Estornos financeiros (tipo de transação 20)

Um estorno financeiro (**Devolução/Anulação**) é uma reversão financeira usada **após** uma transação ter sido autorizada. O Pinpad atua como um periférico para ler o cartão novamente e gerar os criptogramas necessários.

> **Regras de Estorno na Argentina:**
> * **Cartão/Carteira**: Suporta Cancelamento Total (\$D+0\$), Reembolso Total (\$D+N\$) e Reembolso Parcial (\$D+N\$).
> * **Cartão QR**: Suporta Cancelamento Total (\$D+0\$), Reembolso Total (\$D+N\$) e Reembolso Parcial (\$D+N\$).
> * A Getnet gerencia o saldo remanescente para todos os reembolsos parciais.

> **Restrições de QR PCT:** As seguintes operações **não são suportadas** para transações QR PCT: Cancelamento Total (\$D+0\$), Reembolso Total/Parcial (\$D+N\$) e Reversões.

### Implementação

Para iniciar um estorno, utilize o fluxo de pagamento padrão (Y19 → Y15 → Y02) com estes parâmetros:

1. **Inicialização Y19**: Defina o **Tipo de Transação (TTY)** como **"20"**.
2. **Especificação de Valor**: Forneça o valor exato a ser estornado no campo **[IMP]**.
3. **Execução**: A UI do terminal indica explicitamente que um **Reembolso/Anulação** está em andamento.
   * **Contactless**: Conclui com a resposta `Y19`.
   * **Chip/Banda**: Requer o comando `Y02` para recuperar as trilhas criptografadas.

O Sistema Host então processa o payload contra a Autorizadora para reverter os fundos.

## Relatórios de erro automatizados (Y0E)

Quando uma operação falha ou é interrompida, o Pinpad envia um relatório **Y0E**. Os códigos principais no campo **[COE]** incluem:

* **"01"**: Cancelado (Usuário pressionou o botão vermelho ou o Host enviou `Y06`).
* **"07"**: Timeout (Tempo de espera excedido para ação do usuário ou comando).

## Próximos passos

Com os procedimentos de cancelamento e estorno implementados, você pode finalizar sua integração revisando:

* [**Pagamentos por Código QR**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-process-qr-code-payments\&section=kei2fli2gqggbwgaddtl3xb7): Saiba como implementar o fluxo `Y0Q` para carteiras digitais.
* [**Comandos da API**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-api-commands\&section=g7b851vgbt737kwul1fmgve2): Consulte a estrutura técnica completa dos comandos `Y06` e `Y0E`.