Open Finance
Open Finance Ă© um novo sistema financeiro que permite que vocĂȘ tenha total controle dos seus dados e mais liberdade com suas finanças. Com ele Ă© possĂvel compartilhar histĂłricos financeiros com outras instituiçÔes para ter acesso a produtos e serviços mais vantajosos.
Com o Open Finance serĂĄ possĂvel oferecer pagamentos Pix no Checkout Transparente, utilizando saldos que estejam em instituiçÔes financeiras distintas daquela que estĂĄ iniciando o pagamento.
Criar um pagamento Pix
Antes de iniciar uma cobrança utilizando Open Finance é preciso ter configurado o meio de pagamento Pix. Para saber como realizar a configuração e a integração, acesse a documentação clicando aqui.
Uma vez que vocĂȘ tenha configurado o meio de pagamento corretamente, serĂĄ preciso inserir uma nova informação Ă requisição de criar pagamento, atravĂ©s do parĂąmetro point_of_interaction
, indicando a modalidade Open finance. Isso Ă© vĂĄlido tanto via API, quanto pelos nossos SDKs, conforme os exemplos a seguir:
MercadoPago\SDK::setAccessToken("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"
),
);
$payment->point_of_interaction = array(
"linked_to" => "openfinance"
);
$payment->save();
mercadopago.configurations.setAccessToken("access_token");
var payment = {
transaction_amount: 100,
description: 'description',
payment_method_id: 'pix',
payer: {
email: 'test@test.com'
},
point_of_interaction: {
linked_to: "openfinance"
}
};
mercadopago.payment.create(payment).then(function (data) {
console.log(data.response);
}).catch(function (error) {
console.log(error);
});
MercadoPagoConfig.setAccessToken("access_token");
PaymentClient client = new PaymentClient();
PaymentCreateRequest createRequest =
PaymentCreateRequest.builder()
.transactionAmount(new BigDecimal(100))
.description("description")
.paymentMethodId("pix")
.pointOfInteraction(
PaymentPointOfInteractionRequest.builder().linkedTo("openfinance").build())
.payer(PaymentPayerRequest.builder().email("test@test.com").build())
.build();
Payment payment = client.create(createRequest);
sdk = Mercadopago::SDK.new('access_token')
payment_request = {
transaction_amount: 100,
description: 'description',
payment_method_id: 'pix',
payer: {
email: 'test@test.com'
},
point_of_interaction: {
linked_to: "openfinance"
}
}
payment_response = sdk.payment.create(payment_request)
payment = payment_response[:response]
MercadoPagoConfig.AccessToken = "access_token";
var request = new PaymentCreateRequest
{
TransactionAmount = 100,
Description = "description",
PaymentMethodId = "pix",
Payer = new PaymentPayerRequest
{
Email = "test@test.com"
},
PointOfInteraction = new PaymentPointOfInteractionRequest
{
LinkedTo = "openfinance"
}
};
var client = new PaymentClient();
Payment payment = await client.CreateAsync(request);
sdk = mercadopago.SDK("access_token")
payment_data = {
"transaction_amount": 100,
"description": "description",
"payment_method_id": "pix",
"payer": {
"email": "test@test.com"
},
"point_of_interaction": {
"linked_to": "openfinance"
}
}
payment_response = sdk.payment().create(payment_data)
payment = payment_response["response"]
curl --location --request POST 'https://api.mercadopago.com/v1/payments' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"transaction_amount": 1000,
"description": "Teste Pix Open Finance",
"payment_method_id": "pix",
"payer": {
"email": "test_user_19734329@testuser.com"
},
"point_of_interaction": {
"linked_to": "openfinance"
},
"callback_url": "https://example.com"
}'
O retorno da requisição serå muito similar ao retorno de um pagamento com Pix comum, com algumas mudanças:
- O valor openfinance em
point_of_interaction.linked_to
- Valor null em
point_of_interaction.transaction_data.qr_code
epoint_of_interaction.transaction_data.qr_code_base64
- Valor de
point_of_interaction.transaction_data.ticket_url
com url para aplicação que finaliza o pagamento por Open Finance
Resposta:
json
{ "point_of_interaction": { "linked_to": "openfinance", "transaction_data": { "qr_code": null, "ticket_url": "https://mercadopago.com.br/payments/1111111111/openfinance?caller_id=11111111&hash=1111", "qr_code_base64": null } } }
Finalizar pagamento
Com a resposta da requisição de criação de pagamento, basta utilizar a url disponĂvel no objeto point_of_interaction.transaction_data.ticket_url
para que o comprador consiga finalizar o pagamento através de Open Finance.
Para isso, Ă© preciso redirecionar o usuĂĄrio para a URL diretamente ou apresentar um botĂŁo que faz o redirecionamento quando clicado.
A imagem a seguir apresenta um exemplo deste fluxo na visĂŁo do usuĂĄrio:
Testar integração
Para testar a integração é necessårio utilizar uma credencial de testes ao criar um pagamento e possuir um usuårio de testes com Chave Pix cadastrada. Clique aqui para acessar a documentação e encontrar mais detalhes sobre como fazer isso.
Crie um pagamento Pix Open Finance e utilize a URL disponĂvel no atributo point_of_interaction.transaction_data.ticket_url
para acessar a pĂĄgina de redirecionamento.
json
{ "point_of_interaction": { "linked_to": "openfinance", "transaction_data": { "qr_code": null, "ticket_url": "https://mercadopago.com.br/payments/1111111111/openfinance?caller_id=11111111&hash=1111", "qr_code_base64": null } } }
Nesta pĂĄgina, vocĂȘ terĂĄ acesso Ă s informaçÔes do pagamento e terĂĄ a possibilidade de selecionar apenas o banco 370 - Mercado Pago - Payments para dar continuidade ao teste.
Ao selecionar o banco indicado, serĂĄ possĂvel Confirmar o pagamento e por fim, ocorrerĂĄ o redirecionamento para a tela de Feedback definido no parĂąmetro callback_url
.