Skip to main content
Chargefy.js é o SDK de browser da Chargefy. Ele oferece dois módulos independentes:
  • Chargefy.Checkout, para preservar a atribuição de campanha ao enviar o comprador para uma página hospedada;
  • Chargefy(), para salvar um cartão no seu checkout white-label e devolver um payment_method reutilizável.
Chargefy.js não cobra nem cria customer. O backend cria o cadastro com uma chave secreta; o navegador usa uma chave publicável e o client_secret daquele cadastro.

Carregar o script

Inclua o script servido pela Chargefy. Carregue-o sempre da origem oficial — não faça cópia local, para receber correções de segurança automaticamente.
Isso expõe um global Chargefy.

Propagar atribuição para o Checkout hospedado

Use Chargefy.Checkout.trackLinks() na página que recebe o tráfego da campanha:
O SDK guarda o primeiro conjunto válido de parâmetros de campanha no localStorage da origem atual e os adiciona aos links de Checkout Session e Payment Link encontrados na página. Ele observa também:
  • links inseridos depois do carregamento;
  • mudanças de href;
  • navegação por pushState, replaceState e popstate em aplicações SPA.

URLs criadas por JavaScript

Quando o redirect não parte de uma tag <a>, use Chargefy.Checkout.createTrackedUrl():
O método recebe uma URL e devolve uma string. URLs que não são reconhecidas como https://pay.chargefy.io/session/... ou https://pay.chargefy.io/link/... voltam sem alteração.

Dados propagados

A landing page e o referrer são reduzidos a origem + path. Query string e fragmento não são armazenados nem propagados.
O SDK não copia a query string inteira, não lê cookies de mídia e não captura e-mail, telefone, client_secret ou parâmetros desconhecidos. Ele também não faz request de rede para atribuição: apenas grava o snapshot local e atualiza os links reconhecidos.
Parâmetros que já estiverem na URL do link são preservados: o SDK apenas acrescenta a atribuição. Isso inclui os parâmetros de URL de pré-preenchimento (prefilled_email, locked_prefilled_email, prefilled_promo_code, locale e client_reference_id).

Regras de precedência

  • O primeiro conjunto de campanha salvo na origem é preservado enquanto aquele armazenamento existir.
  • Um parâmetro já escrito explicitamente na URL de destino vence o valor salvo.
  • Chamadas repetidas de trackLinks() são idempotentes e não duplicam parâmetros ou observadores.
O localStorage é isolado por origem. Se a campanha entrar em mais de um domínio seu, carregue o SDK e chame trackLinks() em cada domínio que contém links para o Checkout hospedado.

Inicializar

Copie as duas chaves publicáveis em Developers → Chaves de API. O ambiente vem da própria chave e precisa coincidir com o cadastro criado pelo backend.

Salvar o cartão

O backend cria um setup_intent com customer e entrega o client_secret à página. O navegador chama confirmSetup() e recebe diretamente o cartão salvo:
O SDK valida os campos, cria uma credencial de uso único internamente e chama POST /v1/setup-intents/{id}/confirm. Seu código não precisa transportar o token.

Campos do cartão

string
required
Número do cartão. Espaços e traços são ignorados.
number
required
Mês de validade (112).
number
required
Ano de validade. Aceita 4 dígitos (2030) ou 2 dígitos (30).
string
required
Código de segurança (3 ou 4 dígitos).
string
required
Nome do titular impresso no cartão.

API de baixo nível: token

createPaymentToken() continua disponível para integrações que realmente precisam controlar a credencial intermediária. Ele não é necessário no fluxo recomendado de Cadastro de cartão.
string
O token_id de uso único. Envie ao seu backend e use-o uma vez para confirmar um setup intent ou um payment intent. Depois de consumido, ele morre — para uma nova tentativa, gere outro token.
string
Sempre token.
object
Dados não sensíveis para você exibir um resumo do cartão (brand, exp_month, exp_year, last4). O número completo e o CVC nunca são retornados.

Consultar o estado no navegador

Use o mesmo client_secret para recuperar o cadastro sem expor a chave secreta do backend:
A resposta de browser é limitada aos campos que a tela precisa. Ela não traz customer, metadata, histórico de tentativas ou outros dados da conta.

Como os objetos se encaixam

Erros

createPaymentToken rejeita a Promise com um erro que carrega type, code, message e, quando aplicável, param — o mesmo formato dos erros da API.
A validação no browser é uma primeira barreira de UX, não a decisão final. A aprovação ou recusa do cartão acontece quando você cobra um payment intent no backend — é lá que você trata recusa e retry.

Erros ao concluir o cadastro

confirmSetup rejeita a Promise no mesmo formato. Os códigos que a tela precisa tratar são:

Cartões de teste

Com pk_test_*, o número do cartão escolhe o cenário. A credencial interna é sintética e carrega o cenário até a confirmação. Use qualquer CVC de 3 dígitos e uma validade futura. A tabela completa de cartões para todos os payment_error.code públicos fica em Sandbox.

Content Security Policy

Se a sua página usa CSP, libere a Chargefy para carregar e se comunicar:
script-src permite carregar o SDK. connect-src é necessário apenas para tokenização live; a propagação de atribuição não faz request. Se a sua CSP for restritiva e a tokenização for bloqueada, fale com o suporte.

Próximos passos

Checkout white-label

Monte uma tela de pagamento com a sua marca, de ponta a ponta.

Tokenização de cartão

Salve o cartão para cobrar depois (assinaturas, recompra).