Iniciar el flujo de pago
Para ofrecer una experiencia fluida en tu app, nuestro SDK facilita la inicialización del flujo de pago a través de la clase PaymentFlow
. De esta forma:
val paymentFlow = MPManager.paymentFlow
val amount = "2.0"
val description = "Payment description"
val intentSuccess = paymentFlow.buildCallbackUri(
   callback = "mercadopago://smart_integrations/payment_result",
   methodCallback = "success",
   metadata = hashMapOf("message" to "testSuccess"),
   appID = "demo.app"
)
val intentError = paymentFlow.buildCallbackUri(
   callback = "mercadopago://smart_integrations/payment_result",
   methodCallback = "error",
   metadata = hashMapOf("message" to "testError"),
   appID = "demo.app"
)
val paymentFlowData = PaymentFlowData(
   amount = amount,
   description = description,
   intentSuccess = intentSuccess,
   intentError = intentError,
   paymentMethod = PaymentMethod.CREDIT_CARD.name,
   installments = 6
)
paymentFlow.launchPaymentFlowActivity(
   paymentFlowData = paymentFlowData,
   context = context
) { response ->
   response.doIfSuccess { message ->
       // Manejo de éxito utilizando un mensaje
   }.doIfError { error ->
       // Manejo del error
   }
}
final PaymentFlow paymentFlow = MPManager.INSTANCE.getPaymentFlow();
final HashMap<String, String> successMetadata = new HashMap<>();
successMetadata.put("success", "testSuccess");
final HashMap<String, String> errorMetadata = new HashMap<>();
successMetadata.put("message", "testError");
final String amount = "2.0";
final String description = "Payment description";
final Uri intentSuccess = paymentFlow.buildCallbackUri(
   "mercadopago://smart_integrations/payment_result",
   "success",
   successMetadata,
   "demo.app"
);
final Uri intentError = paymentFlow.buildCallbackUri(
   "mercadopago://smart_integrations/payment_result",
   "error",
   errorMetadata,
   "demo.app"
);
final PaymentFlowData paymentFlowData = new PaymentFlowData(
   amount,
   description,
   intentSuccess,
   intentError,
   PaymentMethod.CREDIT_CARD.name(),
   6
);
final Function1<MPResponse<String>, Unit> callback = (final MPResponse<String> response) -> {
 if (response.getStatus() == ResponseStatus.SUCCESS) {
   // Manejo de éxito utilizando un mensaje
 } else {
   // Manejo del error
 }
 return Unit.INSTANCE;
};
paymentFlow.launchPaymentFlowActivity(paymentFlowData, context, callback);
Campo | DescripciĂłn |
amount (String) | E l monto usado para iniciar el flujo de pago. |
description (String) | La descripciĂłn usada para iniciar el flujo de pago. Su uso es opcional. |
intentSuccess (Uri) | URI que llama la pantalla de Ă©xito. Se usa para formar un deeplink que envĂa la actividad de Ă©xito. |
intentError (Uri) | URI que llama la pantalla de error. Se usa para formar un deeplink que envĂa la actividad de error. |
paymentMethod (String) | El medio de pago para realizar la operaciĂłn. Su uso es opcional. |
installments (Int) | El nĂșmero de cuotas usado para iniciar el flujo de pago. EstĂĄ disponible solo para Brasil, y su uso es opcional. |
launchPaymentFlowActivity | Este método inicia el flujo de pago usando la app SmartPOS. |
paymentFlowData (PaymentFlowData) | Modelo de datos necesario para la apertura del flujo. |
context (Context) | Contexto de dĂłnde se inciarĂĄ el flujo. |
allback (MPResponse<String> -> Unit) | Ofrece el resultado de la apertura del flujo de pago. |
Construir una URI para apertura del flujo de pago
La función buildCallbackUri
estĂĄ diseñada para construir una URI vĂĄlida que permita abrir una actividad especĂfica, con base en la estrategia del deeplink. Para acceder a ella, usa la funciĂłn PaymentFlow
a través del objeto MPManager
.
Consulta cĂłmo implementar esta funcionalidad:
val paymentFlow = MPManager.paymentFlow
val uriResult = paymentFlow.buildCallbackUri(
   callback = "tuHost://tuApp/result",
   methodCallback = "error",
   metadata = hashMapOf("message" to "result"),
   appID = "demo.app"
)
final PaymentFlow paymentFlow = MPManager.INSTANCE.getPaymentFlow();
final HashMap<String, String> resultMetadata = new HashMap<>();
resultMetadata.put("message", "result");
final Uri uriResult = paymentFlow.buildCallbackUri(
   "tuHost://tuApp/result",
   "error",
   resultMetadata,
   "demo.app"
);
Campo | DescripciĂłn |
callback (String) | El monto de la URI para llamar el deeplink. Ejemplo: tuHost://tuApp/prueba . |
methodCallback (String) | Identifica si la URI es para un caso de Ă©xito, de error u otra respuesta personalizada. |
metadata (HashMap<String, String>) | Campo opcional para enviar información a la pantalla de respuesta, en caso de que sea necesario mostrar detalles adicionales, como el nombre del cliente o el resumen de los productos comprados. |
appID (String) | Â Identificador de la app principal. Usamos el nombre del paquete. Ejemplo: com.tuempresa.tuapp . |
Uri | La URI definida con la informaciĂłn ingresada. |
Obtener el resultado del pago
La funciĂłn parseResponse
de la clase PaymentFlow
se usa para recibir el resultado del flujo de pago, que se entrega en forma de objeto PaymentResponse
listo para su manipulaciĂłn. En este proceso, la siguiente informaciĂłn se ofrece:
- Medio de pago usado;
- Referencia de pago;
- Fecha de creaciĂłn;
- Monto del pago;
- NĂșmero de serie del lector;
- Marca de la tarjeta;
- Cantidad de cuotas;
- Ăltimos cuatro nĂșmeros de la tarjeta;
- Cualquier error asociado a la operaciĂłn.
Consulta cĂłmo implementar esta funcionalidad:
intent.data?.let { data ->
   val response = paymentFlow.parseResponse(data)
   if (response.paymentReference.isNotEmpty()) {
       // Manejo de pago con un resultado de éxito
   } else {
       // Manejo de pago con un resultado de error
   }
}
final PaymentFlow paymentFlow = MPManager.INSTANCE.getPaymentFlow();
final Uri resultUri = getIntent().getData();
final PaymentResponse response = paymentFlow.parseResponse(resultUri);
if (!response.getPaymentReference().isEmpty()) {
 // Manejo de pago con un resultado de éxito
} else {
 // Manejo de pago con un resultado de error
}
Campo | DescripciĂłn |
response (Uri) | La respuesta recibida de SmartPOS. Para encontrarla, usa intent.data de la Activity encargada de abrir el deeplink configurado dentro de la funciĂłn buildCallbackUri . |
PaymentResponse | Objeto que contiene detalles de la operación. Si la respuesta es nula, se devuelve un PaymentResponse con un paymentStatusError . |
paymentMethod | Medio de pago usado para hacer la operación. Ejemplos: crédito, débito, código QR, link de pago. |
paymentReference | NĂșmero identificador Ășnico de la operaciĂłn. |
paymentCreationDate | Fecha de creaciĂłn de la operaciĂłn. |
paymentAmount | Â Monto del pago. |
paymentSnDevice | NĂșmero de serie del lector donde se hizo la operaciĂłn. |
paymentBrandName | Nombre de usuario registrado en el lector. |
paymentInstallments | NĂșmero de cuotas que la persona seleccionĂł al hacer el pago. |
paymentLastFourDigits | Ăltimos cuatro nĂșmeros de la tarjeta usada en el pago. |
paymentStatusError | Campo para registrar problemas y errores de la operaciĂłn. |