Recursos para IA

PSE

Server-Side

Para efetuar o pagamento com PSE, antes de efetuar o pagamento com os SDKs do backend, é necessário enviar tanto dados fornecidos pelo callback onSubmit quanto outros dados referentes ao pagador, sendo eles:

CampoDescriçãoPresente no callback onSubmit do brickPossíveis valores/validações
transaction_amountValor do pagamento.SimQualquer valor maior que 0.
transaction_details.financial_institutionBanco informado para efetuar a transferência eletrônica.SimDeve corresponder a um banco existente e não pode ser enviado nulo ou vazio.
payer.entity_typeTipo de pessoa, física ou jurídica.Simindividual ou association.
payer.identification.typeTipo de documento do comprador.SimValores enviados pelo brick:
-CC (Cédula de Ciudadanía)
-CE (Cédula de Extranjería)
-NIT
-Otro
Valores aceitos (além dos enviados por brick):
-TE (Tarjeta de Extranjería)
-RC (Registro Civil de Nacimiento)
-TI (Tarjeta de Identidad)
-PAS (Pasaporte)
- DI (Documento de Identificación)
payer.identification.numberNúmero do documento do comprador.SimString.
Deve ter de 1 até 15 posições numéricas. Se é do tipo "pasaporte", aceitará valores alfanuméricos.
payer.first_nameNome do comprador.NãoDeve ter de 1 até 32 posições.
payer.last_nameSobrenome do compradorNãoDeve ter de 1 até 32 posições.
payer.address.zip_codeCódigo postal do comprador.NãoDeve ter exatamente 5 posições.
payer.address.street_nameNome da rua onde o comprador reside.NãoDeve ter de 1 até 18 posições.
payer.address.street_numberNúmero da residência do comprador.NãoDeve ter de 1 até 5 posições.
payer.address.neighborhoodNome do bairro onde o comprador reside.NãoDeve ter de 1 até 18 posições.
payer.address.cityCidade do comprador.NãoDeve ter de 1 até 18 posições.
payer.phone.area_codeCódigo de área do telefone do comprador.NãoDeve ter 3 posições.
payer.phone.numberNúmero de telefone do comprador.NãoString.
Deve ter de 1 até 5 posições e só aceita caracteres numéricos.
descriptionDescrição do produto ou compra.NãoString. Não possui número mínimo de caracteres.
additional_info.ip_addressEndereço do IP do comprador, onde o pagamento é gerado.NãoString. Não possui número mínimo de caracteres.
callback_urlPágina onde o comprador é redirecionado por padrão após efetuar o pagamento dentro da página do banco, quando o comprador indica que deseja retornar à loja.
Pode ver mais informações nas seções Redirecionar o comprador ao PSE e Mostrar status de pagamento.
NãoDeve ter, no máximo, 512 caracteres e não pode ser nulo ou vazio.
notification_urlURL usada para notificar a aplicação de que a transferência foi concluída.NãoDeve ter, no máximo, 512 caracteres e não pode ser nulo ou vazio.
Importante
O envio das informações listadas, sejam ou não enviadas pelo brick, é necessário para conclusão do pagamento e será obrigatória a partir de 31/12/2024. Estas informações podem ser obtidas, por exemplo, com um formulário ou com dados cadastrais do pagador.

Abaixo estão alguns exemplos de como enviar pagamentos PSE para o Mercado Pago.

<?php
use MercadoPago\Client\Common\RequestOptions;
use MercadoPago\Client\Payment\PaymentClient;
use MercadoPago\MercadoPagoConfig;

MercadoPagoConfig::setAccessToken("YOUR_ACCESS_TOKEN");

$client = new PaymentClient();
$request_options = new RequestOptions();
$request_options->setCustomHeaders(["X-Idempotency-Key: <SOME_UNIQUE_VALUE>"]);

$client = new PaymentClient();
$createRequest = [
  "transaction_amount" => 5000,
  "description" => "Product description",
  "payment_method_id" => "pse",
  "callback_url" => "http://www.your-site.com",
  "notification_url" => "http://www.your-site.com",
  "additional_info" => [
    "ip_address" => "127.0.0.1"
  ],
  "transaction_details" => [
    "financial_institution" => $_POST['financialInstitution']
  ],
  "payer" => [
    "email" => $_POST['email'],
    "entity_type" => "individual",
    "first_name" => $_POST['firstName'],
    "last_name" => $_POST['lastName'],
    "identification" => [
        "type" => $_POST['identificationType'],
        "number" => $_POST['identificationNumber']
    ],
    "address" => [
        "zip_code" => $_POST['zipCode'],
        "street_name" => $_POST['streetName'],
        "street_number" => $_POST['streetNumber'],
        "neighborhood" => $_POST['neighborhood'],
        "city" => $_POST['city'],
        "federal_unit" => $_POST['federalUnit']
    ],
    "phone" => [
        "area_code" => $_POST['phoneAreaCode'],
        "number" => $_POST['phoneNumber']
    ],
  ],
];

$payment = $client->create($createRequest, $request_options);
print_r($payment);
?>

Veja abaixo um exemplo da resposta:

json
{
   "id": 1312147735,
    ...,
   "operation_type": "regular_payment",
   "payment_method_id": "pse",
   "payment_type_id": "bank_transfer",
   "payment_method": {
       "id": "pse",
       "type": "bank_transfer"
   },
   "status": "pending",
   "status_detail": "pending_waiting_transfer",
    ...,
   "description": "Título do produto",
    ...,
   "callback_url": "http://www.your-site.com",
   "installments": 1,
   "transaction_details": {
    ...,
       "total_paid_amount": 10000,
    ...,
       "external_resource_url": "https://www.mercadopago.com.co/sandbox/payments/1312147735/bank_transfer?caller_id=1148920820&hash=f41dd14f-b3a6-4ac4-9b78-5cfeb5a35e77",
    ...,
       "financial_institution": "1009",
    ...,
       "bank_transfer_id": 129229,
       "transaction_id": "10022214"
   },
}

A resposta, como você pode ver no json acima, mostrará o status pendente até que o comprador efetue o pagamento.

Redirecionar o comprador ao PSE

Depois de criar o pagamento em seu backend com a SDK do Mercado Pago, é preciso redirecionar o comprador para a plataforma de PSE para a realização da transferência bancária. Após a realização do pagamento, o comprador será redirecionado de volta ao seu site. Para executar esse fluxo, basta seguir os seguintes passos:

  1. Após a criação do pagamento em seu backend, utilize o campo id recebido na resposta para renderizar o Status Screen Brick no seu frontend. Este Brick informará o usuário de que o levaremos para a página do PSE e poucos segundos depois o redirecionamento ocorre automaticamente.

  2. Quando o comprador finalizar o pagamento na plataforma PSE, ele será redirecionado para o seu site através da callback_url que nos foi enviada na criação do pagamento. Além disso, será adicionado o campo payment_id como parâmetro de URL nesse callback. Dessa maneira, você pode renderizar novamente o Status Screen Brick para que o comprador veja no seu site o status final do pagamento.

payment-loading-pse-redirect

Mostrar status de pagamento

Uma vez que o pagamento já foi concluído, também é possível continuar usando o Status Screen Brick para mostrar o status do pagamento ao usuário em seu site, por exemplo. Basta criar a instância da tela de status usando o ID de pagamento.

payment-status-pse

Teste sua integração

Com a integração finalizada, você poderá testar o recebimento de pagamentos. Para mais informações, acesse a seção Realizar compra teste.