> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tutorial: Implementando sua primeira cobrança pelo WhatsApp

> Implemente sua primeira cobrança pelo WhatsApp passo a passo com o Mercado Pago.

Neste guia você vai implementar [pagamentos reais](/pt/guias/integracoes/pagamentos/introducao) dentro de um app conversacional implantado no WhatsApp, usando o **Mercado Pago**.

<Info>
  **Pré-requisitos:**

  * Ter um fluxo no Brain Studio pronto (por exemplo, um Agente de IA que gerencia um processo de venda).
  * Ter uma conta no Mercado Pago (para obter credenciais de teste e produção).
</Info>

Vamos usar como exemplo um app que vende ingressos para tours: o usuário escolhe o tour, a data, o número de ingressos e fornece seu email. Agora vamos habilitar cobranças com Mercado Pago dentro do mesmo fluxo.

Este tutorial está dividido em três partes:

1. **Implementação em modo de teste (DEV)**
2. **Testes no WhatsApp**
3. **Ir para produção (PROD)**

***

# 1. Implementação em modo de teste (DEV)

## Vídeo 1: Instalação e configuração no Brain Studio

<Frame caption="Vídeo 1 – Instalação do Mercado Pago + configuração do nó em modo de teste (DEV)">
  <iframe className="mx-auto w-full max-w-3xl aspect-video rounded-xl" src="https://www.youtube.com/embed/UsZsRWtk55c" title="Vídeo 1 – Instalação do Mercado Pago + configuração do nó em modo de teste (DEV)" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
</Frame>

***

## Configuração inicial

<Steps>
  <Step title="Copiar seu Access Token de teste">
    <Note>
      Primeira vez? Veja o guia passo a passo: [Obtendo credenciais do Mercado Pago](/pt/guias/integracoes/pagamentos/provedores/mercado-pago/obter-credenciais).
    </Note>

    Abra sua conta do Mercado Pago e acesse **Suas integrações**.

    <Frame caption="Suas integrações no Mercado Pago: escolha sua aplicação e acesse Credenciais de Produção ou Credenciais de Teste">
      <img src="https://mintcdn.com/jelouai/nCvuucLdA-_D8bXJ/assets/images/integraciones/pagos/dashboard-mercado-pago-tus-integraciones.png?fit=max&auto=format&n=nCvuucLdA-_D8bXJ&q=85&s=1d04d517b6a5ed72cce8485281e83501" alt="Painel do Mercado Pago mostrando Suas integrações, seletor de aplicação Jelou, e os cards de Credenciais de produção e Credenciais de teste" width="2048" height="951" data-path="assets/images/integraciones/pagos/dashboard-mercado-pago-tus-integraciones.png" />
    </Frame>

    * Acesse **Credenciais de teste**
    * Copie o **Access Token**

    Você usará esse token para instalar o Mercado Pago no Brain Studio.

    <Check>
      Token pronto para colar no Brain Studio.
    </Check>
  </Step>

  <Step title="Instalar o Mercado Pago pelo Marketplace">
    No Brain Studio:

    * Acesse o **Marketplace**
    * Pesquise por **Mercado Pago**
    * Clique em **Conectar**
    * Cole seu **Access Token de teste**
    * Clique em **Instalar**

    <Frame caption="Modal de instalação: cole seu Access Token do Mercado Pago e confirme">
      <img src="https://mintcdn.com/jelouai/nCvuucLdA-_D8bXJ/assets/images/integraciones/pagos/mercado-pago-instalar-access-token.png?fit=max&auto=format&n=nCvuucLdA-_D8bXJ&q=85&s=891469de6fdbe9d646ea89d18ee71d86" alt="Modal de Credenciais de API no Brain Studio solicitando o Access Token para instalar o Mercado Pago" className="w-full max-w-2xl mx-auto rounded-xl shadow-sm" width="2048" height="913" data-path="assets/images/integraciones/pagos/mercado-pago-instalar-access-token.png" />
    </Frame>

    Após instalar, você verá o Mercado Pago disponível na pasta **Marketplace** no painel lateral do Canvas.

    <Check>
      Mercado Pago visível no Marketplace.
    </Check>
  </Step>

  <Step title="Arrastar e conectar o nó ao Canvas">
    Conecte o fluxo de pagamento logo após o usuário confirmar sua compra ou reserva.

    * Dentro do Brain, encontre o Mercado Pago na pasta **Marketplace** no painel lateral e arraste-o para o canvas
    * Conecte-o após a etapa onde o usuário confirma sua compra ou reserva.

    <Note>
      Em seguida, configure as entradas do nó. Os três campos obrigatórios são:
      motivo do pagamento, valor tributável e email do comprador.
    </Note>
  </Step>
</Steps>

***

## Configurar Entradas: O que é cada campo?

Defina três coisas fundamentais no momento da cobrança:

1. **O que você está cobrando** (motivo + valor + moeda)
2. **De quem você está cobrando** (email do comprador)
3. **Sob quais regras** (ambiente, impostos, expiração, metadados)

Pense nesta seção como a definição estrutural do pagamento: o que o Mercado Pago precisa para criar a transação corretamente.

<Frame caption="Painel de configuração de entradas">
  <img src="https://mintcdn.com/jelouai/nCvuucLdA-_D8bXJ/assets/images/integraciones/pagos/configuracion-inputs-jelou-pay.png?fit=max&auto=format&n=nCvuucLdA-_D8bXJ&q=85&s=8aa4fcd953abaf729237f120dc80d6e9" alt="Painel de configuração de entradas" className="mx-auto rounded-xl shadow-sm" style={{ maxWidth: '280px' }} width="590" height="1284" data-path="assets/images/integraciones/pagos/configuracion-inputs-jelou-pay.png" />
</Frame>

<Note>
  Os nomes exatos podem variar ligeiramente dependendo do seu template, mas o padrão é sempre o mesmo:
  **valor + moeda + impostos (se aplicável) + email do comprador + metadados opcionais.**
</Note>

***

## O que você deve preencher

Antes de entrar nos detalhes, certifique-se de ter esses três elementos claros:

* Um **motivo de pagamento** legível (ex.: "Valpo Walk Tour - 2 ingresso(s)")
* Um **valor correto** (líquido se você trabalha com impostos)
* Um **email de comprador válido** (em DEV deve ser um usuário de teste)

<Check>
  Se esses três estiverem bem definidos, o restante é configuração.
</Check>

***

## Resumo das entradas do nó

Antes de entrar nos detalhes, existem duas ideias-chave:

1. **Este nó cria a cobrança** (com valor, moeda, impostos, motivo e email).
2. **Este nó retorna uma resposta (JSON)** que você pode reutilizar depois (por exemplo, para exibir um recibo ou salvar IDs de pagamento).

### Salvar resultado como

No topo do nó você verá **Salvar resultado como**.

Lá você define o nome com o qual o Brain Studio salvará **a resposta completa da ferramenta** como JSON na **Memória**.

* Neste tutorial usamos: `checkout_response`
* Você pode lê-lo depois em um nó **Código** com algo como:
  * `const r = $memory.getJson('checkout_response')`

<Note>
  **Memória vs Contexto:**

  * **Memória** persiste entre conversas (útil para consultar o status do pagamento depois).
  * **Contexto** está disponível apenas durante a conversa atual.

  Para mais detalhes, veja o [guia completo](/pt/guias/variaveis/memoria-vs-contexto).
</Note>

***

## Detalhes de cada entrada

Abaixo está um guia prático sobre o que colocar em cada campo (na mesma ordem em que você verá no nó).

| Campo                                    | O que colocar                  | Para que serve                                                                          |
| ---------------------------------------- | ------------------------------ | --------------------------------------------------------------------------------------- |
| Salvar resultado como                    | `checkout_response`            | Salva a resposta da ferramenta (JSON) na Memória com esse nome                          |
| Tipo de pagamento                        | `payment`                      | Tipo de operação (na maioria dos casos, deixe o padrão)                                 |
| Ambiente                                 | `DEV` / `PROD`                 | Define se você está testando ou cobrando real                                           |
| Expiração do botão (min)                 | `20` (exemplo)                 | Tempo máximo para pagar antes de o link/botão expirar                                   |
| Moeda                                    | `CLP`, `MXN`, `COP`, etc.      | Moeda da cobrança                                                                       |
| Motivo do pagamento                      | texto ou variável              | Descrição legível da cobrança (vista pelo usuário / painel)                             |
| Valor tributável                         | líquido (ex.: `mp_net_amount`) | Base de cálculo de imposto (se IVA/impostos se aplicarem)                               |
| Valor isento                             | `0` ou valor                   | A parte da cobrança isenta/não sujeita a impostos                                       |
| Percentual de IVA                        | `19` (exemplo)                 | Percentual de imposto (se aplicável)                                                    |
| Metadados do pagamento                   | opcional                       | Contexto para rastreabilidade (apenas o essencial)                                      |
| Email do comprador                       | obrigatório                    | Email do comprador. Em DEV deve ser um usuário de teste                                 |
| Personalizar texto do botão de pagamento | `Não` / `Sim`                  | Permite personalizar a mensagem que acompanha o botão de pagamento (Header/Body/Footer) |

***

### Tipo de pagamento (padrão: `payment`)

Deixe como `payment`, a menos que sua implementação tenha outro tipo habilitado/definido. Em um tutorial genérico, `payment` está correto.

***

### Ambiente (`DEV` / `PROD`)

* **DEV**: testes controlados com credenciais de teste.
* **PROD**: cobranças reais com credenciais de produção.

<Warning>
  Quando você mudar para **PROD**, verifique se seu fluxo já trata bem as saídas (sucesso, pendente, falhou, erros) para evitar deixar o usuário "sem resposta".
</Warning>

***

### Expiração do botão (minutos)

Exemplo típico: `20`.

Isso evita pagamentos fora de contexto ("abri 3 horas depois") e ajuda o fluxo conversacional a permanecer coerente.

***

### Moeda

Selecione a moeda real de cobrança de acordo com o país/operação.
Exemplos: `CLP`, `MXN`, `COP`, `PEN`, etc.

***

### Motivo do pagamento

Este é o texto que permite identificar facilmente a cobrança.

Recomendação prática:

* Use uma **variável legível** (ex.: `mp_payment_description`)
* Ou texto claro como: `Valpo Walk Tour - 2 ingresso(s)`

<Note>
  Quanto mais "humano" for o motivo, menor é o atrito no suporte: o usuário e o lojista se entendem mais rápido quando algo dá errado.
</Note>

***

### Valor tributável + Valor isento + IVA

Aqui você define a estrutura do valor.

* **Valor tributável**: a parte que paga IVA (normalmente o valor líquido).
* **Valor isento**: a parte isenta (se não existir no seu caso, deixe como `0`).
* **Percentual de IVA**: por exemplo `19`.

**Exemplo típico (venda com IVA):**

* Valor tributável = líquido (ex.: `20168`)
* Valor isento = `0`
* IVA = `19`

**Se o seu caso NÃO usa impostos:**

* Use `0` conforme apropriado na sua implementação e mantenha consistência com seu cálculo (o importante é não "inventar" IVA se não se aplica).

***

### Metadados do pagamento

Este campo é opcional, mas útil; permite anexar contexto para rastreabilidade.

Recomendação: **minimalista e intencional**. Salve apenas o que você realmente usaria para:

* reconciliação de pagamento
* debugging
* ou suporte ao usuário

Exemplos úteis:

* `order_id`
* `order_reference_id` (se seu backend usa)
* `tour_slug`
* `user_id`

***

### Email do comprador (muito importante em DEV)

Em modo **DEV** é extremamente importante que o comprador seja um **usuário de teste**, conforme exigido pelo Mercado Pago.

Neste tutorial assumimos:

* **email do comprador = email do pagador** (são o mesmo)

Em **DEV** use o email do usuário de teste do país correspondente (a lista está abaixo). Em **PROD**, use o email real do usuário.

<Check>
  Se você está em DEV e coloca um email real (não de usuário de teste), o pagamento muito provavelmente falhará ou você não conseguirá concluí-lo.
</Check>

***

### Personalizar texto do botão de pagamento (opcional)

Por padrão vem como **Não**. Se você mudar para **Sim**, o nó habilita campos extras para personalizar a mensagem que o usuário verá *antes* de abrir o checkout.

Isso é útil quando você quer que o CTA pareça **mais contextual** (e menos genérico), sem alterar o fluxo ou o próprio checkout.

<Accordion title="Personalizar texto do botão de pagamento" icon="message">
  <ParamField body="Customize payment button text" type="boolean" default="false">
    Se você selecionar **Sim**, campos adicionais são habilitados para personalizar a mensagem que acompanha o botão de pagamento.

    **Campos habilitados quando ativado:**

    * `Header` (obrigatório)
    * `Body` (obrigatório)
    * `Footer` (obrigatório)
  </ParamField>

  <Info>
    Quando esta opção está ativa, você pode modificar completamente a mensagem que o usuário verá antes de abrir o checkout.
  </Info>

  <Frame caption="Exemplo de mensagem com botão de pagamento personalizado no WhatsApp">
    <img src="https://mintcdn.com/jelouai/nCvuucLdA-_D8bXJ/assets/images/integraciones/pagos/mercado-pago-boton-ejemplo.png?fit=max&auto=format&n=nCvuucLdA-_D8bXJ&q=85&s=adc316c21bd770d28a50e948abff86ef" alt="Exemplo de mensagem com texto personalizado e botão de pagamento do Mercado Pago no WhatsApp" className="max-w-sm mx-auto rounded-xl shadow-sm" width="1033" height="498" data-path="assets/images/integraciones/pagos/mercado-pago-boton-ejemplo.png" />
  </Frame>
</Accordion>

***

## Emails de teste por país (modo de teste / DEV)

Em **DEV**, o Mercado Pago só processa pagamentos se o **Email do comprador** pertencer a um *usuário de teste* do país correspondente.
Copie o que você precisar e cole diretamente no campo **Email do comprador** do nó.

<Note>
  Sempre use o usuário de teste do mesmo país que as credenciais que você está testando.
</Note>

<AccordionGroup>
  <Accordion title="🇨🇱 Chile">
    ```txt theme={null}
    test_user_230383680042455079@testuser.com
    ```
  </Accordion>

  <Accordion title="🇵🇪 Peru">
    ```txt theme={null}
    test_user_6344464757279593247@testuser.com
    ```
  </Accordion>

  <Accordion title="🇨🇴 Colômbia">
    ```txt theme={null}
    test_user_7600640374023229585@testuser.com
    ```
  </Accordion>

  <Accordion title="🇲🇽 México">
    ```txt theme={null}
    test_user_538195043292703001@testuser.com
    ```
  </Accordion>

  <Accordion title="🇧🇷 Brasil">
    ```txt theme={null}
    test_user_6254528388464257378@testuser.com
    ```
  </Accordion>

  <Accordion title="🇦🇷 Argentina">
    ```txt theme={null}
    test_user_1511189314898568640@testuser.com
    ```
  </Accordion>

  <Accordion title="🇺🇾 Uruguai">
    ```txt theme={null}
    test_user_1178397850300963040@testuser.com
    ```
  </Accordion>
</AccordionGroup>

<Check>
  Se você está em DEV e o pagamento falha sem razão aparente, primeiro verifique se o email é um usuário de teste válido.
</Check>

***

## Configuração do nó: Saídas

O nó expõe diferentes saídas dependendo do status do pagamento.

<Frame caption="Configuração de saídas do nó: Entrega correta de CTA, Pagamento bem-sucedido, Pendente, Falhou, Código de erro, Erro Http">
  <img src="https://mintcdn.com/jelouai/y5L6vahGrhMqbaUQ/assets/images/integraciones/pagos/seteo-outputs-nodo.png?fit=max&auto=format&n=y5L6vahGrhMqbaUQ&q=85&s=b5671bc9cc5c6ef11188eb91d38d81a8" alt="Fluxo do nó Jelou Pay mostrando saídas: Pagamento bem-sucedido, Pagamento pendente, Pagamento falhou, Código de erro, Erro Http, e Entrega correta de CTA conectados a nós de Texto, Botão e suporte" className="w-full max-w-3xl mx-auto rounded-xl shadow-sm" width="2048" height="929" data-path="assets/images/integraciones/pagos/seteo-outputs-nodo.png" />
</Frame>

***

## Mapa rápido de saídas

* **Entrega correta de CTA** → O botão foi enviado ao usuário (ainda sem resultado de pagamento).
* **Pagamento bem-sucedido** → O pagamento foi aprovado.
* **Pagamento pendente** → O pagamento foi iniciado mas ainda não creditado.
* **Pagamento falhou** → O pagamento foi rejeitado ou não concluído.
* **Código de erro / Erro Http** → Erro técnico do fluxo ou da solicitação.

<Note>
  **CTA** significa que o botão de pagamento foi enviado com sucesso.
  As outras saídas representam o **resultado real** da transação.
</Note>

***

## Saídas e o que conectar

| Saída                  | O que significa                 | O que conectar                         |
| ---------------------- | ------------------------------- | -------------------------------------- |
| Entrega correta de CTA | O botão foi enviado com sucesso | Agente de IA de suporte pós-CTA        |
| Pagamento bem-sucedido | O pagamento foi aprovado        | Código (normalização) → Texto (recibo) |
| Pagamento pendente     | O pagamento está em processo    | Texto informativo + acompanhamento     |
| Pagamento falhou       | O pagamento foi rejeitado       | Texto + opção de nova tentativa        |
| Código de erro         | Erro no seu fluxo               | Bloco de tratamento de erros           |
| Erro Http              | Erro na solicitação             | Bloco de tratamento de erros           |

***

### Entrega correta de CTA (Sucesso)

Isso significa que o **botão de pagamento foi enviado** ao usuário, mas ele ainda não realizou uma ação dentro da WebView que determine o status da transação (Aprovado, Rejeitado, Pendente, Erro).

Recomendação: conecte um **Agente de IA de suporte pós-CTA**. Assim, quando o usuário receber o botão de pagamento, haverá alguém do outro lado: um agente com o contexto adequado que pode responder perguntas frequentes, tranquilizá-lo e ajudar a concluir o pagamento sem reiniciar a venda.

<Frame caption="Botão de pagamento, mensagem de suporte proativo e resposta a uma pergunta (cartão de crédito)">
  <img src="https://mintcdn.com/jelouai/y5L6vahGrhMqbaUQ/assets/images/integraciones/pagos/soporte-post-cta-ejemplo-whatsapp.png?fit=max&auto=format&n=y5L6vahGrhMqbaUQ&q=85&s=7c82515588c84e1859c9f6ceb0f305c1" alt="Conversa no WhatsApp: agente oferece prosseguir com o pagamento, usuário aceita, agente envia botão do Mercado Pago e mensagem de suporte; usuário pergunta se aceitam cartão de crédito e agente responde gentilmente" className="mx-auto rounded-xl shadow-sm" style={{ maxWidth: '320px' }} width="1290" height="1134" data-path="assets/images/integraciones/pagos/soporte-post-cta-ejemplo-whatsapp.png" />
</Frame>

#### Exemplo de prompt

O prompt é projetado para um **Agente de IA** na saída de **Entrega correta de CTA**, com a ferramenta **Gmail** (Marketplace) conectada para enviar tickets de suporte por email quando o usuário solicitar. Você pode copiá-lo e ajustar o tom ou regras para sua marca.

<Accordion title="Ver prompt de suporte pós-CTA">
  ```txt theme={null}
  Você é "Suporte de Pagamento", um assistente para concluir pagamentos pelo WhatsApp.

  Contexto: o usuário acaba de receber um botão (CTA) para pagar. Seu papel NÃO é vender ou recalcular valores: apenas ajudar a concluir o pagamento ou resolver problemas com o botão.

  ────────────────────
  COMPORTAMENTO PRINCIPAL
  ────────────────────
  - Este agente pode ser executado sem que o usuário tenha escrito nada.
  - Se NÃO houver pergunta ou problema explícito do usuário na última mensagem, envie APENAS esta mensagem proativa (uma vez) e então fique em modo reativo:

  "Se você tiver alguma dúvida sobre seu pagamento, escreva aqui e eu te ajudo."

  - Se o usuário ESCREVER (pergunta/problema), responda diretamente, de forma breve e clara.
  - Não reinicie a venda. Não recalcule valores. Não gere novos links. Não invente informações.
  - Máximo 1 emoji por mensagem.

  ────────────────────
  O QUE VOCÊ SUPORTA
  ────────────────────
  - Como pagar pelo botão.
  - O botão não abre / erro de carregamento.
  - Pagamento pendente.
  - Pagamento rejeitado.
  - Problemas com cartão / método de pagamento.

  Se o usuário reportar um problema:
  1) Peça uma breve descrição.
  2) Se útil, peça uma captura de tela (eles podem enviar imagens).
  3) Ofereça gerar um ticket de suporte por e-mail. NÃO gere um ticket sem um "sim" explícito.

  ────────────────────
  TICKET POR E-MAIL (FERRAMENTA GMAIL)
  ────────────────────
  Se o usuário confirmar que quer um ticket, use a ferramenta Gmail para enviar um e-mail para: support@yourdomain.com

  Assunto:
  [Ticket de Pagamento] Operação {operation_id se existir} | Ref {order_reference_id se existir}

  Corpo:
  - E-mail do comprador/pagador
  - O que aconteceu (texto do usuário)
  - Status mencionado (pendente/rejeitado/erro)
  - Data e hora atuais
  - IDs úteis se existirem: operation_id / order_id / order_reference_id
  - Anexar evidências se o usuário enviou imagens

  Em seguida, confirme:
  "Pronto. Gerei o ticket e entraremos em contato por e-mail."

  ────────────────────
  ENCERRAMENTO / FIM DA TAREFA
  ────────────────────
  Se o usuário disser que já pagou e não precisa de mais ajuda (por exemplo, "pronto", "obrigado", "era isso"), responda brevemente e encerre:
  "Perfeito. Se precisar de mais alguma coisa, estarei aqui."
  ```
</Accordion>

***

### Pagamento bem-sucedido

O pagamento foi aprovado.

Recomendação:

1. Conecte um nó **Código** para normalizar e salvar o mínimo no **Contexto**.
2. Depois um nó **Texto** que exibe o recibo resumido (linha de recibo).

#### Exemplo: Código de normalização

Este nó lê `checkout_response` da memória e salva no contexto apenas o que é reutilizável.

<Accordion title="Exemplo de código de normalização">
  ```javascript normalize-payment.js theme={null}
  // Reads checkout_response (saved in Memory) and maps the minimum to Context
  const r = $memory.getJson('checkout_response')
  if (!r) throw new Error('checkout_response does not exist in memory.')

  const pl = r?.paymentLinkResponse
  if (!pl) throw new Error('checkout_response.paymentLinkResponse does not exist (check memory).')

  const gw = pl.gateway_response || {}
  const md = pl.metadata || gw.metadata || {}

  // buyer email = payer email (in the demo they match)
  const email = String(gw?.payer?.email || md.email || '')

  // Identifiers and reusable data
  $context.set('pay_operation_id', String(gw.id || '')) // "Operation number" in Mercado Pago
  $context.set('pay_amount', Number(pl.amount || 0))
  $context.set('pay_currency', String(pl.currency || 'CLP'))
  $context.set('pay_email', email)
  $context.set('pay_concept', String(gw.description || md.concept || ''))
  $context.set('pay_status', String(gw.status || 'approved'))

  // Receipt line (post-payment message)
  $context.set(
    'pay_receipt',
    `Done ✅ Payment approved.\n\nMercado Pago operation number: ${String(gw.id || '')}`
  )
  ```
</Accordion>

Se você usar este código, pode imprimir a mensagem ao usuário em um nó de saída **Texto** colando esta expressão:

```txt theme={null}
{{$context.pay_receipt}}
```

<Frame caption="Fluxo Pagamento bem-sucedido → Código (normalização) → Texto (pay_receipt)">
  <img src="https://mintcdn.com/jelouai/y5L6vahGrhMqbaUQ/assets/images/integraciones/pagos/pago-exitoso-codigo-texto-flujo.png?fit=max&auto=format&n=y5L6vahGrhMqbaUQ&q=85&s=4b616727705b1f014efec707101f090e" alt="Diagrama: saída Pagamento bem-sucedido do nó Jelou Pay conectada ao nó Código, e este ao nó Texto com pay_receipt" className="w-full max-w-3xl mx-auto rounded-xl shadow-sm" width="1640" height="608" data-path="assets/images/integraciones/pagos/pago-exitoso-codigo-texto-flujo.png" />
</Frame>

***

### Pagamento pendente

O pagamento está pendente.

Recomendação:

* Conecte um nó **Texto** com uma breve explicação.
* Depois roteie para o fluxo que vem a seguir (espera, acompanhamento, suporte, etc.).

Mantenha a mensagem simples: o objetivo é **não confundir** e **não pressionar um segundo pagamento** sem contexto.

***

### Pagamento falhou

O pagamento falhou (rejeição / não creditado).

Recomendação:

* Conecte um nó **Texto** claro e breve.
* Ofereça uma **nova tentativa** ou troca de método.
* Se o usuário continuar tendo problemas, roteie para o suporte.

***

### Código de erro / Erro Http

Erros técnicos do seu fluxo (código) ou da solicitação HTTP.

Recomendação:

* Conecte um bloco de **tratamento de erros**.
* Exiba uma mensagem breve + opção de nova tentativa + suporte.
* Evite expor detalhes técnicos ao usuário final.

***

# 2. Testes no WhatsApp

Após configurar o nó (entradas + saídas conectadas), é hora de **testar o fluxo completo pelo WhatsApp**.

<Info>
  **Importante:** A experiência de pagamento abre em um **WebView dentro do WhatsApp**. Portanto, para validar o pagamento de ponta a ponta, o teste deve ser feito pelo WhatsApp (não pela pré-visualização de mensagens do Canvas).
</Info>

## Vídeo 2: Testes pelo WhatsApp (DEV)

<Frame caption="Vídeo 2 – Testes por celular com cartões de teste (DEV)">
  <video controls className="mx-auto w-full max-w-sm aspect-[9/16] rounded-xl" src="https://mintcdn.com/jelouai/Hhs56n83OOsOa4Lx/assets/videos/integraciones/pagos/paso-2-prueba-whatsapp.mp4?fit=max&auto=format&n=Hhs56n83OOsOa4Lx&q=85&s=5ee89f78ebe8400b4bd5d6dccea6a664" data-path="assets/videos/integraciones/pagos/paso-2-prueba-whatsapp.mp4">
    Seu navegador não suporta reprodução de vídeo.
  </video>
</Frame>

***

## Como iniciar o teste pelo WhatsApp

No Brain Studio você pode iniciar um teste real no WhatsApp em segundos.

<Steps>
  <Step title="Abrir o painel de Teste">
    No canto superior direito do Canvas, clique em **Testar**.

    <Frame caption="Painel de teste do projeto: inicie um teste pelo WhatsApp inserindo seu número">
      <img src="https://mintcdn.com/jelouai/y5L6vahGrhMqbaUQ/assets/images/integraciones/pagos/probar-proyecto-whatsapp.png?fit=max&auto=format&n=y5L6vahGrhMqbaUQ&q=85&s=51e4b7d84aa11f0169c1ce83cf448097" alt="Painel de teste do projeto no Brain Studio com a opção Testar pelo WhatsApp e campo de número de telefone" className="mx-auto rounded-xl shadow-sm" style={{ maxWidth: '280px' }} width="708" height="1338" data-path="assets/images/integraciones/pagos/probar-proyecto-whatsapp.png" />
    </Frame>

    <Note>
      Se você ainda não tem um canal WhatsApp conectado/habilitado, esta é a forma mais rápida de validar o fluxo de pagamento.
    </Note>
  </Step>

  <Step title="Inserir seu número e enviar a primeira mensagem">
    * Selecione seu prefixo (ex.: **BR +55**)
    * Insira seu número
    * Envie a primeira mensagem para iniciar a conversa de teste

    A partir desse ponto, o fluxo funciona como se fosse um usuário real.
  </Step>

  <Step title="Concluir o pagamento no WebView">
    Quando o bot enviar o botão **Prosseguir para pagamento**, abra-o pelo WhatsApp.

    Lá você verá o checkout WebView e poderá testar cartões de teste, status (aprovado/rejeitado), e todo o tratamento de saídas.
  </Step>
</Steps>

<Note>
  Em alguns países, se o usuário tiver o app do Mercado Pago instalado no dispositivo, o checkout webview tentará abri-lo automaticamente como primeira opção de pagamento. No entanto, para pagamentos DEV esta opção não está habilitada, então você deve fechá-lo e voltar ao WhatsApp para inserir o cartão de teste.
</Note>

***

## Cartões de teste por país

Para testar diferentes cenários (pagamento aprovado, pagamento rejeitado, etc.), o Mercado Pago publica cartões de teste por país.

<Note>
  Em **DEV**, lembre de duas coisas:

  * Use credenciais de **teste**.
  * Use um **usuário de teste** válido no campo **Email do comprador** (do mesmo país que suas credenciais).
</Note>

Cada link contém números de cartão, CVV e casos de aprovação/rejeição:

<AccordionGroup>
  <Accordion title="🇨🇱 Chile">
    [Cartões de teste (Chile)](https://www.mercadopago.cl/developers/es/docs/checkout-bricks/integration-test/test-cards)
  </Accordion>

  <Accordion title="🇵🇪 Peru">
    [Cartões de teste (Peru)](https://www.mercadopago.com.pe/developers/es/docs/your-integrations/test/cards)
  </Accordion>

  <Accordion title="🇨🇴 Colômbia">
    [Cartões de teste (Colômbia)](https://www.mercadopago.com.co/developers/es/docs/your-integrations/test/cards)
  </Accordion>

  <Accordion title="🇲🇽 México">
    [Cartões de teste (México)](https://www.mercadopago.com.mx/developers/es/docs/shopify/additional-content/your-integrations/test/cards)
  </Accordion>

  <Accordion title="🇧🇷 Brasil">
    [Cartões de teste (Brasil)](https://www.mercadopago.com.br/developers/es/docs/checkout-api-payments/additional-content/your-integrations/test/cards)
  </Accordion>

  <Accordion title="🇦🇷 Argentina">
    [Cartões de teste (Argentina)](https://www.mercadopago.com.ar/developers/es/docs/subscriptions/additional-content/your-integrations/test/cards)
  </Accordion>

  <Accordion title="🇺🇾 Uruguai">
    [Cartões de teste (Uruguai)](https://www.mercadopago.com.uy/developers/es/docs/subscriptions/additional-content/your-integrations/test/cards)
  </Accordion>
</AccordionGroup>

<Check>
  Se você quiser testar seu fluxo corretamente, experimente pelo menos 2 casos: **um aprovado** e **um rejeitado**. Isso valida que suas saídas (Pagamento bem-sucedido / Falhou) estão conectadas corretamente.
</Check>

***

# 3. Ir para produção (PROD)

Ir para **PROD** é basicamente mudar duas coisas: **credenciais** e **dados reais**.
A experiência no WhatsApp permanece a mesma, mas agora o pagamento afeta sua conta de produção.

## Vídeo 3: Configuração de produção + pagamento real

<Frame caption="Vídeo 3 – Indo para produção (PROD) e pagamento real">
  <iframe className="mx-auto w-full max-w-3xl aspect-video rounded-xl" src="https://www.youtube.com/embed/1sSVuPfs4rI" title="Vídeo 3 – Indo para produção (PROD) e pagamento real" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
</Frame>

<Steps>
  <Step title="Obter credenciais de produção">
    No Mercado Pago, acesse **Credenciais de produção** e copie seu **Access Token** de produção.

    <Note>
      Este token está associado à sua conta de produção. Use-o apenas quando estiver pronto para cobrar real.
    </Note>
  </Step>

  <Step title="Atualizar credenciais no Marketplace">
    Para evitar confusão (e ser explícito), vamos reinstalar a integração com o token correto:

    * Acesse o **Marketplace**
    * Abra o **Mercado Pago**
    * Pressione **Excluir integração**
    * Pressione **Instalar novamente**
    * Cole seu **Access Token de produção**
    * Pressione **Instalar**
  </Step>

  <Step title="Mudar o ambiente do nó para PROD">
    No nó **Jelou Pay: Enviar link de pagamento**:

    * Mude o **Ambiente** de `DEV` para `PROD`

    <Check>
      A partir deste ponto, o fluxo tentará gerar cobranças reais.
    </Check>
  </Step>

  <Step title="Substituir o Email do comprador pelo email real do fluxo">
    Em **DEV**, usamos um **usuário de teste** no campo **Email do comprador**.
    Em **PROD**, esse mesmo campo deve vir do seu fluxo (o email real do usuário).

    Se durante a fase de teste você deixou um usuário de teste fixo na entrada, agora substitua pela sua variável.

    <Note>
      Neste tutorial, o email é capturado durante a conversa (Agente de IA) e normalizado como variável antes de chegar ao nó de pagamento.
      O importante é que em **PROD** o campo **Email do comprador** esteja conectado a esses dados reais.
    </Note>
  </Step>

  <Step title="(Opcional) Personalizar texto do botão de pagamento">
    Se você quiser que o CTA pareça mais contextual (sem alterar o checkout), ative **Personalizar texto do botão de pagamento**.

    * Mude o seletor para **Sim**
    * Preencha **Header**, **Body** e **Footer** (obrigatórios)

    <Info>
      Isso apenas personaliza a mensagem pré-checkout dentro do WhatsApp.
      A lógica de pagamento e o WebView não mudam.
    </Info>
  </Step>

  <Step title="Testar pagamento real">
    Faça um pagamento real (carteira ou cartão) e verifique:

    * Status **Aprovado**
    * **Número de operação** (operation ID)
    * Registro visível no seu **painel do Mercado Pago**
  </Step>
</Steps>

<Warning>
  Transações de produção consomem créditos do Brain Studio por tentativa, além das comissões do provedor.
  Se você estiver validando pela primeira vez, faça uma cobrança pequena e revise o painel antes de escalar.
</Warning>

***

# Próximos passos

<CardGroup cols={3}>
  <Card title="Experiências de pagamento" href="/pt/guias/integracoes/pagamentos/experiencias/tipos-de-experiencia" icon="puzzle">
    Quando usar WebView, experiência nativa ou fluxos conversacionais.
  </Card>

  <Card title="Provedores de pagamento" href="/pt/guias/integracoes/pagamentos/provedores" icon="credit-card">
    Outros provedores por país e guias específicos.
  </Card>

  <Card title="Mercado Pago - Uso e configuração" href="/pt/guias/integracoes/pagamentos/provedores/mercado-pago/uso-e-configuracao" icon="gear">
    Referência completa para entradas, saídas e opções do nó.
  </Card>
</CardGroup>

***

Com esses passos você tem o fluxo funcionando em teste e produção.
A partir daqui você pode registrar operações, emitir recibos, enviar tickets de email automáticos ou integrar mais provedores dependendo do seu caso de uso.
