# Go-live checklist Checklist para passar a FaciPay de sandbox a produção sem surpresas. Antes de trocar `pk_test_` por `pk_live_`, percorra esta checklist. ## Verificação funcional Sem erros no console; o botão renderiza dentro do container. Pagamento confirmado dispara `onApprove` e redireciona para `/sucesso`. `onPending` recebe os dados da referência (`data.payment?.data?.paymentReference` e `entity.number`); a página `/pendente` mostra-os ao cliente. Fechar o popup sem pagar dispara `onCancel` → `/cancelado`. ## Verificação do webhook | # | Cenário | Esperado | |---|---|---| | 1 | Assinatura **válida** | Estado da ordem muda na BD. | | 2 | Assinatura **inválida** | `401`; a BD **não** muda. | | 3 | Webhook **duplicado** (mesmo `paymentId` + `paymentStatus`) | `200`, **sem** reprocessar. | | 4 | Fallback `paymentByExternalTransaction` | Devolve o mesmo estado da BD após o webhook. | ## Produção - Troque a base URL para `https://api.faciconnect.com` e a chave para `pk_live_…`. - Confirme que **HTTPS** está ativo no seu domínio (a SDK e os webhooks exigem-no). - O URL do endpoint de webhook que registou junto da equipa FaciPay é **público**, HTTPS e acessível. ## Robustez - **Total recalculado no servidor** em todas as ordens. - **Idempotência**: localize a ordem por `externalTransactionId`, deduplique por `paymentId` + `paymentStatus`. - Tarefas pesadas (emails, ERP, faturação) fora do caminho do webhook (fila/background), para responder `200` em < 5s. - **Avise o utilizador** para permitir popups do seu site. - Polling de fallback na página `/pendente` (a cada 5–10s) caso o webhook atrase. ## Suporte Dúvidas ou credenciais de produção: [atendimento@faci-x.ao](mailto:atendimento@faci-x.ao).