Como eu cadastro perfis de pagamento via API?

No momento do desenvolvimento da integração com a plataforma Vindi, provavelmente você irá se deparar com a necessidade de cadastrar os dados do cartão de crédito do cliente. A plataforma Vindi possui 2 endpoints diferentes para cadastro de perfis de pagamento:

  • API privada;
  • API pública.

 

API privada

Este é o método usado para cadastro de perfis de pagamento onde a requisição é originada a partir dos servidores da sua empresa, usando a chave privada da API Vindi.

Você precisará obter os dados a partir de um formulário próprio, recebê-los em seu backend e encaminhá-los para a Vindi através do método POST /payment_profiles:

POST https://app.vindi.com.br/api/v1/payment_profiles
{ "holder_name": "José da Silva", "card_expiration": "12/2018", "card_number": "5167454851671773", "card_cvv": "123", "payment_method_code": "credit_card", "payment_company_code": "mastercard", "customer_id": 51}

Através deste método, os dados sensíveis do cartão do cliente irão trafegar pelos seus servidores e você deve assegurar que o mesmo não é armazenado de nenhuma forma.

Mesmo sem armazenar os dados, a especificação PCI-DSS poderá exigir a certificação do seu ambiente simplesmente porque há tráfego de informações sensíveis em seu ambiente.

 

API pública

Para mitigar riscos e reduzir o escopo de adequação à especificação PCI, recomendamos que os dados sensíveis sejam enviados para a plataforma Vindi diretamente a partir do browser do usuário através do método POST /public/payment_profiles.

Segue abaixo um exemplo simples usando jQuery:

var profile = {  "holder_name": "José da Silva",  "card_expiration": "12/2018",  "card_number": "5167454851671773",  "card_cvv": "123",  "payment_method_code": "credit_card",  "payment_company_code": "mastercard"} 
$.ajax({ type: "POST", url: "https://app.vindi.com.br/api/v1/public/payment_profiles", dataType: "json", headers: { "Authorization": "Basic " + btoa("CHAVE_PÚBLICA" + ":") }, data: profile}).success(function(data) { console.log(data); alert(data.payment_profile.gateway_token);}).error(function(request, status, error) { console.log(error); console.log(request.responseText); alert('Erro ao cadastrar perfil de pagamento');});

 

O exemplo acima efetua o cadastro de um novo perfil de pagamento e retorna seu respectivo gateway_token que por sua vez deverá ser enviado para seu backend por um formulário e registrado através da API privada, informando o código do cliente:

POST https://app.vindi.com.br/api/v1/payment_profiles
{ "gateway_token": "5c303e1c-964d-4602-a62c-e9ea80ad7cc4", "customer_id": 51,
"payment_method_code": "credit_card"
}

Esta operação deve ser executada em até 5 minutos a partir do cadastro inicial, caso contrário o cartão será removido da plataforma Vindi. 

Observe que, diferente do primeiro método de envio, a API pública permite que o cartão seja cadastrado sem que os dados trafeguem pelo seu servidor, porém ainda permite que você associe o cliente via backend. Embora o desenvolvimento seja consideravelmente trabalhoso, os riscos são drasticamente reduzidos.

A API pública é suportada apenas pelo browsers compatíveis com a especificação CORS.

 

Resumo do fluxo da API pública

O diagrama abaixo exibe um exemplo do fluxo da comunicação entre os componentes envolvidos:

  • Cliente: Usuário que acessa a loja e deseja efetuar uma compra;
  • Checkout Merchant: Interface web fornecida pela loja para preenchimento das informações de pagamento;
  • Backend Merchant: Aplicação web que recebe e processa as requisições do checkout frontend;
  • Vindi: Plataforma responsável pela gestão de pagamentos e assinaturas.

 

fluxo.png