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
- Instanciar el objeto
SendEmailData
pasándole el contexto. - Crear un
HashMap
con los datos para el ticket. - Instanciar el objeto
SendEmailRequest
. - Invocar el método
sendEmail
pasándole el objetoSendEmailRequest
. - Configurar un
observer
para recibir la respuesta.
Crear HashMap
Campo | Descripción |
---|---|
date_terminal | Fecha de la terminal para enviar el ticket. |
time_terminal | Hora de la terminal para enviar el ticket. |
operation_type | Tipo de operación. |
merchant_name | Nombre del comercio. |
merchant_address | Dirección del comercio |
operation_number | Número de operación. Corresponde al campo ticketId retornado en la respuesta de la transacción. |
masked_number | Número de tarjeta enmascarado. Corresponde el campo masked_pan retornado en la respuesta de la transacción. |
reader_type | Modo de lectura. Corresponde al inputMode retornado en la lectura de la tarjeta. |
amount | Monto de la transacción formateado con decimales. |
installments | Número de cuotas de la transacción. Default = 01. |
card_brand | Marca de la tarjeta. Valor que se puede recuperar de la tabla de bines. |
currency | Moneda de país. |
card_type | Tipo de tarjeta. Valor que se puede recuperar de la tabla de bines. |
card_aid | Identificador de la tarjeta. Valor retornado por la lectura de tarjeta. |
subject | Asunto del mail. |
subtitle | Cuerpo del mail. |
Instanciar el objeto SendEmailRequest
Campo | Descripción |
---|---|
to | Correo del destinatario. |
template_type | Tipo de plantilla. Posibles valores: PAYMENT, REFUND. |
content | HashMap 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ódigo | Descripción |
---|---|
Resource.Success | El envío del ticket se realizó con éxito. |
Resource.Failure | Falló 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();
}
}
}