3DS e Tokenização de Cartões
💳 CartHero SDK — 3DS 2.x Integration Guide#
Nosso SDK permite que o checkout tokenize cartões e execute 3D Secure (3DS 2.x) quando exigido pelo emissor — tudo internamente, sem precisar de scripts extras no integrador.⚠️ Importante: o integrador não precisa saber qual adquirente ou provedor 3DS está sendo usado. Isso é resolvido internamente pelo SDK e/ou pelo seu servidor principal.
🚀 Como Incluir#
Opção A — Modo Moderno (ES Modules)#
Opção B — Modo Global (window.ch)#
⚙️ API#
createCh(): ChInstance#
Cria uma nova instância do SDK..setBackendUrl(url: string): this#
Define a URL do servidor principal..setPublicToken(token: string): this#
Define o token público da loja/vendedor..encrypt(card: CardData, context: PaymentContext): Promise<PaymentResult>#
Tokeniza os dados do cartão e executa o 3DS se necessário.// Dados do cartão
type CardData = {
number: string;
expMonth: string;
expYear: string;
cvv?: string;
};
// Contexto do pagamento
type PaymentContext = {
amount: number; // em centavos
currency: string; // "BRL", "USD", ...
orderId: string;
customer?: { email?: string; name?: string; phone?: string; };
returnUrl?: string;
};
// Resultado esperado
type PaymentResult = {
token: string;
status?: 'authenticated' | 'frictionless' | 'attempted' | 'failed' | 'error';
eci?: string;
cavv?: string;
xid?: string;
version?: string;
};
🔐 Comportamento do 3DS#
encrypt(card, context) é chamado normalmente.
O SDK resolve internamente qual adquirente e provedor 3DS usar.
Se o emissor exigir, o desafio 3DS aparece como um iframe/overlay.
O retorno de encrypt() traz { token, status, eci, cavv, xid, ... }.
O integrador envia o token ao backend para concluir a cobrança.
Nenhuma etapa extra é necessária além do mostrado.
✅ Requisitos do Checkout#
Campos mínimos: amount, currency, orderId, customer.email
Trate o resultado de encrypt() para continuar o fluxo de pedido
📦 Exemplo Completo (HTML)#
🔒 Segurança e Boas Práticas#
Nunca registre PAN/CVV em logs ou console.
Se sua política de segurança bloqueia recursos externos, adicione as fontes necessárias no CSP.
🧰 Soluções de Problemas#
“Started encrypt… but nothing happens” → evite chamadas paralelas e permita iframes.
Falha intermitente na primeira tentativa → pode ser carregamento inicial do provedor 3DS.
Erro de CORS → o CDN deve retornar Access-Control-Allow-Origin e Content-Type: application/javascript.
📌 Resumo Final#
1.
Inclua o SDK (ESM ou Global).
2.
Configure .setBackendUrl() e .setPublicToken().
3.
Chame encrypt(card, context) e use o retorno.
4.
O 3DS é tratado internamente — sem etapas extras.
Precisa de ajuda? Entre em contato com nossa equipe de suporte para desenvolvedores para obter assistência.Modificado em 2025-10-30 13:06:15