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 productivoClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend en ambientes de desarrollo y al momento de recibir pagos reales. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Producción > Credenciales de producción. 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 ENV_ACCESS_TOKEN' \ --header 'X-Idempotency-Key: <SOME_UNIQUE_VALUE>' \ { "type": "online", "external_reference": "ext_ref_1234", "processing_mode": "automatic", "total_amount": "200.00", "payment_expiration_time": "P3D", "payer": { "email": "test@testuser.com", "first_name": "John", "last_name": "Doe", "identification": { "type": "CPF", "number": "99999999999" }, }, "transactions": { "payments": [ { "amount": "200.00", "payment_method": { "id": "rapipago", "type": "ticket" } } ] } }
Atributo | Tipo | Descripción | Requerido/Opcional |
Authorization | Header | Hace referencia a tu clave privada, el Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend en ambientes de desarrollo y al momento de recibir pagos reales. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Producción > Credenciales de producción.. | 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 |
payment_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" } } ] } }
Si lo deseas, puedes cancelar un pago creado para boleto bancário, 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.