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.

Cobros online
Cobros presenciales
Herramientas y recursos
APIs y SDKS
Transferencias SPEI - ConfiguraciĆ³n de la integraciĆ³n - Mercado Pago Developers

Transferencias SPEI

Con el Checkout API de Mercado Pago puedes ofrecer pagos a travĆ©s de Transferencias SPEI. Este servicio permite realizar pagos desde cualquier banco o instituciĆ³n financiera utilizando tu CLABE (Clave Bancaria Estandarizada).

Para una lista detallada de todos los medios de pago disponibles para integraciĆ³n, envĆ­a un GET con tu access_token al endpoint /v1/payment_methods y ejecuta la solicitud o, si lo prefieres, haz la solicitud utilizando uno de nuestros SDKs.

          
<?php

MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");

$payment_methods = MercadoPago::get("/v1/payment_methods");

?>

        
          
var Mercadopago = require('mercadopago');
Mercadopago.configurations.setAccessToken(config.access_token);

var response = await Mercadopago.payment_methods.listAll();
var payment_methods = response.body;


        
          
MercadoPagoConfig.setAccessToken("ENV_ACCESS_TOKEN");

PaymentMethodClient client = new PaymentMethodClient();
client.list();


        
          
require 'mercadopago'
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')

payment_methods_response = sdk.payment_methods.get()
payment_methods = payment_methods_response[:response]


        
          
using MercadoPago.Client.PaymentMethod;
using MercadoPago.Config;
using MercadoPago.Resource;
using MercadoPago.Resource.PaymentMethod;

MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";

var client = new PaymentMethodClient();
ResourcesList<PaymentMethod> paymentMethods = await client.ListAsync();


        
          
import market
sdk = Mercadopago.SDK("ACCESS_TOKEN")

payment_methods_response = sdk.payment_methods().list_all()
payment_methods = payment_methods_response["response"]


        
          
curl -X GET \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payment_methods' \


        

Para ofrecer pagos a travƩs de Transferencias SPEI, sigue los siguientes pasos.

Importar MercadoPago.js

Para realizar la integraciĆ³n de Checkout API, es necesario capturar los datos necesarios para procesar el pago.

Esta captura se realiza incluyendo la biblioteca MercadoPago.js en tu proyecto, seguida del formulario de pago. Utiliza el siguiente cĆ³digo para importar la biblioteca MercadoPago.js antes de aƱadir el formulario de pago.

          
<body>
<script src="https://sdk.mercadopago.com/js/v2"></script>
</body>


        
          
npm install @mercadopago/sdk-js


        

Configurar credencial

Las credenciales son claves Ćŗnicas con las que identificamos una integraciĆ³n en tu cuenta. Se utilizan para capturar pagos en tiendas online y otras aplicaciones de forma segura.

Esta es la primera etapa de una estructura de cĆ³digo completa que se debe seguir para integrar correctamente los pagos. Presta atenciĆ³n a los siguientes bloques para aƱadirlos a los cĆ³digos como se indica.

          
const mp = new MercadoPago('YOUR_PUBLIC_KEY');


        

AƱadir formulario de pago

Con la biblioteca MercadoPago.js incluida y las credenciales configuradas, aƱade el siguiente formulario de pago a tu proyecto para garantizar la captura segura de los datos de los compradores. En esta etapa es importante utilizar la lista que consultaste para obtener los medios de pago disponibles para crear las opciones de pago que deseas ofrecer.

          
<form id="form-checkout" action="/process_payment" method="post">
    <div>
      <div>
        <label for="payerFirstName">Name</label>
        <input id="form-checkout__payerFirstName" name="payerFirstName" type="text">
      </div>
      <div>
        <label for="payerLastName">Last name</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>
      <div>
        <input type="hidden" name="transactionAmount" id="transactionAmount" value="5000">
        <input type="hidden" name="description" id="description" value="Nome do Produto">
        <br>
        <button type="submit">Pay</button>
      </div>
    </div>
  </form>


        

Obtener tipos de documentos

DespuƩs de configurar la credencial y aƱadir el formulario de pago, es necesario obtener los tipos de documentos que se utilizarƔn para rellenar el formulario de pago.

Al incluir el elemento select con el id: docType que se encuentra en el formulario, serĆ” posible completar automĆ”ticamente las opciones disponibles al llamar la siguiente funciĆ³n:

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


        

Enviar pago

Al finalizar la inclusiĆ³n del formulario de pago y obtener los tipos de documentos, es necesario enviar el email del comprador, el tipo y nĆŗmero de documento, el medio de pago utilizado y el detalle del importe a pagar utilizando nuestra API de Pagos o uno de nuestros SDKs.

Para configurar pagos con Transferencias SPEI, envĆ­a un POST con los parĆ”metros requeridos al endpoint /v1/payments y ejecuta la solicitud o, si lo prefieres, utiliza uno de nuestros SDKs indicados a continuaciĆ³n.

          
<?php
require '../vendor/autoload.php';

MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");

$payment = new MercadoPago\Payment();
$payment->transaction_amount = 5000;
$payment->description = "TĆ­tulo del producto";
$payment->payment_method_id = "clabe";

$payer = new MercadoPago\Payer();
$payer->email = $_POST['email'];
$payer->first_name = $_POST['payerFirstName']
$payer->last_name = $_POST['payerLastName']
$payer->entity_type = "individual";

$payment->payer = $payer;

$payment->save();

$response = array(
    'status' => $payment->status,
    'payment_link' => $payment->transaction_details->external_resource_url,
    'id' => $payment->id
);
echo json_encode($response);

?>


        
          
const mercadopago = require('mercadopago');
mercadopago.configurations.setAccessToken(config.access_token);
 
var payment = req.body;

var payment_data = {
 	transaction_amount: 5000,
 	description: 'TĆ­tulo del producto',
 	payment_method_id: 'clabe',
 	payer: {
 		entity_type: 'individual',
 		email: payment.email,
 		first_name: payment.payerFirstName,
    last_name: payment.payerLastName
 	}
};

var payment = mercadopago.payment.save(payment_data)
 	.then(function(response) {
 		res.status(response.status).json({
 			status: response.body.status,
 			status_detail: response.body.status_detail,
 			id: response.body.id,
 		});
 	})
 	.catch(function(error) {
 		res.status(error.status).send(error);
 	});

var payment_link = payment.transaction_details.external_resource_url;


        
          
MercadoPagoConfig.setAccessToken("YOUR_ACCESS_TOKEN");

  PaymentClient client = new PaymentClient();

  PaymentPayerRequest payer =
  	PaymentPayerRequest.builder()
  	.type("customer")
  	.email(request.getEmail())
    .firstName(request.getPayerFirstName())
    .lastName(request.getPayerLastName())
  	.entityType("individual")
  	.build();

  PaymentCreateRequest paymentCreateRequest = PaymentCreateRequest.builder()
  	.transactionAmount(new BigDecimal(5000))
  	.description("description")
  	.paymentMethodId("clabe")
  	.payer(payer)
  	.build();

  Payment payment = client.create(paymentCreateRequest);
  String paymentLink = payment.transactionDetails.externalResourceUrl;


        
          
require 'mercadopago'
sdk = Mercadopago::SDK.new('ACCESS_TOKEN')

payment_data = {

  transaction_amount: 5000,
  description: "description",
  payment_method_id: "clabe",
  payer: {
    type: "customer",
    email: params[: email],
    entity_type: "individual",
    first_name: params[: payerFirstName]
    last_name: params[: payerLastName]
  }
}

payment_response = sdk.payment.create(payment_data)
payment = payment_response[: response]
payment_link = payment.transaction_details.external_resource_url;


        
          
using System;
using MercadoPago.Client.Common;
using MercadoPago.Client.Payment;
using MercadoPago.Config;
using MercadoPago.Resource.Payment;

MercadoPagoConfig.AccessToken = "ACCESS_TOKEN";

var client = new PaymentClient();

var payer = new PaymentPayerRequest() {
    Type = "customer",
    Email = request.Email,
    EntityType = "individual",
    FirstName = request.PayerFirstName,
    LastName = request.PayerLastName
};

var paymentCreateRequest = new PaymentCreateRequest() {
  TransactionAmount = 5000,
    Description = "description",
    PaymentMethodId = "clabe",
    AdditionalInfo = additionalInfo,
    CallbackUrl = "https://your-site.com",
    Payer = payer
};

var payment = await client.CreateAsync(paymentCreateRequest);
var paymentLink = payment.TransactionDetails.externalResourceUrl; 


        
          
import mercadopago
sdk = mercadopago.SDK("ACCESS_TOKEN")
 
payment_data = {
   "transaction_amount": 5000,
   "description": "description",
   "payment_method_id": "clabe",
   "payer": {
       "type": "customer",
       "email": request.POST.get("email"),
       "entity_type": "individual",
       "first_name": request.POST.get("first_name"),
       "last_name": request.POST.get("last_name"),
   }
}
 
payment_response = sdk.payment().create(payment_data)
payment = payment_response["response"]
Payment_link = payment.transaction_details.external_resource_url


        
          
curl --location --request POST 'https://api.mercadopago.com/v1/payments' \
-H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
--d '{
    "transaction_amount": 5000,
    "description": "TĆ­tulo del producto",
    "payment_method_id": "clabe",
    "payer": {
        "email": "test_user_19549678@testuser.com",
        "entity_type": "individual",
        "first_name": "John",
        "last_name": "Doe"
    }
}'


        

La respuesta mostrarĆ” el status pendiente hasta que el comprador realice el pago. AdemĆ”s, en la respuesta a la solicitud, el parĆ”metro transaction_details.payment_method.data.external_resource_url devolverĆ” una URL que contiene las instrucciones para que el comprador efectĆŗe el pago. Puedes redirigirlo a este mismo link para finalizar el flujo de pago.

          
{
    "id": 51096146182,
    "version": null,
    "date_created": "2023-05-10T13:43:14.586-04:00",
    ...
    "payment_method_id": "clabe",
    "payment_type_id": "bank_transfer",
    "payment_method": {
        "id": "clabe",
        "type": "bank_transfer",
        "data": {
            "reference_id": "6410293433784980810",
            "external_reference_id": "1009",
            "external_resource_url": "https://www.mercadopago.com.mx/payments/51096146182/ticket?caller_id=34728475&hash=f3a8630a-f06a-48e4-b2a6-f95750af7346"
        }
    },
    "status": "pending",
    ...
}


        
Importante
En caso de recibir un error al generar un pago, puedes consultar el listado de errores posibles en la secciĆ³n Referencia de API .

VisualizaciĆ³n del pago

Para que el usuario pueda realizar la transferencia, dirĆ­jalo directamente a la URL disponible en external_resource_url o pĆ³ngala a su disposiciĆ³n mediante un botĆ³n, siguiendo el ejemplo a continuaciĆ³n.

          
<a href="https://www.mercadopago.com.mx/payments/51096146182/ticket?caller_id=34728475&hash=f3a8630a-f06a-48e4-b2a6-f95750af7346" target="_blank">Pagar con Transferencias SPEI</a>