# Emitir comprobantes digitales

Esta guía explica cómo emitir comprobantes digitales utilizando el `TicketDigitalRepository`. Esta función ofrece una alternativa ecológica a la impresión, permitiendo el envío de tickets por correo electrónico o su visualización mediante un código QR.

Para utilizar estas funciones, generalmente necesitarás el `operationId` de una transacción completada, disponible en el objeto `Transaction` devuelto por los pagos o las búsquedas en el historial.

## Envío de recibos por correo electrónico

Para enviar un recibo digital directamente a la dirección de correo electrónico de un cliente, utiliza la función `sendTicketDigital`.

**Repositorio**: `TicketDigitalRepository`  
**Función**: `sendTicketDigital`

**Parámetros**:
* `operId`: El identificador único de la operación.  
* `email`: La dirección de correo electrónico del cliente.

### Ejemplo de implementación

```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 -> {}
    }
}
```

El resultado exitoso contiene un objeto `TicketDigitalResult`.

## Obtención de una URL para código QR

Si prefieres mostrar un código QR en la pantalla del TPV para que el cliente lo escanee, puedes recuperar la URL asociada al recibo digital utilizando `getTicketDigitalURL`.

**Repositorio**: `TicketDigitalRepository`  
**Función**: `getTicketDigitalURL`

**Parámetros**:
* `operId`: El identificador único de la operación.

### Ejemplo de implementación

```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 -> {}
    }
}
```

El resultado exitoso contiene un objeto `TicketDigitalUrlResult`.

## Próximos pasos

* [**Controlar la Impresora del Dispositivo**](/es/get-smart/get-smart-sdk/integration-guides/peripherals-and-receipts/control-the-device-printer): Aprende a controlar la impresora física si no se prefiere la entrega digital.
* [**Configurar Pagos Bizum**](/es/get-smart/get-smart-sdk/integration-guides/alternative-payment-methods-apms/configure-bizum-payments): Guías de integración para Bizum.
* [**Configurar Alipay y WeChat QR**](/es/get-smart/get-smart-sdk/integration-guides/alternative-payment-methods-apms/configure-alipay-and-wechat-qr): Guías para pagos mediante códigos QR.