# WhatsApp Flows Decodificação/Codificação

### 📌 Para que serve?

Este módulo **WhatsApp Flows Decrypt/Enc** tem como objetivo garantir a **segurança e integridade dos dados trocados entre a Meta (WhatsApp Flows) e a plataforma**.\
Ele oferece dois modos de operação:

* **Descriptografar:** interpretar informações recebidas da Meta que chegam em formato criptografado (JSON ou mídia), tornando-as utilizáveis dentro do fluxo de automação.
* **Criptografar:** reprocessar dados tratados e enviar novamente para a Meta no formato esperado, preservando a confidencialidade das informações.

Na prática, esse módulo funciona como uma **ponte de segurança**: você recebe dados protegidos, manipula-os no fluxo e depois devolve-os criptografados, de forma que a Meta valide e aceite o processamento.

### 📌 Detalhes do módulo

O módulo possui duas abas: **Descriptografar** e **Criptografar**.

#### 🔓 Aba Descriptografar&#x20;

Usada no **início do fluxo**, quando a Meta envia dados criptografados para sua aplicação.

* **Canal**: seleção de qual canal WhatsApp será usado para aplicar o certificado.
  * Exemplo: `Canal WhatsApp Business - Suporte`
* **Certificado do canal**:
  * **Ligado:** basta selecionar o canal; o certificado correspondente é aplicado automaticamente.
  * **Desligado:** é necessário informar manualmente via variável de ambiente, útil para ambientes multi-conta ou testes.
* **Tipo**: Define o formato esperado dos dados descriptografados.
  * **JSON:** Estruturas de dados textuais (ex.: reservas, cadastros).
  * **Media:** Arquivos como imagens ou documentos.
* **Vetor Inicial (IV):** valor único para inicializar o processo de descriptografia. Vem como variável&#x20;
  * Exemplo: `{{input.initial_vector}}`.
* **Chave AES Criptografada:** chave de criptografia fornecida pela Meta, também passada via variável.
  * Exemplo: `{{input.encrypted_aes_key}}`.
* **Dados Criptografados:** payload de dados recebidos que precisam ser convertidos.
  * Exemplo: `{{input.encrypted_flow_data}}`.

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2Fin9z8QLoLhEOz9XIb87P%2Fimage.png?alt=media&#x26;token=835db19e-5417-4337-a7a5-f3ca22bc2d56" alt=""><figcaption><p>Imagem 1 - Aba 'Descriptografar'.</p></figcaption></figure>

### 🔒 Aba Criptografar (com exemplos de variáveis)

Usada no **final do fluxo**, quando precisamos devolver dados processados à Meta em formato criptografado.

#### Campos:

* **Canal**
  * Seleção direta do canal WhatsApp, caso a opção esteja ligada.
  * Exemplo: `Canal WhatsApp Business - Suporte`
* **Certificado do canal**
  * **Ligado:** basta selecionar o canal que já tem o certificado cadastrado.
  * **Desligado:** é necessário informar manualmente via variável de ambiente.
  * Exemplo: `{{env.WHATSAPP_CHANNEL_CERT}}`
* **Vetor Inicial (IV)**
  * Valor necessário para inicializar o processo de criptografia.
  * Exemplo: `{{input.initial_vector}}`
* **Chave AES Criptografada**
  * Chave fornecida pela Meta para garantir a integridade da criptografia.
  * Exemplo: `{{input.encrypted_aes_key}}`
* **Dados Criptografados (JSON)**
  * Estrutura JSON que será criptografada antes do envio para a Meta.
  * Aqui você monta o objeto de saída conforme o fluxo processado.

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2Fbd8KqA5NBIEW93lJSidZ%2Fimage.png?alt=media&#x26;token=a6c4509b-d271-4bc1-b6cc-59b01b61d01b" alt=""><figcaption><p>Imagem 2 - Aba 'Criptografar'.</p></figcaption></figure>

{% hint style="success" %}
👉 Assim, no **início do fluxo** você usa a aba **Descriptografar** para transformar dados recebidos da Meta em informação utilizável.\
👉 No **final do fluxo** você usa a aba **Criptografar** para devolver esses dados tratados em formato seguro, pronto para ser aceito pela Meta.
{% endhint %}

### 📌 Casos de uso

1. **Reserva de vagas:**
   * Usuário inicia um fluxo de reserva via WhatsApp.
   * Meta envia os dados do formulário criptografados.
   * O módulo descriptografa → sistema consulta banco de dados (ex.: disponibilidade de vagas).
   * Resultado é montado em JSON → módulo criptografa novamente → resposta segura é enviada para a Meta.
2. **Processamento de pagamentos dentro do Flow:**
   * Meta envia dados do pagamento criptografados.
   * Plataforma descriptografa → aplica regras de negócio → retorna status “Pago/Recusado” criptografado.
3. **Fluxos dinâmicos com dados sensíveis (ex.: CPF, endereço, dados bancários):**
   * Garante que nenhuma informação trafegue em claro dentro do fluxo, apenas no formato criptografado.
