CHO API - Pix - Magento 2 - Mercado Pago Developers

Pagos con Pix

Puedes ofrecer la opción de recibir pagos instantáneamente con Pix (bank_transfer) desde cualquier banco o billetera digital, ya sea a través de un código QR o un código de pago donde puede establecer una fecha de vencimiento para que se realice el pago.

json

[
    {
        "id": "pix",
        "name": "PIX",
        "payment_type_id": "bank_transfer",
        "status": "active",
        "secure_thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/pix.gif",
        "thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/pix.gif",
        "deferred_capture": "does_not_apply",
        "settings": [],
        "additional_info_needed": []
    },
    {
        "...": "..."
    }
]
Importante
Recuerde que, por el momento, el Banco Central de Brasil está abierto de lunes a viernes de 9:00 am a 6:00 pm, y si solicita el registro fuera de este horario, lo confirmaremos el siguiente día hábil. Además, no hay límite de valor de Pix para el día (entre las 6 a. M. Y las 8 p. M.) Y, por la noche (entre las 8 p. M. Y las 6 a. M.), Hay un límite máximo de R $ 1.000 que se pueden mover durante estas horas.

Registrar clave Pix

Para empezar a utilizar Pix como método de pago, debes tener registrada una clave Pix en la cuenta del vendedor, de esta forma será posible identificar tu cuenta y además te permitirá utilizar todas las funcionalidades del método de pago en cuestión.

Vea cómo registrar su clave Pix:

  1. Descarga la aplicación de Mercado Pago en tu teléfono.
  2. Desde la página de inicio de su cuenta, haga clic en Pix en la esquina superior derecha.
  3. Luego haga clic en Registrarse.
  4. Elija uno o más datos que se registrarán como claves Pix y complete la información necesaria.
  5. Validar el registro de la clave Pix con el código de seguridad enviado por Mercado Pago. Podrás ver el estado de tus claves registradas y administrarlas a través de la app de Mercado Pago.

Después de registrar la clave Pix, sigue la documentación para realizar la integración o, si lo prefieres, accede a Github para ver ejemplos de cómo agregar pagos Pix integrando con Checkout Transparente .

Configurar el pago con Pix

Después de registrar la clave Pix y capturar los datos de pago con el formulario, para recibir pagos con Pix debes reenviar el correo electrónico del comprador, tipo y número de documento, método de pago y detalle del valor.

          
<?php

 require_once 'vendor/autoload.php';

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

 $payment = new MercadoPago\Payment();
 $payment->transaction_amount = 100;
 $payment->description = "Título do produto";
 $payment->payment_method_id = "pix";
 $payment->payer = array(
     "email" => "test@test.com",
     "first_name" => "Test",
     "last_name" => "User",
     "identification" => array(
         "type" => "CPF",
         "number" => "19119119100"
      ),
     "address"=>  array(
         "zip_code" => "06233200",
         "street_name" => "Av. das Nações Unidas",
         "street_number" => "3003",
         "neighborhood" => "Bonfim",
         "city" => "Osasco",
         "federal_unit" => "SP"
      )
   );

 $payment->save();

?>

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

var payment_data = {
  transaction_amount: 100,
  description: 'Título do produto',
  payment_method_id: 'pix',
  payer: {
    email: 'test@test.com',
    first_name: 'Test',
    last_name: 'User',
    identification: {
        type: 'CPF',
        number: '19119119100'
    },
    address:  {
        zip_code: '06233200',
        street_name: 'Av. das Nações Unidas',
        street_number: '3003',
        neighborhood: 'Bonfim',
        city: 'Osasco',
        federal_unit: 'SP'
    }
  }
};

mercadopago.payment.create(payment_data).then(function (data) {

}).catch(function (error) {

});


        
          
MercadoPagoConfig.setAccessToken("ENV_ACCESS_TOKEN");

PaymentClient client = new PaymentClient();

PaymentCreateRequest paymentCreateRequest =
   PaymentCreateRequest.builder()
       .transactionAmount(new BigDecimal("100"))
       .description("Título do produto")
       .paymentMethodId("pix")
       .dateOfExpiration(OffsetDateTime.of(2023, 1, 10, 10, 10, 10, 0, ZoneOffset.UTC))
       .payer(
           PaymentPayerRequest.builder()
               .email("test@test.com")
               .firstName("Test")
               .identification(
                   IdentificationRequest.builder().type("CPF").number("19119119100").build())
               .build())
       .build();

client.create(paymentCreateRequest);

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

payment_request = {
  transaction_amount: 100,
  description: 'Título do produto',
  payment_method_id: 'pix',
  payer: {
    email: 'test@test.com',
    identification: {
      type: 'CPF',
      number: '19119119100',
    }
  }
}

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


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

MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";

var request = new PaymentCreateRequest
{
    TransactionAmount = 105,
    Description = "Título do produto",
    PaymentMethodId = "pix",
    Payer = new PaymentPayerRequest
    {
        Email = "test@test.com",
        FirstName = "Test",
        LastName = "User",
        Identification = new IdentificationRequest
        {
            Type = "CPF",
            Number = "191191191-00",
        },
    },
};

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


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

payment_data = {
    "transaction_amount": 100,
    "description": "Título do produto",
    "payment_method_id": "pix",
    "payer": {
        "email": "test@test.com",
        "first_name": "Test",
        "last_name": "User",
        "identification": {
            "type": "CPF",
            "number": "191191191-00"
        },
        "address": {
            "zip_code": "06233-200",
            "street_name": "Av. das Nações Unidas",
            "street_number": "3003",
            "neighborhood": "Bonfim",
            "city": "Osasco",
            "federal_unit": "SP"
        }
    }
}

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

        
          
curl -X POST \
    -H 'accept: application/json' \
    -H 'content-type: application/json' \
    -H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
    'https://api.mercadopago.com/v1/payments' \
    -d '{
      "transaction_amount": 100,
      "description": "Título do produto",
      "payment_method_id": "pix",
      "payer": {
        "email": "test@test.com",
        "first_name": "Test",
        "last_name": "User",
        "identification": {
            "type": "CPF",
            "number": "19119119100"
        },
        "address": {
            "zip_code": "06233200",
            "street_name": "Av. das Nações Unidas",
            "street_number": "3003",
            "neighborhood": "Bonfim",
            "city": "Osasco",
            "federal_unit": "SP"
        }
      }
    }'

        

La respuesta va a mostrar el estado pendiente del pago y toda la información que necesitas para mostrar al comprador. El valor transaction_data te brindará los datos para disponibilizar la opción de pago a través de un código QR. Encontrarás los siguientes atributos:

json

{
  ...,
  "id": 5466310457,
  "status": "pending",
  "status_detail": "pending_waiting_transfer",
  ...,
  "transaction_details": {
      "net_received_amount": 0,
      "total_paid_amount": 100,
      "overpaid_amount": 0,
      "external_resource_url": null,
      "installment_amount": 0,
      "financial_institution": null
  },
  "point_of_interaction": {
      "type": "PIX",
      "sub_type": null,
      "application_data": {
        "name": "NAME_SDK",
        "version": "VERSION_NUMBER"
      },
      "transaction_data": {
        "qr_code_base64": "iVBORw0KGgoAAAANSUhEUgAABRQAAAUUCAYAAACu5p7oAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAIABJREFUeJzs2luO3LiWQNFmI+Y/Zd6vRt36KGNXi7ZOBtcagHD4kNLeiLX33v8DAAAAABD879sDAAAAAAA/h6AIAAAAAGSCIgAAAACQCYoAAAAAQCYoAgAAAACZoAgAAAAAZIIiAAAAAJAJigAAAABAJigCAAAAAJmgCAAAAABkgiIAAAAAkAmKAAAAAEAmKAIAAAAAmaAIAAAAAGSCIgAAAACQCYoAAAAAQCYoAgAAAACZoAgAAAAAZIIiAAAAAJAJigAAAABAJigCA...",
        "qr_code": "00020126600014br.gov.bcb.pix0117john@yourdomain.com0217additional data520400005303986540510.005802BR5913Maria Silva6008Brasilia62070503***6304E2CA",
        "ticket_url": "https://www.mercadopago.com.br/payments/123456789/ticket?caller_id=123456&hash=123e4567-e89b-12d3-a456-426655440000"
      }
  }
  ...,
}

Con el pago Pix también se puede definir el período de validez del código de pago enviado al cliente después de realizar el pedido, siendo este el período que el cliente tendrá que pagar por la compra. Por defecto, la fecha de vencimiento para pagos con Pix es de 24 horas, pero puedes cambiarla enviando el campo date_of_expiration en la solicitud de creación de pago. La fecha configurada debe estar entre 30 minutos y hasta 30 días a partir de la fecha de emisión.

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
$payment->date_of_expiration = "2020-05-30T23:59:59.000-04:00";

        

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
date_of_expiration: "2020-05-30T23:59:59.000-04:00",

        

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
PaymentCreateRequest paymentCreateRequest = PaymentCreateRequest.builder()
       .dateOfExpiration(OffsetDateTime.of(2023, 1, 10, 10, 10, 10, 0, ZoneOffset.UTC))

        

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
date_of_expiration: '2020-05-30T23:59:59.000-04:00',

        

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
paymentCreateRequest.DateOfExpiration = DateTime.Parse("2020-05-30T23:59:59.000-04:00");

        

La fecha usa el formato ISO 8601 format: yyyy-MM-dd'T'HH:mm:ssz

          

"date_of_expiration": "2020-05-30T23:59:59.000-04:00"

        

La fecha usa el formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz

          
"date_of_expiration": "2020-05-30T23:59:59.000-04:00",

        
Importante
Si el pago se intenta realizar fuera de la fecha de expiración establecida, la operación será rechazada.

Datos para efectuar el pago

Para que se efectúe el pago, deberás renderizar el código QR para poder mostrarlo. El código solo se puede usar una vez y se mostrará mientras siga siendo válido. También puedes agregar una opción para copiar y pegar el código de pago, que permitirá realizar la transacción desde una Banca por Internet.

Para renderizar el código QR y habilitar el recurso de copiar y pegar, sigue los pasos a continuación

  1. Tienes que agregar el qr_code_base64 para poder mostrar el código QR. Por ejemplo, puedes renderizarlo de la siguiente manera:

html

<img src={`data:image/jpeg;base64,${qr_code_base64}`/>
  1. Para mostrar la opción que te permitirá copiar y pegar el código de pago, puedes sumar el qr_code de esta forma:

html

<label for="copiar">Copiar Hash:</label>
<input type="text" id="copiar"  value={qr_code}/>
Importante
Si necesitas devolver un pago realizado a través de una transferencia Pix, puedes encontrar esta información en Devoluciones y cancelaciones.