Skip to main content
O SDK de Tokenização roda no navegador. Por isso, a apiKey informada ao SDK fica visível para qualquer pessoa que abrir a página do checkout, seja no HTML, no bundle JavaScript ou nas requisições de rede. Para o SDK, use sempre uma sub-key gerada no seu backend, só com o escopo tokens e com validade curta. A chave secreta da sua conta fica só no seu servidor.
Nunca use a chave secreta da sua conta (a chave do Dashboard) na apiKey do SDK. Ela dá acesso a toda a API.

Como funciona

  • A chave secreta só aparece nas chamadas entre o seu backend e a Malga.
  • O navegador recebe apenas a sub-key, com escopo tokens e válida por 15 minutos.
  • Cada abertura do checkout gera uma sub-key nova.

1. Crie a sub-key no backend

Crie no seu backend uma rota que o checkout chama ao abrir a tela de pagamento. Essa rota deve:
  1. Chamar POST /v1/auth com o X-Client-Id e a chave secreta da sua conta, pedindo {"scope": ["tokens"], "expires": 900}.
  2. Devolver ao front-end só o publicKey e o clientId da resposta, nunca a chave secreta.
Guarde a chave secreta em variáveis de ambiente ou em um cofre de segredos do servidor. Use https://sandbox-api.malga.io com as credenciais de Sandbox e https://api.malga.io com as de Produção. Requisição:
Resposta 201:
O campo expires é em segundos. 900 equivale a 15 minutos. Veja a tabela de prazos em Criar sub-key.

2. Crie a instância do SDK com a sub-key

No front-end, busque a sub-key na rota do seu backend (no exemplo, /checkout/malga-key) e só depois crie a instância. Não crie a instância no carregamento do módulo com uma chave fixa.
checkout.ts
Em React, Vue ou Angular, busque a sub-key no mesmo ponto em que você cria a instância (por exemplo, no useEffect, no onMounted ou no ngOnInit) e chame destroy() na desmontagem.

Quando a sub-key expira

A instância usa a apiKey informada na criação. Depois do prazo de expires, a API recusa a tokenização com essa sub-key.
  • Crie a sub-key quando o cliente abrir a tela de pagamento, não no início da navegação na loja.
  • Se a sua jornada de pagamento costuma passar de 15 minutos, use um prazo um pouco maior, como 3600 (1 hora), em vez de uma chave sem expiração.
  • Para trocar a sub-key, chame destroy() na instância atual, busque uma sub-key nova no backend e crie outra instância. Os dados digitados nos campos não são mantidos, então peça ao cliente para digitar o cartão de novo.

Boas práticas

O SDK de Tokenização só precisa do escopo tokens. Não use no front-end escopos que alteram a sua conta ou movimentam dinheiro, como charges, purchases, webhooks, merchants e auth.
Prefira expires: 900 e gere uma sub-key nova a cada sessão de checkout. Não use expires: 0 no front-end: uma sub-key sem expiração continua válida por tempo indeterminado para quem tiver acesso a ela.
Uma chave escrita no HTML, em um arquivo de configuração do front-end ou em variáveis de build (como as que vão para o bundle JavaScript) é a mesma para todos os visitantes e não muda entre as sessões. Busque a sub-key no backend em tempo de execução.
A rota do seu backend que cria sub-keys fica acessível pelo navegador. Gere a sub-key só quando houver uma sessão de compra válida no seu sistema (por exemplo, um carrinho ou pedido em andamento) e aplique limite de requisições nessa rota.
As credenciais de um ambiente não funcionam no outro. Gere as sub-keys de Sandbox em https://sandbox-api.malga.io, com as credenciais de Sandbox, e as de Produção em https://api.malga.io, com as credenciais de Produção. Use options.sandbox: true só com sub-keys de Sandbox e false em Produção.
Revise periodicamente as sub-keys e chaves da sua conta. Remova sub-keys que não estão mais em uso, principalmente as criadas sem expiração.

Criar sub-key

Veja escopos, prazos e erros da criação de sub-keys.

Configuração

Configure os campos e as opções do SDK.