Enviar ticket por mail

Enviar ticket por mail

ℹ️

Este proceso es opcional

El envío del comprobante por correo electrónico es opcional. El SDK de Menta ofrece un método dedicado para realizar esta acción, el cual sigue un formato estándar de Menta y necesita datos específicos de la transacción para llevar a cabo la operación.

Requisitos

  • Datos de la transacción requeridos para el formato estándar de Menta

Paso a paso

  1. Instanciar el objeto SendEmailData pasándole el contexto.
  2. Crear un HashMap con los datos para el ticket.
  3. Instanciar el objeto SendEmailRequest.
  4. Invocar el método sendEmail pasándole el objeto SendEmailRequest.
  5. Configurar un observer para recibir la respuesta.

Crear HashMap

CampoDescripción
date_terminalFecha de la terminal para enviar el ticket.
time_terminalHora de la terminal para enviar el ticket.
operation_typeTipo de operación.
merchant_nameNombre del comercio.
merchant_addressDirección del comercio
operation_numberNúmero de operación. Corresponde al campo ticketId retornado en la respuesta de la transacción.
masked_numberNúmero de tarjeta enmascarado. Corresponde el campo masked_pan retornado en la respuesta de la transacción.
reader_typeModo de lectura. Corresponde al inputMode retornado en la lectura de la tarjeta.
amountMonto de la transacción formateado con decimales.
installmentsNúmero de cuotas de la transacción. Default = 01.
card_brandMarca de la tarjeta. Valor que se puede recuperar de la tabla de bines.
currencyMoneda de país.
card_typeTipo de tarjeta. Valor que se puede recuperar de la tabla de bines.
card_aidIdentificador de la tarjeta. Valor retornado por la lectura de tarjeta.
subjectAsunto del mail.
subtitleCuerpo del mail.

Instanciar el objeto SendEmailRequest

CampoDescripción
toCorreo del destinatario.
template_typeTipo de plantilla. Posibles valores: PAYMENT, REFUND.
contentHashMap creado en el paso 2.

Ejemplo de implementación

SendEmailData sendEmailViewModel = new SendEmailData(getReactApplicationContext().getApplicationContext());
HashMap<String, String> map = new HashMap<>();
map.put("date_terminal", "27/06/23");
map.put("time_terminal", "12:44:08,");
map.put("operation_type", "PAYMENT");
map.put("merchant_name", "TEST SUBCOMERCIO");
map.put("merchant_address", "AVENIDA INDEPENDENCIA 1494");
map.put("operation_number", "181625710");
map.put("masked_number", "*0190");
map.put("reader_type", "CONTACTLESS");
map.put("amount", "500,00");
map.put("installments", "01");
map.put("card_brand", "MASTERCARD");
map.put("currency", "ARS");
map.put("powered_by_menta_footer", "Leyenda: Powered by menta");
map.put("card_type", "Crédito");
map.put("card_aid", "A0000000041010C123456789");
map.put("subject", "Comprobante de compra en TEST SUBCOMERCIO");
map.put("subtitle", "Te acercamos el comprobante de tu compra en TEST SUBCOMERCIO");
SendEmailRequest sendEmailRequest = new SendEmailRequest(
    "[email protected]", "PAYMENT", map);
SendEmailObserver sendEmailObserver = new SendEmailObserver();
LiveData<Resource<Unit, StatusResult>> myLiveData = sendEmailViewModel.getSendEmailResponse();
sendEmailViewModel.sendEmail(sendEmailRequest);
Handler handler = new Handler(Looper.getMainLooper()); 
handler.post(new Runnable() { 
        @Override
        public void run() {
            myLiveData.observeForever(sendEmailObserver);
        }
    }
);
 
myLiveData.observeForever(sendEmailObserver);

Códigos de respuesta

El observer configurado retornará como resultado un objeto de tipo LiveData<Resource<Unit, StatusResult>>.

Los posibles valores para el Resource son:

CódigoDescripción
Resource.SuccessEl envío del ticket se realizó con éxito.
Resource.FailureFalló el envío del ticket.

Para el caso de Resource.Failure en objeto StatusResult contiene información del error. Puede acceder al detalle del error en los campos: title y message.

Ejemplo de implementación

public class SendEmailObserver implements Observer<Resource<Unit, StatusResult>> {
    @Override
    public void onChanged(Resource<Unit, StatusResult> unitStatusResultResource) {
        System.out.println("LiveData changed: " + unitStatusResultResource);
 
        if (new Resource.Success<>().equals(unitStatusResultResource)) {
	        //Para saber si es SUCCES o FAILURE
 
        } else if (new Resource.Failure<>().equals(unitStatusResultResource)) {
 
            //Para recuperar el mensaje de error
            Objects.requireNonNull(unitStatusResultResource.getError()).getMessage();
        }
    }
}

Ejemplo del formato estándar de Menta

Ejemplo de ticket