const { useState, useRef } = React; /* ── Conexão com o Supabase ── A chave pública (anon/publishable) é segura para ficar no front-end: ela só permite chamar a Edge Function, que faz toda validação e processamento sensível no servidor. */ const SUPABASE_URL = "https://fvpxilfblhjsofjyuztw.supabase.co"; const SUPABASE_ANON_KEY = "sb_publishable_KESzOS6oI0DHNqMG85_mlw_K9oUT-eP"; /* ── Identidade visual do Verofy ── */ const C = { bg: "#0B1120", card: "#141E32", inputBg: "#1A2540", border: "#1E2D4A", text: "#F0F4FF", muted: "#8896B3", accent: "#10E6A0", accentDim: "#0A9966", blue: "#4FACFE", fy: "#6ADAB2", negative: "#FF5A7E", warning: "#FFB84D", }; const PLANO = { nome: "Plano Premium", precoDe: 67.0, preco: 19.9 }; /* ── Helpers de máscara e validação ── */ function maskCpfCnpj(value) { const digits = value.replace(/\D/g, "").slice(0, 14); if (digits.length <= 11) { return digits .replace(/(\d{3})(\d)/, "$1.$2") .replace(/(\d{3})(\d)/, "$1.$2") .replace(/(\d{3})(\d{1,2})$/, "$1-$2"); } return digits .replace(/(\d{2})(\d)/, "$1.$2") .replace(/(\d{3})(\d)/, "$1.$2") .replace(/(\d{3})(\d)/, "$1/$2") .replace(/(\d{4})(\d{1,2})$/, "$1-$2"); } function maskPhone(value) { const digits = value.replace(/\D/g, "").slice(0, 11); if (digits.length <= 10) { return digits .replace(/(\d{2})(\d)/, "($1) $2") .replace(/(\d{4})(\d{1,4})$/, "$1-$2"); } return digits .replace(/(\d{2})(\d)/, "($1) $2") .replace(/(\d{5})(\d{1,4})$/, "$1-$2"); } function maskCep(value) { const digits = value.replace(/\D/g, "").slice(0, 8); return digits.replace(/(\d{5})(\d{1,3})$/, "$1-$2"); } function maskCardNumber(value) { return value.replace(/\D/g, "").slice(0, 16).replace(/(\d{4})(?=\d)/g, "$1 "); } function maskExpiry(value) { const digits = value.replace(/\D/g, "").slice(0, 4); return digits.replace(/(\d{2})(\d{1,2})$/, "$1/$2"); } function maskCvv(value) { return value.replace(/\D/g, "").slice(0, 4); } function detectarBandeira(numero) { const n = numero.replace(/\D/g, ""); if (/^4/.test(n)) return "Visa"; if (/^5[1-5]/.test(n)) return "Mastercard"; if (/^3[47]/.test(n)) return "Amex"; if (/^(636368|438935|504175|451416|509|636297|5067)/.test(n)) return "Elo"; return null; } function validarCpf(cpf) { const n = cpf.replace(/\D/g, ""); if (n.length !== 11) return false; if (/^(\d)\1{10}$/.test(n)) return false; let soma = 0, resto; for (let i = 1; i <= 9; i++) soma += parseInt(n.substring(i - 1, i)) * (11 - i); resto = (soma * 10) % 11; if (resto === 10 || resto === 11) resto = 0; if (resto !== parseInt(n.substring(9, 10))) return false; soma = 0; for (let i = 1; i <= 10; i++) soma += parseInt(n.substring(i - 1, i)) * (12 - i); resto = (soma * 10) % 11; if (resto === 10 || resto === 11) resto = 0; return resto === parseInt(n.substring(10, 11)); } function validarCnpj(cnpj) { const n = cnpj.replace(/\D/g, ""); if (n.length !== 14) return false; if (/^(\d)\1{13}$/.test(n)) return false; let tamanho = n.length - 2; let numeros = n.substring(0, tamanho); const digitos = n.substring(tamanho); let soma = 0, pos = tamanho - 7; for (let i = tamanho; i >= 1; i--) { soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; } let resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11); if (resultado !== parseInt(digitos.charAt(0))) return false; tamanho += 1; numeros = n.substring(0, tamanho); soma = 0; pos = tamanho - 7; for (let i = tamanho; i >= 1; i--) { soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; } resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11); return resultado === parseInt(digitos.charAt(1)); } function validarEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function validarValidadeCartao(mmYY) { const match = mmYY.match(/^(\d{2})\/(\d{2})$/); if (!match) return false; const mes = parseInt(match[1], 10); const ano = 2000 + parseInt(match[2], 10); if (mes < 1 || mes > 12) return false; const agora = new Date(); const expira = new Date(ano, mes, 0); return expira >= new Date(agora.getFullYear(), agora.getMonth(), 1); } /* ── Ícone de bandeira ── */ function BandeiraIcon({ bandeira }) { if (!bandeira) return null; const cores = { Visa: "#1A1F71", Mastercard: "#EB001B", Amex: "#2E77BC", Elo: "#000000" }; return ( {bandeira} ); } /* ── Campo de formulário reutilizável ── */ function Field({ label, error, children, hint }) { return (
{children} {hint && !error &&
{hint}
} {error &&
{error}
}
); } const inputStyle = (hasError) => ({ width: "100%", background: C.inputBg, border: `1px solid ${hasError ? C.negative : C.border}`, borderRadius: 10, padding: "12px 14px", color: C.text, fontSize: 14, outline: "none", boxSizing: "border-box", fontFamily: "inherit", }); /* ── Logo ── */ const LOGO_ICON_BASE64 = "data:image/png;base64,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"; function Logo() { return (
Verofy Verofy
); } function CheckoutVerofy() { const [form, setForm] = useState({ nome: "", email: "", cpfCnpj: "", telefone: "", cep: "", numeroEndereco: "", cardNumber: "", cardName: "", cardExpiry: "", cardCvv: "", }); const [errors, setErrors] = useState({}); const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); const [generalError, setGeneralError] = useState(""); const formTopRef = useRef(null); const bandeira = detectarBandeira(form.cardNumber); const setField = (key, maskFn) => (e) => { const raw = e.target.value; const masked = maskFn ? maskFn(raw) : raw; setForm((f) => ({ ...f, [key]: masked })); if (errors[key]) setErrors((er) => ({ ...er, [key]: null })); }; const validar = () => { const novosErros = {}; if (!form.nome.trim() || form.nome.trim().split(" ").length < 2) { novosErros.nome = "Informe seu nome completo."; } if (!validarEmail(form.email)) { novosErros.email = "Informe um e-mail válido."; } const digitsDoc = form.cpfCnpj.replace(/\D/g, ""); const docValido = digitsDoc.length === 11 ? validarCpf(form.cpfCnpj) : digitsDoc.length === 14 ? validarCnpj(form.cpfCnpj) : false; if (!docValido) { novosErros.cpfCnpj = "Informe um CPF ou CNPJ válido."; } if (form.telefone.replace(/\D/g, "").length < 10) { novosErros.telefone = "Informe um telefone válido com DDD."; } if (form.cep.replace(/\D/g, "").length !== 8) { novosErros.cep = "Informe um CEP válido."; } if (!form.numeroEndereco.trim()) { novosErros.numeroEndereco = "Informe o número do endereço."; } const digitsCard = form.cardNumber.replace(/\D/g, ""); if (digitsCard.length < 13 || digitsCard.length > 16) { novosErros.cardNumber = "Número de cartão inválido."; } if (!form.cardName.trim() || form.cardName.trim().length < 3) { novosErros.cardName = "Informe o nome impresso no cartão."; } if (!validarValidadeCartao(form.cardExpiry)) { novosErros.cardExpiry = "Validade inválida ou cartão expirado."; } if (form.cardCvv.length < 3) { novosErros.cardCvv = "CVV inválido."; } setErrors(novosErros); return Object.keys(novosErros).length === 0; }; const handleSubmit = async (e) => { e.preventDefault(); setGeneralError(""); if (!validar()) { formTopRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); return; } setLoading(true); try { const resposta = await fetch( `${SUPABASE_URL}/functions/v1/processar-pagamento`, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${SUPABASE_ANON_KEY}`, }, body: JSON.stringify(form), } ); const dados = await resposta.json(); if (!resposta.ok || dados.erro) { setGeneralError(dados.erro || "Não foi possível processar o pagamento. Tente novamente."); setLoading(false); formTopRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); return; } setLoading(false); setSuccess(true); } catch (err) { setGeneralError("Erro de conexão. Verifique sua internet e tente novamente."); setLoading(false); formTopRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); } }; if (success) { return (

Pagamento confirmado!

Seu acesso ao Verofy será liberado em poucos minutos, fique atento ao seu e-mail.

); } return (
{/* Resumo do plano */}
{PLANO.nome}
De R$ {PLANO.precoDe.toFixed(2).replace(".", ",")}
R$ {Math.floor(PLANO.preco)} ,{(PLANO.preco % 1).toFixed(2).slice(2)}
por mês
Cobrança recorrente mensal no cartão de crédito, cancele quando quiser.
{generalError && (
{generalError}
)} {/* Dados do cliente */}

Seus dados

{/* Dados do cartão */}

Cartão de crédito

{bandeira && }
v.toUpperCase())} autoComplete="cc-name" />
Pagamento processado de forma segura pela Asaas, instituição de pagamento autorizada pelo Banco Central.
); } /* ── Renderização ── */ const root = ReactDOM.createRoot(document.getElementById("root")); root.render();