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.
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
tokense 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:- Chamar
POST /v1/authcom oX-Client-Ide a chave secreta da sua conta, pedindo{"scope": ["tokens"], "expires": 900}. - Devolver ao front-end só o
publicKeye oclientIdda resposta, nunca a chave secreta.
https://sandbox-api.malga.io com as credenciais de Sandbox e https://api.malga.io com as de Produção.
Requisição:
201:
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.
useEffect, no onMounted ou no ngOnInit) e chame destroy() na desmontagem.
Quando a sub-key expira
A instância usa aapiKey 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
Use só o escopo tokens
Use só o escopo tokens
tokens. Não use no front-end escopos que alteram a sua conta ou movimentam dinheiro, como charges, purchases, webhooks, merchants e auth.Use validade curta e uma sub-key por sessão de checkout
Use validade curta e uma sub-key por sessão de checkout
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.Não deixe a chave fixa no HTML ou no bundle
Não deixe a chave fixa no HTML ou no bundle
Proteja a rota que gera a sub-key
Proteja a rota que gera a sub-key
Use chaves diferentes para Sandbox e Produção
Use chaves diferentes para Sandbox e Produção
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 e remova chaves que você não usa
Revise e remova chaves que você não usa