Rapipago y Pago Fácil
Con Checkout API de Mercado Pago, también es posible ofrecer pagos con Rapipago y/o Pago Fácil.
Con estos medios de pago, los compradores podrán realizar un pago diferido en efectivo, siempre dentro del plazo establecido para su vencimiento, y deberán aguardar a que el mismo se acredite para dar por finalizada la compra.
Si deseas continuar con tu integración luego de haber configurado tu ambiente, y quieres ofrecer pagos con Rapipago y/o Pago Fácil, sigue los pasos a continuación.
processing_mode. Para más información, accede a la sección Modelo de integración.Para poder recibir pagos, es necesario que añadas en el frontend un formulario que permita capturar los datos del pagador de manera segura.
Si ya cuentas con un desarrollo que contempla un formulario de pago propio, asegúrate de incluir Rapipago y Pago Fácil entre las opciones de pago que deseas ofrecer, como es indicado a continuación, y avanza a la etapa de Obtener tipos de documentos.
Si no cuentas con un formulario de pago, añade el siguiente a tu proyecto, incluyendo el identificador del medio de pago a ofrecer.
| Medio de pago | payment_method_id |
| Rapipago | rapipago |
| Pago Fácil | pagofacil |
html
<form id="form-checkout" action="/process_payment" method="post"> <div> <div> <label for="payerFirstName">Nombre</label> <input id="form-checkout__payerFirstName" name="payerFirstName" type="text"> </div> <div> <label for="payerLastName">Appelido</label> <input id="form-checkout__payerLastName" name="payerLastName" type="text"> </div> <div> <label for="email">E-mail</label> <input id="form-checkout__email" name="email" type="text"> </div> <div> <label for="identificationType">Tipo de documento</label> <select id="form-checkout__identificationType" name="identificationType" type="text"></select> </div> <div> <label for="identificationNumber">Número del documento</label> <input id="form-checkout__identificationNumber" name="identificationNumber" type="text"> </div> </div> <div> <div> <input type="hidden" name="transactionAmount" id="transactionAmount" value="100"> <input type="hidden" name="description" id="description" value="Nome do Produto"> <br> <button type="submit">Pagar</button> </div> </div> </form>
Para facilitar la inserción de datos en el formulario de pago de manera correcta, es necesario obtener los posibles tipos de documento a ser aceptados.
La función a continuación te permitirá completar automáticamente las opciones disponibles. Para eso, basta incluir el elemento select con el id: form-checkout__identificationType que se encuentra en el formulario utilizado como ejemplo en la etapa anterior.
Si ya cuentas con un desarrollo que contempla la obtención de tipos de documento, como es indicado a continuación, avanza a la etapa de Enviar pago.
Si no cuentas con esta función, añade la siguiente a tu proyecto.
javascript
(async function getIdentificationTypes() { try { const identificationTypes = await mp.getIdentificationTypes(); const identificationTypeElement = document.getElementById('form-checkout__identificationType'); createSelectOptions(identificationTypeElement, identificationTypes); } catch (e) { return console.error('Error getting identificationTypes: ', e); } })(); function createSelectOptions(elem, options, labelsAndKeys = { label: "name", value: "id" }) { const { label, value } = labelsAndKeys; elem.options.length = 0; const tempOptions = document.createDocumentFragment(); options.forEach(option => { const optValue = option[value]; const optLabel = option[label]; const opt = document.createElement('option'); opt.value = optValue; opt.textContent = optLabel; tempOptions.appendChild(opt); }); elem.appendChild(tempOptions); }
El envío del pago debe ser realizado mediante la creación de una order que contenga transacciones de pago asociadas.
Para eso, envía un POST con tu Access Token de pruebaClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba. y los parámetros requeridos enumerados a continuación al endpoint /v1/ordersAPI y ejecutes la requisición.
curl
curl --location 'https://api.mercadopago.com/v1/orders' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --header 'X-Idempotency-Key: <SOME_UNIQUE_VALUE>' \ { "type": "online", "external_reference": "ext_ref_1234", "processing_mode": "automatic", "total_amount": "200.00", "expiration_time": "P3D", "payer": { "email": "test_user_ar@testuser.com", "first_name": "John", "last_name": "Doe", "identification": { "type": "DNI", "number": "99999999999" }, }, "transactions": { "payments": [ { "amount": "200.00", "payment_method": { "id": "rapipago", "type": "ticket" } } ] } }
| Atributo | Tipo | Descripción | Obligatoriedad |
Authorization | Header | Hace referencia a tu clave privada, el Access Token de pruebaClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba.. | Requerido |
X-Idempotency-Key | Header | Llave de idempotencia. Esta llave garantiza que cada solicitud sea procesada una única vez, evitando duplicidades. Utiliza un valor exclusivo en el encabezado de tu solicitud, como un UUID V4 o strings aleatorias. | Requerido |
processing_mode | Body. String | Modo de procesamiento de la order. Los valores posibles son: - automatic: para crear y procesar la order en modo automático. - manual: para crear la order y procesarla con posterioridad. Para más información, acceda a la sección Modelo de integración. | Requerido |
total_amount | Body. String | Monto total de la transacción. | Requerido |
expiration_time | Body. String | Permite definir la fecha de vencimiento utilizando el formato de duración ISO 8601. Si bien puedes configurarla para que sea entre 1 y 30 días luego de la emisión del pago, recomendamos establecer una duración de 3 días (“P3D” en el ejemplo) para que no haya conflicto entre el vencimiento y la acreditación del pago, que puede demorar hasta 2 horas hábiles desde su realización. En caso de que el pago se efectúe luego de la fecha de vencimiento establecida, el valor será devuelto a la cuenta de Mercado Pago del pagador. | Opcional |
payer.email | Body. String | E-mail del comprador. | Requerido |
payer.identification.type | Body. String | Tipo de identificación utilizada por el comprador. | Requerido |
payer.identification.number | Body. String | Número de identificación utilizada por el comprador. | Requerido |
transaction.payments.payment_method.id | Body. String | Identificador del método de pago. Las opciones para otros medios de pago son: rapipago: para pagos con Rapipago. pagofacil: para pagos con Pago Fácil. | Requerido |
transaction.payments.payment_method.type | Body. String | Tipo de método de pago. Para pagos con Rapipago o Pago Fácil, el valor debe ser ticket. | Requerido |
ticket_url, que contiene la URL con las instrucciones para que el comprador efectúe el pago, a la que deberás redirigirlo. Además, mostrará el status action_required hasta que el pago sea realizado.json
{ "id": "ORD01J6TC8BYRR0T4ZKY0QR39WGYE", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "total_amount": "200.00", "country_code": "ARG", "user_id": "1245621468", "status": "action_required", "status_detail": "waiting_payment", "capture_mode": "automatic", "created_date": "2024-09-02T22:04:01.880469Z", "last_updated_date": "2024-09-02T22:04:04.429289Z", "integration_data": { "application_id": "4599991948843755" }, "transactions": { "payments": [ { "id": "PAY01J6TC8BYRR0T4ZKY0QRTZ0E24", "reference_id": "22dvqmsbq8c", "amount": "200.00", "status": "action_required", "status_detail": "waiting_payment", "payment_method": { "id": "rapipago", "type": "ticket", "ticket_url": "https://www.mercadopago.com.ar/payments/86797024510/ticket?caller_id=1870026883&payment_method_id=rapipago&payment_id=86797024510&payment_method_reference_id=6004835002&hash=0331521a-9ddb-44a2-851c-65f77d8d394e", "barcode_content": "3335008800000000006004835002100020000242462010", "reference": "6005407530", "verification_code": "6005407530" } } ] } }
Entre los parámetros devueltos, se destacan los indicados en la tabla a continuación.
| Atributo | Tipo | Descripción |
transactions.payments.status | String | Devuelve el estado de la transacción. En este caso, devolverá action_required para indicar la necesidad de una acción para completar el procesamiento, es decir, hasta que se realice el pago. |
transactions.payments.status_detail | String | Detalle del estado de la transacción. En este caso, el valor obtenido es en espera (waiting_payment) de que el comprador finalice el pago. |
transactions.payments.payment_method.ticket_url | String | URL con las instrucciones de pago a la que deberás redirigir al comprador. |
transactions.payments.payment_method.barcode_content | String | Código de barras en formato EAN-13 para el pago del comprobante de Rapipago o Pago Fácil. |
transactions.payments.payment_method.reference | String | Código de referencia del pago. |
transactions.payments.payment_method.verification_code | String | Código de verificación del pago. |
Si lo deseas, puedes cancelar un pago creado, siempre y cuando se encuentre pendiente o en proceso; es decir, con status=action_required.
Adicionalmente, recomendamos cancelar los pagos que no fueron realizados dentro de la fecha de vencimiento establecida, para evitar problemas de facturación y conciliación.
Para obtener más información, consulta la sección Reembolsos y cancelaciones.
