Getnet DocsGetnet Docs

Enviar recibos digitales

El framework Get Mini te permite manejar recibos de dos formas: proporcionando detalles de contacto del cliente para que Get Mini envíe el recibo automáticamente, o accediendo a los “Literales” de la transacción para generar tu propio recibo digital o físico.

Requisitos

Antes de enviar recibos, asegúrate de:

  • Resultado de transacción: Debes tener un RespuestaTransaccionDTO devuelto del callback onPaymentFinished.

Opción 1: Recibos digitales automáticos (Email/SMS)

La forma más fácil de enviar recibos es proporcionar la información de contacto del cliente durante la solicitud de pago inicial. Get Mini manejará la entrega automáticamente.

Implementación

Al inicializar tu PagoDTO, incluye el emailCliente o tlfCliente. Si estos campos están poblados, la pasarela Get Mini envía el recibo sin más código de tu parte.

let pago = PagoDTO(
    valor: 1500,
    mMoneda: 978,
    nFactura: "INV-101",
    email: "[email protected]", // Get Mini envía email automáticamente
    tlfCliente: "600000000",      // Get Mini envía SMS automáticamente
    datosPropietarios: ""
)

Opción 2: Recibos digitales personalizados

Si deseas mostrar un recibo en tu aplicación o usar la Hoja de Compartir de iOS, debes compilar manualmente los datos del resultado de la transacción.

Paso 1: Acceder a literales de transacción

El RespuestaTransaccionDTO contiene una propiedad Literal (un array de cadenas) y un objeto DatosDCC. Estos contienen el texto legal requerido para el recibo.

func onPaymentFinished(_ result: RespuestaTransaccionDTO!, orError error: Error!) {
    guard let response = result, error == nil else { return }

    // El campo 'Literal' agrega todo el texto requerido del recibo
    if let receiptLines = response.Literal as? [String] {
        let fullReceiptText = receiptLines.joined(separator: "\n")
        self.showShareSheet(text: fullReceiptText)
    }
}

Paso 2: Manejar requisitos de firma

Verifica la propiedad ReciboSoloCliente. Si es verdadera, solo necesitas proporcionar la copia del cliente (usualmente porque la firma fue capturada digitalmente en el dispositivo).

if response.ReciboSoloCliente {
    print("Solo copia del cliente requerida.")
} else {
    print("Copia de Firma o Comercio puede ser requerida.")
}

Paso 3: Acceder al registro financiero completo (Boleta)

Si necesitas generar un recibo para una transacción pasada, usa el método peticionConsultaBoleta para obtener los datos financieros completos.

let consulta = ConsultaBoletaDTO(
    terminal: termTPVPC,
    withIdRTS: originalRTS,
    andUserInfo: userInfo
)

RedsysTransactionManager.peticionConsultaBoleta(consulta) { result, error in
    if let boleta = result {
        // Acceder a campos como boleta.tarjetaClienteRecibo, boleta.importe, etc.
        let receiptBody = """
        Terminal: \(boleta.terminal ?? "")
        Importe: \(boleta.importe ?? "")
        \(boleta.moneda ?? "")
        Autorización: \(boleta.codigoRespuesta ?? "")
        """
        self.printOrShare(receiptBody)
    }
}

Mejores prácticas para recibos

  • Transacciones DCC: Para tarjetas extranjeras, siempre incluye los DatosDCC (tasa de cambio, margen y moneda) en el texto del recibo para cumplir con las regulaciones.
  • Privacidad: Al mostrar o compartir recibos, asegúrate de que el número de tarjeta esté enmascarado (el SDK lo proporciona como ************1234).
  • Firma: Si AutenticadoPorPin es falso, el recibo debe incluir una línea de firma a menos que se haya usado envioFirmaDigitalizada.

Solución de problemas

Faltan datos del recibo Verifica que el Estado sea “F”. Los literales solo se generan una vez que la transacción alcanza un estado finalizado en el servidor.

Emails no recibidos Asegúrate de que el campo de email en PagoDTO tenga un formato válido. Si el campo está vacío, no se activa ningún recibo automático.

Próximos pasos