Carregue o SDK
window.Pagou.
Inicialize Elements
Você pode atualizar uma instância existente antes do submit:
Crie e monte o campo de cartão
elements.create("card") cria um campo hospedado de cartão. Se já existir um campo de cartão na mesma instância de elements, o SDK desmonta o campo anterior antes de criar o novo.
Opções do cartão:
Eventos do cartão
Remova handlers durante o teardown do componente quando a mesma instância de cartão puder continuar viva:
Envie um pagamento
elements.submit(...) é a ação principal do SDK. Ela cria uma sessão de Element, tokeniza o campo hospedado, chama seu callback createTransaction, conclui qualquer autenticação de cartão que o pagamento exija e resolve o resultado final.
createTransaction recebe:
token ao seu back-end como credencial de pagamento. Trate brand, last4, exp_month e exp_year como metadados para exibição ou bookkeeping.
Resultado do submit
status incluem:
Não libere o pedido usando apenas o status do navegador. Use webhook ou reconciliação no servidor como fonte final de verdade.
3D Secure
elements.submit(...) conclui a autenticação do cartão para você quando o pagamento exige, usando o
buyer e os products que o seu servidor já envia ao criar a transaction. Você não coleta nada a
mais no navegador. Veja 3D Secure.
Retorne o payload da transaction do seu back-end sem alterações. Se ele pedir alguma ação adicional,
o SDK detecta e continua o fluxo.
Se você já criou a transaction server-side e só precisa que o SDK conclua uma ação que ela reportou,
repasse essa ação diretamente:
Retomar após um reload
Se a página recarregar ou o comprador sair no meio do pagamento, retome a mesma transaction em vez de iniciar uma nova tentativa de checkout.resume() recria a sessão de Element a partir da sua chave
pública, então funciona mesmo após um carregamento completo da página.
resume() retorna o mesmo formato de resultado de submit(). Ele retoma uma ação pendente quando
ainda houver uma, retorna o status terminal quando o pagamento já finalizou e retorna processing
quando o desfecho ainda não chegou. Persista o id da transaction antes que o comprador possa sair da
página, para tê-lo na volta.
Reinserção do cartão (auto-heal)
Um pagamento que aguardava autenticação de cartão (3DS pré-cobrança) estava vinculado à sessão de Element que capturou o cartão; um reload inicia uma nova sessão e o desafio original não pode mais rodar.resume() se auto-corrige por padrão — o element/SDK cuida de toda a recuperação, igual
para checkout hospedado e integradores diretos. Sua única responsabilidade: manter um CardElement
montado e chamar resume().
resume() pede que o comprador reinsira o cartão no
element montado, retokeniza sob a sessão atual, substitui o desafio obsoleto, roda o novo e resolve
num status terminal. Nenhuma nova transaction é criada.
Modo do token
Passemode em submit para declarar a intenção da chamada e escolher o tipo de token gerado:
Cleanup
Desmonte o campo de cartão ao sair da tela de checkout:Regras de produção
- Use
pk_test_*apenas comPagou.setEnvironment("sandbox"). - Use
pk_live_*com o ambiente padrão de produção. - Nunca envie dados brutos de cartão ao seu back-end.
- Nunca registre tokens
pgct_*oupgpm_*, nem dados de cartão em logs. - Desabilite submits duplicados enquanto
elements.submit(...)estiver em execução. - Persista o id da transaction para poder chamar
resume(...)após um reload. - Retorne o payload da transaction do back-end sem remover
id,statusounext_action. - Trate o status do navegador como provisório até webhook ou reconciliação confirmar o estado final do pagamento.

