Inicio
DocumentaciĂłn
Recursos
Partners
Comunidad

Recursos

Revisa las actualizaciones de nuestras soluciones y operatividad del sistema o pide soporte técnico.

Partners

Conoce nuestro programa para agencias o desarrolladores que ofrecen servicios de integraciĂłn y vendedores que quieren contratarlos.

Comunidad

Recibe las Ășltimas novedades, pide ayuda a otros integradores y comparte tus conocimientos.

MĂ©todo legacy - Iniciar el flujo de pago - Mercado Pago Developers

BĂșsqueda inteligente powered by OpenAI 

MĂ©todo legacy

Para ofrecer una experiencia fluida en tu app, nuestros SDKs facilitan la inicialización del flujo de pago a través de la clase PaymentFlow. Adicionalmente, es necesario utilizar dos funcionalidades esenciales:

  • buildCallbackUri: construye el URI para manejar pagos exitosos y errores, y permite definir las rutas de redirecciĂłn despuĂ©s del pago.
  • parseResponse: procesa y extrae el resultado del pago a partir del URI generado y realiza el manejo de la respuesta de la transacciĂłn.
Importante
Este método de inicialización del flujo de pago es considerado legacy. Recomendamos actualizar tu integración al método Callback para contar con una implementación simplificada.

Comienza tu integración utilizando nuestros SDKs para inicializar el flujo de pago a través de la clase PaymentFlow de la siguiente manera:

          
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);

        
CampoDescripciĂłn
amount (String)Monto usado para iniciar el flujo de pago.
description (String)Opcional. DescripciĂłn usada para iniciar el flujo de pago.
intentSuccess (Uri)URI que se utiliza para lanzar un deeplink que redirige a la pantalla de Ă©xito. Para un funcionamiento correcto, es necesario utilizar la funcionalidad adicional buildCallbackUri. Para mĂĄs informaciĂłn, consulta Construir una URI para apertura del flujo de pago
intentError (Uri)URI que se utiliza para lanzar un deeplink que redirige a la pantalla de error. Para un funcionamiento correcto, es necesario utilizar la funcionalidad adicional buildCallbackUri. Para mĂĄs informaciĂłn, consulta Construir una URI para apertura del flujo de pago
paymentMethod (String)Opcional. Medio de pago para realizar la operaciĂłn.
installments (Integer)Opcional. NĂșmero de cuotas usado para iniciar el flujo de pago. EstĂĄ disponible solo para Brasil.
printOnTerminal (Booleano)Opcional. Flag que permite imprimir de forma automĂĄtica en el dispositivo. Por defecto estĂĄ en true.
launchPaymentFlowActivityEste 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.
callback (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.

AtenciĂłn
Configura correctamente el deeplink en tu AndroidManifest para que la actividad correspondiente direccione el llamado.

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"
);

        
CampoDescripciĂł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.
UriLa 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. Este objeto incluye la siguiente informaciĂłn: - 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
}

        
CampoDescripciĂł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.
PaymentResponseObjeto que contiene detalles de la operación. Si la respuesta es nula, se devuelve un PaymentResponse con un paymentStatusError.
paymentMethodMedio de pago usado para hacer la operación. Ejemplos: crédito, débito, código QR, link de pago. 
paymentReferenceNĂșmero identificador Ășnico de la operaciĂłn.
paymentCreationDateFecha de creaciĂłn de la operaciĂłn.
paymentAmount Monto del pago.
paymentSnDeviceNĂșmero de serie del lector donde se hizo la operaciĂłn.
paymentBrandNameNombre de usuario registrado en el lector.
paymentInstallmentsNĂșmero de cuotas que la persona seleccionĂł al hacer el pago.
paymentLastFourDigitsÚltimos cuatro nĂșmeros de la tarjeta usada en el pago.
paymentStatusErrorCampo para registrar problemas y errores de la operaciĂłn.
AtenciĂłn
AsegĂșrate de que la respuesta del flujo de pago sea vĂĄlida y tenga la informaciĂłn necesaria.