# Eventos (postMessage) Como o popup do checkout comunica com a sua página. Internamente, a SDK comunica com o popup do checkout por `postMessage`. Na maioria dos casos **não** precisa de ouvir estes eventos — use os [callbacks](/pt/sdk/callbacks). Esta página é para integrações avançadas que querem reagir diretamente às mensagens. ## Ciclo do popup ```mermaid sequenceDiagram participant Page as A sua página participant Popup as Popup (checkout) Page->>Popup: Abre popup Popup-->>Page: PAYMENT_COMPONENT_READY Page->>Popup: PAYMENT_PROPS (config + ordem) Note over Popup: Cliente paga Popup-->>Page: PAYMENT_SUCCESS / PENDING / CANCELED / ERROR Popup-->>Page: popup fecha ``` ## Eventos | Evento | Sentido | Significado | |---|---|---| | `PAYMENT_COMPONENT_READY` | popup → página | O popup carregou e está pronto. | | `PAYMENT_PROPS` | página → popup | Resposta da página com a configuração e a ordem. | | `PAYMENT_SUCCESS` | popup → página | Pagamento bem-sucedido. | | `PAYMENT_PENDING` | popup → página | Pendente (referência EMIS). | | `PAYMENT_CANCELED` | popup → página | Cancelado. | | `PAYMENT_ERROR` | popup → página | Erro. | ## Domínio do checkout O popup é servido a partir do domínio oficial do checkout FaciPay: | Ambiente | Origem do checkout | |---|---| | Produção | `https://www1.facipay.co.ao` | | Sandbox | `https://www31.facipay.co.ao` | A SDK valida a origem internamente antes de processar cada mensagem. ## Ouvir mensagens (avançado) Na prática **não** precisa disto — a SDK já trata do `postMessage` e chama os [callbacks](/pt/sdk/callbacks). Use esta abordagem apenas para integrações que queiram reagir diretamente. **Valide sempre `event.origin`** contra o domínio oficial do checkout antes de confiar na mensagem. Ignore qualquer mensagem de outra origem. ```js const CHECKOUT_ORIGIN = 'https://www1.facipay.co.ao'; // sandbox: www31.facipay.co.ao window.addEventListener('message', (event) => { if (event.origin !== CHECKOUT_ORIGIN) return; // ignora outras origens const { type } = event.data || {}; switch (type) { case 'PAYMENT_SUCCESS': // pagamento concluído break; case 'PAYMENT_PENDING': // referência gerada break; case 'PAYMENT_CANCELED': // cancelado pelo utilizador break; } }); ``` Referência de tipos, estados e métodos de pagamento.