DocumentaciĆ³n
Recursos
Certificaciones
Comunidad

Recursos

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

Comunidad

Recibe las Ćŗltimas novedades, pide ayuda a otros integradores y comparte tus conocimientos.

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

Yape

Yape es una aplicaciĆ³n mĆ³vil que simplifica el proceso de transferencias bancarias. Los usuarios pueden realizar transacciones de manera fĆ”cil y rĆ”pida directamente desde su celular, despuĆ©s de asociar su tarjeta de dĆ©bito MultiRed a la aplicaciĆ³n.

Para realizar una transacciĆ³n con Yape, primero debes generar un token, necesario para la etapa de creaciĆ³n del pago. Esto puede ser hecho de dos formas: directamente a travĆ©s de la API o utilizando el SDK JS de Mercado Pago.

En esta documentaciĆ³n encontrarĆ”s todas las etapas necesarias para realizar la configuraciĆ³n y las pruebas de integraciĆ³n con Yape de forma completa.

IntegraciĆ³n vĆ­a SDK javascript

Con Checkout API, es posible ofrecer pagos a travĆ©s de Yape utilizando el mĆ©todo de SDK JS para generar un token. Para ello, es necesario enviar los campos de celular y OTP (One-time password encontrado en la aplicaciĆ³n Yape). Con el token, es posible crear un pago.

Importante
Si deseas realizar la integraciĆ³n mediante API, avanza a la secciĆ³n Agregar formulario para captura de OTP y celular y sigue las instrucciones.

Para ofrecer pagos con Yape, sigue los siguientes pasos.

Importar MercadoPago.js

La primera etapa del proceso de integraciĆ³n de pagos con Yape es la captura de los datos de OTP (One-time password) y celular para generar el token de pago. Esto se hace incluyendo la biblioteca MercadoPago.js en tu proyecto, seguida por el formulario para capturar los datos necesarios.

Utiliza el siguiente cĆ³digo para importar la biblioteca MercadoPago.js antes de aƱadir el formulario. Puedes hacerlo vĆ­a HTML o Bash.

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

        
          
npm install @mercadopago/sdk-js

        

Configurar credencial

Las credenciales son claves Ćŗnicas utilizadas para identificar una integraciĆ³n en tu cuenta. Se utilizan para capturar pagos en tiendas en lĆ­nea y otras aplicaciones de forma segura.

Utiliza el cĆ³digo a continuaciĆ³n para configurar tu credencial, reemplazando el valor YOUR_PUBLIC_KEY por tu Public key de producciĆ³n disponible en la aplicaciĆ³n creada en Tus integraciones. Para mĆ”s detalles, consulta credenciales.

plain

const mp = new MercadoPago("YOUR_PUBLIC_KEY");

AƱadir formulario para captura de OTP y celular

Para generar un token Yape, es necesario completar el campo OTP, que representa el cĆ³digo generado en la aplicaciĆ³n Yape, y el nĆŗmero de celular. Para capturar estos datos, utiliza el siguiente formulario HTML directamente en el proyecto:

html

<form id="form-checkout">
  <div>
    <label for="payerPhone">Phone Number</label>
    <input id="form-checkout__payerPhone" name="payerPhone" type="text" />
  </div>
  <div>
    <label for="payerOTP">OTP</label>
    <input id="form-checkout__payerOTP" name="payerOTP" type="text" />
  </div>
  <div>
    <button onclick="handleYape()">Create YAPE</button>
  </div>
</form>

Generar token

DespuĆ©s de completar la inclusiĆ³n del formulario y obtener los datos necesarios, genera el token de Yape utilizando MercadoPago.js o a travĆ©s de la API.

Nota
El token es de un solo uso por compra y debe ser enviado durante la etapa de creaciĆ³n del pago.

Generar token vĆ­a MercadoPago.js

Utiliza el mĆ©todo mp.yape.create para generar un token de Yape, segĆŗn el siguiente cĆ³digo:

javascript

(async function handleYape () {
  const otp = docment.getElementById("form-checkout__payerOTP").value;
  const phoneNumber = docment.getElementById("form-checkout__payerPhone").value;
  const yapeOptions = {
    otp,
    phoneNumber
  };
  const yape = mp.yape(yapeOptions);
  const yapeToken = await yape.create();
  return yapeToken;
});

Generar token vĆ­a API

Otra manera de generar el token es a travĆ©s de la API. Para ello, utiliza el siguiente cURL, completando los parĆ”metros segĆŗn lo detallado en la tabla a continuaciĆ³n.

CampoTipoDescripciĆ³nObligatorio/OpcionalEjemplos/Posibles valores
phoneNumbernumberNĆŗmero de celular del pagador obtenido en la etapa Capturar los datos de celular y OTP.Obligatorio123214234342
otpnumberCĆ³digo Ćŗnico y numĆ©rico de 6 dĆ­gitos encontrado en la app de Yape. Este campo se obtiene en la etapa Capturar los datos de celular y OTP.Obligatorio123344
requestIdstringCampo generado automĆ”ticamente por el SDK JS. Debe enviarse sĆ³lo en las integraciones realizadas vĆ­a cURL.Obligatorio para integraciones realizadas vĆ­a cURLaaaaaaaa-bbbb-1ccc-8ddd-eeeeeeeeeeee

curl

curl --location 'https://api.mercadopago.com/platforms/pci/yape/v1/payment?public_key=<PUBLIC_KEY>' \
--header 'Content-Type: application/json' \
--data '{
   "phoneNumber": "123214234342",
   "otp": "123344",
   "requestId": "3127367123234234"
}

Ejemplo de la respuesta:

json

{
    "live_mode": true,
    "luhn_validation": null,
    "require_esc": null,
    "cloned": false,
    "cardholder": {
        "identification": {
            "number": null,
            "type": null,
            "subtype": null
        },
        "name": "yape"
    },
    "security_code_id": 8069792005119486812,
    "security_code_length": 6,
    "card_number_length": 9,
    "expiration_month": 5,
    "expiration_year": 2024,
    "card_present_id": null,
    "card_id": null,
    "client_id": 7775327892346559,
    "present": null,
    "id": "45d013f72bf42717a1625f4c508fc20f",
    "card_number_id": "FFTSHQTOSJTXGFVFGJKCBAIVOUISTFZBDRTQWLYJ",
    "creation_date": null,
    "due_date": null,
    "last_modified_date": null,
    "product_id": null,
    "trust_level": "unknown",
    "public_key": "APP_USR-352587ca-674b-4ae4-a348-8583ab39b4ac",
    "site_id": "MPE",
    "status": "active",
    "transaction_id": null,
    "trunc_card_number": null,
    "used_date": null,
    "bin": "111111",
    "version": 0,
    "client_header": null,
    "first_six_digits": "111111",
    "last_four_digits": "6789"
}

Crear pago

DespuĆ©s de aƱadir el formulario para capturar los datos del celular y del OTP y generar el token, debes crear el pago. Para hacerlo, envĆ­a el token proporcionado por el SDK de Mercado Pago JS y todos los datos necesarios al endpoint /v1/payments. Estos datos incluyen 'transaction_amount', 'installments', 'payment_method_id' (especĆ­ficamente yape), e la informaciĆ³n del pagador. Si prefieres, tambiĆ©n es posible hacer la solicitud utilizando uno de nuestros SDKs backend.

El detalle de cada uno de los parĆ”metros mencionados anteriormente, asĆ­ como sus respectivos valores posibles, estĆ” descrito en la tabla a continuaciĆ³n.

Importante
Para esta etapa, al hacer la solicitud a travĆ©s de la API o SDKs, es necesario enviar tu clave privada (access_token de producciĆ³n).
CampoTipoDescripciĆ³nObligatorio/OpcionalEjemplos/Posibles valores
tokenstringToken proporcionado por el SDK JS de Mercado Pago. Para saber mĆ”s, consulta la secciĆ³n Generar token.Obligatorio"f8ae90c6a83e71d698d5ea927f851034"
transaction_amountnumberValor de la transacciĆ³n. Existe un lĆ­mite mĆ”ximo, que puede ser de S/500, S/900 o S/2000, configurado directamente en la propia aplicaciĆ³n Yape.Obligatorio2000
descriptionstringTĆ­tulo del producto.Opcional"Video game"
installmentsnumberCantidad de cuotas. Al tratarse de un pago con tarjeta de dƩbito, la cantidad de cuotas serƔ 1.Obligatorio1
payment_method_idstringyape para todos los casos.Obligatorioyape
payer.emailstringEmail del pagador.Obligatorio"test_user_12345@gmail.com"
          
MercadoPagoConfig.setAccessToken("ENV_ACCESS_TOKEN");

PaymentClient client = new PaymentClient();

PaymentCreateRequest createRequest =
    PaymentCreateRequest.builder()
        .description("Titulo del producto")
        .installments(1)
        .payer(PaymentPayerRequest.builder()
            .email("test_user_123@testuser.com")
            .build())
        .paymentMethodId("yape")
        .token("ff8080814c11e237014c1ff593b57b4d")
        .transactionAmount(new BigDecimal("5000"))
        .build();

client.create(createRequest);

        
          
MercadoPagoConfig::setAccessToken("ENV_ACCESS_TOKEN");
    
$client = new PaymentClient();

$createRequest = [
  "description" => "Titulo del producto",
  "installments" => 1,
  "payer" => [
     "email" => "test_user_123@testuser.com",
  ],
  "payment_method_id" => "yape",
  "token" => "ff8080814c11e237014c1ff593b57b4d",
  "transaction_amount" => 5000,
];

    $client->create($createRequest, $request_options);

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

var payment = req.body;

var payment_data = {
  token: '<ff8080814c11e237014c1ff593b57b4d>',
  transaction_amount: 5000,
  installments: 1,
  description: 'Titulo del producto',
  payment_method_id: 'yape',
  payer: {
    email: payment.email,
  }
};

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: respose.body.id,
    });
  })
  .catch(function (error) {
    res.status(error.status).send(error);
});

var payment_link = payment.transaction_details.external_resource_url;

        
          
import mercadopago
sdk = mercadopago.SDK("ENV_ACCESS_TOKEN")

request_options = mercadopago.config.RequestOptions()
request_options.custom_headers = {
\t'x-idempotency-key': '<SOME_UNIQUE_VALUE>'
}

payment_data = {
\t"description": "Titulo del producto",
\t"installments": 1,
\t"payer": {
\t\t"email": "test_user_123@testuser.com",
\t},
\t"payment_method_id": "yape",
\t"token": "ff8080814c11e237014c1ff593b57b4d",
\t"transaction_amount": 5000
}

payment_response = sdk.payment().create(payment_data, request_options)
payment = payment_response["response"]

        
          
MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN

var paymentPayerRequest = new PaymentPayerRequest
{
    Email = "test_user_123@testuser.com",
};

var request = new PaymentCreateRequest
{
    Description = "Titulo del producto",
    Installments = 1,
    Payer = paymentPayerRequest,
    PaymentMethodId = "yape",
    TransactionAmount = (decimal?)5000,
    Token = "ff8080814c11e237014c1ff593b57b4d"
};

var client = new PaymentClient();
Payment payment = await client.CreateAsync(request, requestOptions);

        
          
require 'mercadopago'

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

custom_headers = {
 'x-idempotency-key': '<SOME_UNIQUE_VALUE>'
}

custom_request_options = Mercadopago::RequestOptions.new(custom_headers: custom_headers)

payment_object = {
  description: 'Titulo del producto',
  installments: 1,
  payer: {
    email: 'test_user_123@testuser.com',
  },
  payment_method_id: 'yape',
  token: 'ff8080814c11e237014c1ff593b57b4d',
  transaction_amount: 5000
}

payment_response = sdk.payment.create(payment_request, custom_request_options)
payment_response[:response]

        
          
package main

import (
	"context"
	"fmt"

	"github.com/mercadopago/sdk-go/pkg/config"
	"github.com/mercadopago/sdk-go/pkg/payment"
)

func main() {
	accessToken := "ENV_ACCESS_TOKEN"

	cfg, err := config.New(accessToken)
	if err != nil {
		fmt.Println(err)
		return
	}

	client := payment.NewClient(cfg)

	request := payment.Request{
		TransactionAmount: 5000,
            Description: "Titulo del producto",
		PaymentMethodID:   "yape",
		Payer: &payment.PayerRequest{
			Email: "test_user_123@testuser.com",
		},
		Token:        "ff8080814c11e237014c1ff593b57b4d",
		Installments: 1,
	}

	resource, err := client.Create(context.Background(), request)
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(resource)
}

        
          
curl --location 'https://api.mercadopago.com/v1/payments' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--header 'x-idempotency-key: <IDEMPOTENCY_KEY>' \
--data-raw '{
   "token": "ff8080814c11e237014c1ff593b57b4d",
   "transaction_amount": 5000,
   "description": "TĆ­tulo del producto",
   "installments": 1,
   "payment_method_id": "yape",
   "payer": {
    "email": "test_user_1295925766@testuser.com"
   }
}'

        

A continuaciĆ³n puedes ver un ejemplo de respuesta. Ten en cuenta que cierta informaciĆ³n fue omitida para mostrar los campos mĆ”s relevantes.

json

{
    "id": 74581527758,
    ...
    "payment_method_id": "yape",
    "payment_type_id": "debit_card",
    "payment_method": {
        "id": "yape",
        "type": "debit_card",
        "issuer_id": "12759",
        "data": {
            "routing_data": {
                "merchant_account_id": "462540702"
            }
        }
    },
    "status": "approved",
    "status_detail": "accredited",
    ...
}

Por ser una transacciĆ³n con tarjeta de dĆ©bito, los estados de pago posibles son aprobado o rechazado. AdemĆ”s, las polĆ­ticas de reembolso y cancelaciĆ³n tambiĆ©n se aplican.

Nota
En caso de que ocurra algĆŗn error al generar un pago, consulta la lista de posibles errores en la secciĆ³n Referencia de API .

Probar la integraciĆ³n

Es posible utilizar un OTP y nĆŗmeros de celular de prueba para simular diferentes respuestas de pago en una transacciĆ³n, sin la necesidad de usar nĆŗmeros de celular y OTPs reales. Esto permite reproducir los estados mapeados en payments.

Para probar la integraciĆ³n, ingresa el OTP y uno de los nĆŗmeros de celular listados en la tabla a continuaciĆ³n en el formulario de Checkout para simular escenarios de Ć©xito y falla en la implementaciĆ³n.

Nota
Para probar la integraciĆ³n, debe usar las credenciales de prueba de su cuenta productiva. Para saber mĆ”s, lee la documentaciĆ³n .
CelularOTPEstado previsto en payments
111111111123456approved
111111112123456cc_rejected_call_for_authorize
111111113123456cc_rejected_insufficient_amount
111111114123456cc_rejected_other_reason
111111115123456cc_rejected_card_type_not_allowed
111111116123456cc_rejected_max_attempts
111111117123456cc_rejected_bad_filled_security_code
111111118123456cc_rejected_form_error

Los procedimientos para generar el token de Yape y crear el pago son los mismos: es necesario proporcionar el nĆŗmero de celular y el OTP de la tabla anterior. Si tienes dudas sobre cĆ³mo generar el token Yape o crear el pago, consulta las secciones Generar token y Crear pago respectivamente.