# Emitir Comprovantes Digitais

Este guia explica como emitir comprovantes digitais utilizando o `TicketDigitalRepository`. Esta funcionalidade oferece uma alternativa ecológica à impressão, permitindo o envio de tickets por e-mail ou a exibição através de um código QR.

Para utilizar esses recursos, geralmente você precisará do `operationId` de uma transação concluída, que está disponível no objeto `Transaction` retornado por pagamentos ou buscas no histórico.

## Enviando Comprovantes por E-mail

Para enviar um comprovante digital diretamente para o endereço de e-mail do cliente, utilize a função `sendTicketDigital`.

**Repositório**: `TicketDigitalRepository`  
**Função**: `sendTicketDigital`

**Parâmetros**:
* `operId`: O identificador exclusivo da operação.  
* `email`: O endereço de e-mail do cliente.

### Exemplo de Implementação

```kotlin
suspend fun emailReceipt(operationId: String, customerEmail: String) {
    val result = ticketDigitalRepository.sendTicketDigital(
        operId = operationId,
        email = customerEmail
    )

    when (result) {
        is RepositoryResult.Success -> {
            // The request was successfully sent to the host
            println("✅ Email sent successfully.")
        }
        is RepositoryResult.ConnectionError -> {
            println("❌ Connection failed. Please check internet.")
        }
        is RepositoryResult.ProtocolError -> {
            println("❌ Protocol Error: ${result.type}")
        }
        else -> {}
    }
}
```

O resultado de sucesso contém um objeto `TicketDigitalResult`.

## Recuperando uma URL para QR Code

Se você preferir exibir um código QR na tela do TPV para que o cliente o escaneie, pode recuperar a URL associada ao comprovante digital utilizando `getTicketDigitalURL`.

**Repositório**: `TicketDigitalRepository`  
**Função**: `getTicketDigitalURL`

**Parâmetros**:
* `operId`: O identificador exclusivo da operação.

### Exemplo de Implementação

```kotlin
suspend fun getQrUrl(operationId: String) {
    val result = ticketDigitalRepository.getTicketDigitalURL(
        operId = operationId
    )

    when (result) {
        is RepositoryResult.Success -> {
            // Extract the URL from the result
            val urlResult = result.data
            // Note: Depending on the specific result object structure, accessing the URL property
            // (Check Javadoc for exact property name in TicketDigitalUrlResult)
             println("✅ Receipt URL retrieved. Ready to generate QR.")
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        else -> {}
    }
}
```

O resultado de sucesso contém um objeto `TicketDigitalUrlResult`.

## Próximos Passos

* [**Controle a Impressora do Dispositivo**](/pt/get-smart/get-smart-sdk/integration-guides/peripherals-and-receipts/control-the-device-printer): Saiba como controlar a impressora física caso o cliente prefira o papel.
* [**Configurar Pagamentos Bizum**](/pt/get-smart/get-smart-sdk/integration-guides/alternative-payment-methods-apms/configure-bizum-payments): Guias de integração para o Bizum.
* [**Configurar Alipay e WeChat QR**](/pt/get-smart/get-smart-sdk/integration-guides/alternative-payment-methods-apms/configure-alipay-and-wechat-qr): Guias para pagamentos via QR Code.