Tratamento de callbacks com resultados de pagamento - Fluxo de pagamento - Mercado Pago Developers
Qual documentação você quer buscar?

Não sabe como começar a integrar? 

Acesse os primeiros passos

Tratamento de callbacks com resultados de pagamento

Existem três tipos de callbacks que podem ser configurados para capturar o resultado do fluxo de pagamento. Dois deles são configurados quando o fluxo de pagamento é lançado, que são por URL e por funções nativas do JavaScript, e o outro é através de eventos globais.

Veja abaixo um exemplo de cada tipo de retorno de chamada personalizado.

URL de retorno

Com uma URL de callback configurada para quando o fluxo de pagamento for bem-sucedido, é possível obter os dados de pagamento da seguinte forma:

javascript

let urlQueryString = window.location.search;
let urlParams = new URLSearchParams(urlQueryString);
// Obtendo erro de dados de pagamento a partir de dados de evento
let paymentType = urlParams.get('payment_type');
let paymentReference = urlParams.get('payment_reference');
let metadata = urlParams.get('metadata');
	
/**  
* Escreva o código aqui...
**/ 	

Com uma URL de callback configurada para quando o fluxo de pagamento falhar, é possível obter os dados de pagamento da seguinte forma:

javascript

let urlQueryString = window.location.search;
let urlParams = new URLSearchParams(urlQueryString);
// Obtendo erro de dados de pagamento a partir de dados de evento
let errorStatus = urlParams.get('error_status');
let metadata = urlParams.get('metadata');
	
/**  
* Escreva o código aqui...
**/ 	

Callbacks de funções nativas do JavaScript

Tendo configurado uma função de callback JavaScript ao iniciar o fluxo de checkout, os dados de pagamento podem ser obtidos da seguinte forma.

Exemplo de callback de sucesso:

javascript

function callback_payment_success(data) {
	let paymentType = data["payment_type"]; 
	let paymentReference = data["payment_reference"]; 
	
	// Seu código aqui...
}

Exemplo de callback de erro:

javascript

function callback_payment_error(data) {
	let errorStatus = data["error_status"]; 
	let metadata = data["metadata"]; 
	
	// Seu código aqui...
}

Eventos globais

Independente do tipo de callback que for configurado ao lançar o fluxo de pagamento, o sistema enviará um evento global em JavaScript quando o fluxo for concluído com sucesso ou quando o fluxo de pagamento falhar.

Esses eventos são nomeados PointPayment.Success para quando for bem sucedido e PointPayment.Error para quando falhou. A seguir, você confere como capturar o evento em cada caso.

Exemplo de implementação com tratamento do evento de pagamento bem-sucedido:

javascript

window.addEventListener("PointPayment.Success", (event) => {

   let data=event.detail;
   // Obtendo erro de dados de pagamento a partir de dados de evento
   let paymentType = data["payment_type"];
   let paymentReference = data["payment_reference"];
   let paymentCreationDate = data["payment_creation_date"];
   let paymentAmount = data["payment_amount"];
   let serialNumberDevice = data["payment_sn_device"];

   let metadata = data['metadata'];

   if(paymentType == "credit" || paymentType == "debit" || paymentType == "voucher"){
       let installments = data["payment_installments"];
       let brandName = data["payment_brand_name"];
   }

   // Seu código aqui...
});

Exemplo de implementação com tratamento do evento de falha de pagamento:

javascript

window.addEventListener("PointPayment.Error", (event) => {
  
	let data=event.detail;
	// Obtendo erro de dados de pagamento a partir de dados de evento
	let errorStatus = data["error_status"]; 
	let metadata = data['metadata'];
	
	// Seu código aqui...
});

Dados de retorno de chamada bem-sucedidos

Quando um fluxo de pagamento é concluído com sucesso, os seguintes dados são enviados no callback de sucesso.

Parâmetros de resposta:

ParâmetroTipoValores possíveisDescrição
payment_typestringcrédito, débito, voucher, qr e linkIndica o tipo de pagamento efetuado.
payment_referencestringpaymentId ou um link de pagamentoIndica uma referência do tipo de pagamento.
payment_creation_datenumberyyyy-MM-dd'T'HH:mm:ss'Z'Indica a data e hora do pagamento usando o formato ISO INSTANT.
payment_sn_devicenumber-Indica o número de série do dispositivo.
payment_amountnumber0.01 <= n < 50000Indica o valor total do pagamento.
payment_installmentsnumber-Indica o número de parcelas (crédito, débito e voucher), quando aplicado.
payment_brand_namestring-Indica a bandeira do cartão (crédito, débito e voucher), quando aplicado.

Dados de retorno de callback de erro

Quando um erro ou cancelamento ocorrem, os dados abaixo são enviados.

Parâmetros de resposta:

ParâmetroTipoValores possíveisDescrição
error_statusstringcanceled e unknownIndica o tipo de falha que ocorreu durante o processo, podendo ser que o fluxo de caixa foi cancelado ou de que ocorreu um erro desconhecido no fluxo de coleta que não pôde ser determinado.
metadatastringobjeto Json como uma stringAs informações adicionais fornecidas pelo MiniApp ao iniciar o fluxo de pagamento.