Inserindo o Checkout Pagar.me

❗️

Você está na versão correta da documentação?

Verifique na sua Dashboard a versão da API que você está usando. Você deve usar a documentação correspondente. Para saber mais, veja: Versionamento.

Para inserir o checkout na sua página é necessário importar o seu script através da tag <script src="https://assets.pagar.me/checkout/1.1.0/checkout.js">.

O primeiro passo para configurar o checkout é definir seus parâmetros e regras. Na seção Configurações do checkout é possível verificar com mais detalhes cada campo que pode ser customizado, para esse exemplo foi utilizada a configuração mais simples possível, onde é informado apenas o valor da compra, o item comprado e são configuradas as regras para o checkout receber os dados do comprador (customerData:true) e autorizar a transação (createToken:true).

O createToken irá definir se o checkout deve criar uma transação ou apenas servir como formulário de dados. Quando o createToken é “true” o checkout irá autorizar uma transação lhe retornando um token de captura, status da transação e número de parcelas. Caso esse parâmetro esteja setado como “false”, o checkout servirá como um formulário apenas encriptando os dados do cartão do cliente na forma de um card_hash, retornando assim os dados preenchidos junto do card_hash.

A configuração “customerData” por sua vez define se o checkout deve pedir dados de endereço, email e nome do comprador. Caso essa configuração esteja desabilitada e deseje que o checkout crie uma transação é necessário enviar os dados do comprador no momento de abertura do checkout, utilizando os parâmetros customer, billing e shipping.

<script>
checkout.open({
  amount: 1500,
  customerData: 'true',
  createToken: 'true',
  items: [{
        id: '1',
        title: ‘ebook’,
        unit_price: 1500,
        quantity: 1,
        tangible: 'false'
  }]
})
</script>

Uma vez importado o script e configurados os campos desejados, é necessário que exista uma função para acessar os dados do checkout. O checkout possui 3 eventos distintos que podem ser tratados na sua aplicação: sucesso (sucess), erro (error) e fechamento (close).

<script>
  var button = document.querySelector('button');
 
  // Abrir o checkout ao clicar no botão
  button.addEventListener('click', function() {     

    // inicia a instância do checkout
    var checkout = new PagarMeCheckout.Checkout({
      encryption_key: 'SUA ENCRYPTION KEY',
      success: function(data) {
        console.log(data);
      },
      error: function(err) {
        console.log(err);
      },
      close: function() {
        console.log('The modal has been closed.');
      }
    });             
  });
</script>

A página HTML completa ficaria da seguinte maneira:

<html>
  <head>
    <!-- SCRIPT PAGAR.ME -->
    <script src="https://assets.pagar.me/checkout/1.1.0/checkout.js"></script>
  </head>
  <body>
    <button id="pay-button">Abrir modal de pagamento</button>

    <script>
      var button = document.querySelector('button');
      
      // Abrir o modal ao clicar no botão
      button.addEventListener('click', function() {     
            
        // inicia a instância do checkout
        var checkout = new PagarMeCheckout.Checkout({
          encryption_key: 'SUA ENCRYPTION KEY',
          success: function(data) {
            console.log(data);
          },
          error: function(err) {
            console.log(err);
          },
          close: function() {
            console.log('The modal has been closed.');
          }
        });             

        checkout.open({
          amount: 10000,
          customerData: 'true',
          createToken: 'true',
    			items: [{
            id: '1',
            title: ‘ebook’,
            unit_price: 1500,
            quantity: 1,
            tangible: 'false'
          }]
        })
      });
    </script>
  </body>
</html>

Por conta do parâmetro "createToken:true" o checkout irá autorizar uma transação. Uma transação criada e autorizada pelo checkout Pagar.me permanece assim por até 5 horas, sendo necessário realizar a captura da mesma através do seu servidor. Caso a captura não seja realizada a transação será ESTORNADA.

Para realizar a captura de uma transação gerada pelo checkout será necessário enviar as informações da mesma para o seu servidor, para que ele realize essa operação. Para realização da captura, é necessário o token retornado pelo checkout, o valor da transação e a chave de API. É extremamente importante que a captura seja realizada à partir do seu servidor (backend), isso porque essa operação é feita através da chave de API, dado sensível que permite a realização de TODAS as operações junto da API. NÃO faça a captura em ambientes do lado de seu cliente, como por exemplo, mas não limitado a: aplicativos mobile, páginas web via chamadas ajax e aplicativos desktop.

A rota utilizada para a operação de captura é a rota /transactions. É possível verificar os detalhes dessa rota através da referência da documentação: /capture. Lembrando que é através da mesma que serão enviados os dados de metadata e split_rules caso sejam necessários.

No nosso github é possível encontrar exemplos de aplicações que enviam os dados retornados pelo checkout para o backend e realizam a captura dos mesmos.

O checkout Pagar.me não cria recorrências, porém o mesmo pode ser utilizado como formulário de dados e assim criar a recorrência à partir do endpoint /subscriptions. Para mais detalhes verifique a página de configurações do checkout.