# Visão geral
A FaciPay JS SDK: botão de pagamento, popup e callbacks para aceitar pagamentos no browser.
A **FaciPay JS SDK** é uma biblioteca de browser que renderiza o botão de pagamento,
abre o popup do checkout e comunica o resultado à sua aplicação através de callbacks.
```js
const facipay = FaciPay(PUBLISHABLE_KEY);
facipay.generateButton({
createOrder: async () => referenceNumber,
onApprove: async (data, actions) => { /* ... */ },
}).render('#facipay-button-container');
```
## Modelo mental
Inicializa a SDK e valida a `publishableKey`.
Cria o botão com callbacks e opções.
Renderiza no DOM e gere o ciclo de vida.
## O que a SDK faz (e não faz)
**Faz:**
- Renderiza o botão "Pagar Agora" (com os ícones FaciPay, Multicaixa Express e Referência EMIS).
- Abre e gere o popup do checkout (comunicação por `postMessage`).
- Expõe callbacks para cada resultado (`onApprove`, `onPending`, `onCancel`, `onError`).
**Não faz:**
- **Não** cria a ordem nem fala diretamente com a API de pagamentos — isso é o seu
backend, dentro do `createOrder()`.
- **Não** é a fonte da verdade do estado — isso é o webhook.
A SDK é **JavaScript de browser** e abre um popup. Não funciona em runtimes nativos
(React Native, Flutter). Para mobile nativo, peça a documentação específica.
## Requisitos
- Um browser moderno com popups permitidos para o seu domínio.
- **HTTPS** em produção.
- Um container no DOM **antes** de chamar `.render()`.
Carregar a SDK em cada framework.