Tokenização

Ao criar transações com cartão de crédito, é necessário passar o token, o bin e a bandeira do cartão na requisição.

Existem dois tipos de tokens que podem ser gerados:

Token vinculado a uma carteira do consumidor: Para isso, basta enviar o customer_id na requisição. O token gerado estará associado ao consumidor, permitindo sua reutilização em futuras transações realizadas por esse mesmo cliente.
Token por transação, não vinculado ao consumidor: Esse token é válido apenas para uma única transação e não requer o envio do customer_id. É ideal para situações em que não há necessidade de vincular a transação a um cliente específico.

Para gerar esses dados, é muito simples! Você só precisará importar nossa biblioteca javascript de tokenização em seu front-end e utilizar uma das duas maneiras de implementação:

Importar a biblioteca SDK:

Para todas as formas de implementação, importe nossa biblioteca no front-end:

Ambiente de Produção: https://apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js

Ambiente Sandbox: https://hml-apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js


<script type="text/javascript" src="https://apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js"></script>

<script type="text/javascript" src="https://hml-apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js"></script>

Opção 1: Implementar com Java Script:

Faça uma requisição ao método getTokenCard() para obter como resposta o token, bin e bandeira, exemplo:

Exemplo de uso:


<script type="text/javascript" src="https://apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js"></script>

<form action="#" method="post">
  
  	<!-- Outros campos do seu formulário ... -->
  
  	<input type="hidden" name="token" id="token">
  	<input type="hidden" name="brand" id="brand">
  	<input type="hidden" name="bin" id="bin">

  	<input type="submit" value="Enviar" onclick="sendForm()">
</form>
  
<script>

	function sendForm() {

		//Sua chave pública:
    let public_key = 'pk_6d05f363eb03512dd0960af902bacba18be7329dab32322d';
    
    //Dados do cartão:
  	let data_card = {
    	name: 'João da Silva', //Nome do cartão
      document: '11111111111', //CPF ou CNPJ
      customer_id: '',//Id do consumidor caso queira gerar um token de carteira
      number: '5147430374257642',//Número do cartão
      cvv: '652', //Código de segurança
      month: '01', //Mês que expira
      year: '25' //Ano que expira
    }
    
    let installments = 1; //quantidade de parcelas
    
    getTokenCard(public_key, data_card, installments, function (data) {
      
    	console.log('resposta: ', data);
      
      if (data.token) {
      	document.getElementById('token').value = data.token;
        document.getElementById('brand').value = data.brand;
        document.getElementById('bin').value = data.bin;
        // form.submit();
      } else {
      	alert("ERRO: " + data.msgError);
      }
      
    });
   }
</script>
// DomPagamentoForm.tsx
import React, { useState, useEffect, useRef } from 'react';

declare global {
  interface Window {
    getTokenCard: (
      publicKey: string,
      cardData: any,
      installments: number,
      callback: (data: any) => void
    ) => void;
    module?: any; 
  }
}

const DomPagamentoForm: React.FC = () => {
  const formRef = useRef<HTMLFormElement>(null);

  const [formData] = useState({
    name: 'João da Silva',
    document: '11111111111',
    number: '5147430374257642',
    cvv: '652',
    month: '01',
    year: '25',
    customer_id: '',
    installments: 1,
  });

  const [tokenData, setTokenData] = useState({
    token: '',
    brand: '',
    bin: '',
  });

  // Carrega o SDK no carregamento do componente
  useEffect(() => {
    
    (window as any).module = {};

    const script = document.createElement('script');
    script.src = 'https://apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js';
    script.async = true;
    script.onload = () => {
      delete (window as any).module;
      console.log('SDK da Dom Pagamentos carregado com sucesso.');
    };
    document.body.appendChild(script);
  }, []);

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();

    const publicKey = 'pk_6d05f363eb03512dd0960af902bacba18be7329dab32322d';

    if (typeof window.getTokenCard !== 'function') {
      alert('SDK DomPagamentos ainda não carregada.');
      return;
    }

    const dataCard = {
      name: formData.name,
      document: formData.document,
      customer_id: formData.customer_id,
      number: formData.number,
      cvv: formData.cvv,
      month: formData.month,
      year: formData.year,
    };

    window.getTokenCard(publicKey, dataCard, formData.installments, (data: any) => {
      console.log('resposta:', data);
      if (data.token) {
        setTokenData({
          token: data.token,
          brand: data.brand,
          bin: data.bin,
        });

        alert('Token obtido com sucesso!');
      } else {
        alert(`ERRO: ${data.msgError}`);
      }
    });
  };

  return (
    <form onSubmit={handleSubmit} ref={formRef}>
      {

      <input type="hidden" name="token" value={tokenData.token} />
      <input type="hidden" name="brand" value={tokenData.brand} />
      <input type="hidden" name="bin" value={tokenData.bin} />

      <button type="submit">Enviar</button>
    </form>
  );
};

export default DomPagamentoForm;


Opção 2 - Implementar através de atributos nos campos do seu formulário:

Inclua nos campos do seu formulário nossos atributos data-dompag com seus respectivos valores:

AtributoCampo no formulárioExemplo de valor do campo
data-dompag="number"Número do cartão de crédito4871 2689 6999 1111
data-dompag="verification_value"Código de segurança (CVV)124
data-dompag="full_name"Nome do titular do cartãoJoão da Silva
data-dompag="expiration"Data de expiração do cartão12/30
data-dompag="document"Documento do titular (CPF)111111111-11
data-dompag="birthdate"Data de nascimento do titular01/01/2000
data-dompag="installments"Quantidade de parcelas da compra12
data-dompag="token-card"Token retornado pelo SDKlMIS2rqea7p+AB6n0LNfWAMO4CccY1FKxygShPSWCfl
data-dompag="brand-card"Bandeira do cartão retornada pelo SDK (pode ser nula)Visa
data-dompag="bin-card"6 primeiros e 4 últimos digitos do cartão retornados pelo SDK487126**1111
data-dompag="customer_id"Id do consumidor se desejar criar um token da carteira04a26aa2-e781-472e-88d0-6e958ed972g3

Exemplo de uso:

<form id="payment-form" action="#" method="POST">

    <div>
        <div>
            <input placeholder="Número do Cartão" type="text" data-dompag="number" />
        </div>
        <div>
            <input placeholder="CVV" type="text" data-dompag="verification_value" />
        </div>
        <div>
            <input placeholder="Titular do Cartão" type="text" data-dompag="full_name" />
        </div>
        <div>
            <input  placeholder="Expiração (MM/AA)" type="text" value="12/30" data-dompag="expiration" />
        </div>
        <div>
            <input placeholder="CPF" type="text" value="" data-dompag="document" />
        </div>
        <div>
            <input placeholder="Nascimento (DD/MM/YYYY)" type="text" value="01/01/2000"  />
        </div>
        <div>
            <input placeholder="Celular" type="text" value=""  data-dompag="phone"/>
        </div>

        <div>
            <input  placeholder="Parcelas" type="number" value="1" data-dompag="installments" />
        </div>
     
    </div>


    <div class="token-area">

        <label for="token">Token do Cartão de Crédito - Enviar para seu Servidor</label>
      <input type="text" name="token" id="token" placeholder="Token" size="50" data-dompag="token-card" />
        <input type="text" name="brand" id="brand" placeholder="Bandeira" data-dompag="brand-card" />
        <input type="text" name="bin" id="bin" placeholder="Bin" size="30" data-dompag="bin-card" />
    </div>

    <div>
       <input type="hidden" value="" data-dompag="customer_id" />  
        <button type="button" onclick="sendForm()">Salvar</button>
    </div>

</form>

<script type="text/javascript" src="https://apiv3.dompagamentos.com.br/js/sdk-dompagamentos.min.js"></script>

<script>

    function sendForm() {


        let public_key = '{sua_chave_publica}';

        initTokenCard(public_key, 'payment-form', function (data) {

            if (data.token) {
                document.getElementById('token').value = data.token;
                document.getElementById('brand').value = data.brand;
                document.getElementById('bin').value = data.bin;
                document.getElementById('payment-form').submit();
            } else {
                alert("ERRO: " + data.msgError);
            }
        });
    }
</script>

Chave Pública

Para executar o script SDK, será necessário fornecer sua chave pública, ela fica disponível através do painel da conta, menu Segurança -> Token para checkout