> For the complete documentation index, see [llms.txt](https://docs.mavibot.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mavibot.ai/doc/pt/integrations/payment/stripe.md).

# Stripe

## Como conectar

Para conectar o sistema de pagamento Stripe, você precisará de uma chave secreta de API e de uma chave de webhook.

A chave secreta de API pode ser copiada acessando Desenvolvedores → chaves de API e copiando a chave secreta.

Passo 1. Vá para Desenvolvedores → chaves de API:

<div data-with-frame="true"><figure><img src="/files/e44bf318c4c34bbb5d2ff4baa223c0b30ca4049e" alt=""><figcaption><p>Figura 1. Como encontrar a seção api keys</p></figcaption></figure></div>

Passo 2. Encontre e copie a chave secreta:

<div data-with-frame="true"><figure><img src="/files/5cc97c453d39dc88720f7e655222cd1478768bc9" alt=""><figcaption></figcaption></figure></div>

Em seguida, você precisa definir uma URL de callback. Isso permite que o bot receba notificações de pagamento.

Vá para a seção Webhooks e adicione a URL do webhook.

<div data-with-frame="true"><figure><img src="/files/366157800ac61bb11a344d6b0ea0577f912e2d6e" alt=""><figcaption></figcaption></figure></div>

Um formulário será exibido.

<div data-with-frame="true"><figure><img src="/files/fd09b71e9b75f3bd60dc537af12789734c3e8885" alt=""><figcaption></figcaption></figure></div>

Passo 3. Clique em "+add destination".

Passo 4. Selecione os eventos.

<div data-with-frame="true"><figure><img src="/files/60eecee307c8794661bc976e753ccf0bf5b1634c" alt=""><figcaption></figcaption></figure></div>

Passo 3. Selecione o tipo "Webhook endpoint".

<div data-with-frame="true"><figure><img src="/files/c6914e09669fdf9857fb0cdeddf95d3900b6e105" alt=""><figcaption></figcaption></figure></div>

Passo 4. Revise o tipo de solicitação e clique em "Continuar".

<div data-with-frame="true"><figure><img src="/files/d87a75bb4f1dd33a34235337b3487541bcfd2153" alt=""><figcaption></figcaption></figure></div>

Passo 5. Insira um nome e especifique a URL do endpoint.

<div data-with-frame="true"><figure><img src="/files/a55e8bc4be1f0fc3d756510a7de5bd0bfccb027f" alt=""><figcaption></figcaption></figure></div>

Defina a URL como: <https://chatter.mavibot.ai/stripe\\_callback/result>

Passo 6. Dois endpoints serão criados — você pode revisar as configurações antes de adicioná-los.

<div data-with-frame="true"><figure><img src="/files/da8c8350dfc195a5b76e6545204c94d5430302c5" alt=""><figcaption></figcaption></figure></div>

Passo 7. Clique no botão "Adicionar destinos". Os webhooks serão salvos.

Passo 8. Clique em "Concluído".

<div data-with-frame="true"><figure><img src="/files/671a48dc1bb7fa6f6734963497555ae02ecf07e5" alt=""><figcaption></figcaption></figure></div>

Salve e você será levado para a página com o webhook configurado.

<div data-with-frame="true"><figure><img src="/files/b4753ed066e58476b066ab15ca19dbafa9ed9af9" alt=""><figcaption></figcaption></figure></div>

Passo 9. Clique no webhook onde você selecionou todos os eventos.

<div data-with-frame="true"><figure><img src="/files/b6ba5255d40722f375887ab7ee57d3f2ebb45e02" alt=""><figcaption></figcaption></figure></div>

Passo 10. Encontre a Signing key e salve-a (você precisará dela depois para conectar ao MaviBot).

<div data-with-frame="true"><figure><img src="/files/76de4a0e2c89282b726aa7027c227486a0ca39ac" alt=""><figcaption></figcaption></figure></div>

Depois que você tiver as chaves, prossiga para conectar no Mavibot.

No Mavibot, abra a seção "Adquirência" e selecione Stripe.

<div data-with-frame="true"><figure><img src="/files/62fa267178f6ad2e7542079e46ccb0c18b02ed11" alt=""><figcaption></figcaption></figure></div>

Na página de conexão, insira as chaves que você obteve.

<div data-with-frame="true"><figure><img src="/files/2db10aa5bdfefb25c2de63554a43fc45f0cce667" alt=""><figcaption></figcaption></figure></div>

Clique em "Salvar configurações".

{% hint style="success" %}
Pronto! Você conectou o Stripe.
{% endhint %}

## Como conectar um callback de status da transação

Para receber um callback adicional, você precisa adicionar um segundo webhook junto ao existente.

Defina a URL como: <https://chatter.mavibot.ai/stripe\\_callback/\\>\<api\_key>/charge\_status

e selecione os seguintes eventos:

* `charge.failed`
* `charge.pending`
* `charge.succeeded`

<div data-with-frame="true"><figure><img src="/files/3c5ac5f4bc489ee93b3e1f5cdc8fe5a7aec53fdf" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="success" %}
Mais detalhes sobre cada tipo de webhook:

1. `charge.succeeded` — contém informações sobre uma transação concluída com sucesso (semelhante ao callback de pagamento bem-sucedido)
2. `charge.pending` — "transação em andamento", pode levar até 7 dias para ser concluída. O webhook terá o formato {primeiros 10 caracteres}{tipo do webhook} Por exemplo: sk\_test\_45LDPJLKT95d\_charge.pending
3. `charge.failed` — "transação com falha". O webhook terá o formato {primeiros 10 caracteres}{tipo do webhook} Por exemplo: sk\_test\_45LDPJLKT95d\_charge.failed
   {% endhint %}

Adicione a chave do webhook obtida após salvar ao campo do Mavibot — Webhook key2.

<div data-with-frame="true"><figure><img src="/files/35fd1e34f16821bd6f54c2124dda47e892dfab31" alt=""><figcaption></figcaption></figure></div>

**stripe\_invoice\_id** — o identificador da transação para a qual um callback de pagamento bem-sucedido não foi recebido imediatamente após o pagamento.

## Como configurar impostos

Para usar impostos nos pagamentos, primeiro você precisa criá-los no seu painel do Stripe. Para isso, digite "tax rates" na barra de busca:

<div data-with-frame="true"><figure><img src="/files/77cf429f6d24e272d5523ad28ea84d9c9b70e2d5" alt=""><figcaption></figcaption></figure></div>

E clique em "+ Add tax rates".

<div data-with-frame="true"><figure><img src="/files/b385945f312b3b7ac3a2fdc677097095272de340" alt=""><figcaption></figcaption></figure></div>

Depois, insira a alíquota de imposto aplicável.

<div data-with-frame="true"><figure><img src="/files/c9cd8fa205ffda11b96d0051d4898d473699ed69" alt=""><figcaption></figcaption></figure></div>

No menu que se abre, selecione o tipo de imposto, a região à qual ele se aplica, a porcentagem da taxa e se o imposto será incluído no valor do pagamento (Inclusive) ou adicionado por cima dele (Exclusive).

<div data-with-frame="true"><figure><img src="/files/915999b29fe2c2b4badd32d7d5c082c06bec0e4a" alt=""><figcaption></figcaption></figure></div>

Depois de criar a alíquota de imposto, copie o ID dela para a variável stripe\_tax\_id antes de declarar o valor do pagamento.

<div data-with-frame="true"><figure><img src="/files/e4be36591184bf558be8bd4b831d8503cecc2784" alt=""><figcaption></figcaption></figure></div>

Para evitar erros, é recomendável definir a variável stripe\_tax\_id como uma string vazia ("") após receber o link — assim você pode aplicar o imposto apenas quando necessário.

Se feito corretamente, no caso de uma alíquota de imposto com o parâmetro exclusive, você verá o seguinte:

<div data-with-frame="true"><figure><img src="/files/bd3f5ce36ddd65015abc060e53c1c44031ea9e97" alt=""><figcaption></figcaption></figure></div>

Como obter um link de pagamento

Para gerar um link de pagamento, defina o valor da variável payment\_sum (por exemplo, 150 ou 100.55 — use ponto, não vírgula!). Depois disso, a variável stripe\_pay\_url aparecerá. Você pode exibir essa variável como um link ou colocá-la em um botão com o texto "Pagar".

O link fica assim:

`https://checkout.stripe.com/pay/cs_test_a17mskKFFRwEuo3WgBSAUjfk7xaZZIrct9B3Ds2AdODVq1I8aRiqYEBdrU#fidkdWxOYHwnPyd1blpxYHZxWjA0TGFsVzFPVmpmMzJAbVYzUkp1Y0lLYDVgfzR2Q0NxcWZBNUNnTnRSVVRJSGFobEB1UExSczRMMTc8PWRLMGBddl8xalxyPDRoUGhnZm9xXXZANDZyaF0wNTVBVExsPHZyfycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl`

{% hint style="warning" %}
Por padrão, a moeda é definida como USD. Para usar uma moeda diferente, defina o valor da variável currency.
{% endhint %}

Você também pode definir as seguintes variáveis opcionais antes de definir o valor de payment\_sum para configurar o pagamento.

<table><thead><tr><th width="271.8984375">Parâmetros da função</th><th>Descrição do parâmetro</th></tr></thead><tbody><tr><td><strong>currency</strong></td><td>moeda do pedido. Valores permitidos estão aqui —<a href="https://stripe.com/docs/currencies">https://stripe.com/docs/currencies</a></td></tr><tr><td><strong>payment_description</strong></td><td>descrição do pagamento</td></tr><tr><td> <strong>stripe_tax_id</strong></td><td>identificador da taxa configurada no painel do Stripe.<br>As instruções de configuração são fornecidas na seção "<a href="#how-to-set-up-taxes">Como configurar impostos</a>" seção.</td></tr><tr><td><strong>stripe_invoice_enable</strong> </td><td>sinalizador para habilitar o salvamento de faturas (recibos). Defina qualquer valor para ativar isso — todos os documentos relevantes estarão disponíveis no seu painel do Stripe.</td></tr><tr><td><strong>stripe_locale</strong></td><td><p>defina o idioma da página de pagamento: en, de etc. Todas as opções disponíveis: https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-locale</p><p>Se stripe_locale não for definido, o idioma do navegador do cliente será usado.</p></td></tr><tr><td><strong>stripe_payment_method_type</strong></td><td>método de pagamento; o padrão é pagamento com cartão. Pode ser substituído por outros métodos de pagamento disponíveis no Stripe. Os métodos disponíveis estão listados abaixo. Por exemplo, <code>stripe_payment_method_type = "customer_balance"</code></td></tr><tr><td><strong>stripe_additional_payment_method_type</strong> </td><td>adicione um método de pagamento adicional. Os métodos disponíveis estão listados abaixo. Por exemplo, <code>stripe_additional_payment_method_type = "sepa_debit"</code></td></tr><tr><td><strong>coupon_id</strong></td><td>identificador do cupom de desconto</td></tr><tr><td>stripe_expired </td><td>tempo de expiração do link de pagamento. Especificado em segundos. O mínimo é 30 minutos, o máximo é 24 horas. O padrão é 24 horas.</td></tr><tr><td>stripe_automatic_tax</td><td>ative o cálculo e a cobrança automáticos de imposto no checkout. Passe "1" para ativar. Para mais detalhes, consulte os <a href="https://docs.stripe.com/tax/set-up">artigos do Stripe.</a></td></tr></tbody></table>

{% hint style="warning" %}
Importante! Se você usar as variáveis stripe\_payment\_method\_type e stripe\_additional\_payment\_method\_type, os valores nelas DEVEM ser DIFERENTES!
{% endhint %}

<details>

<summary>Lista de valores para stripe_payment_method_type e stripe_additional_payment_method_type</summary>

card\
acss\_debit\
affirm \
afterpay\_clearpay \
alipay\
au\_becs\_debit \
bacs\_debit \
bancontact \
blik \
boleto \
cashapp \
customer\_balance \
eps \
fpx \
giropay \
grabpay \
ideal \
klarna \
konbini \
link \
oxxo \
p24 \
paynow \
paypal \
pix \
promptpay \
sepa\_debit \
sofort \
us\_bank\_account \
wechat\_pay zip

</details>

{% hint style="info" %}
[Para mais detalhes sobre cada método e os países onde eles estão disponíveis, consulte a documentação do Stripe](https://stripe.com/docs/api/payment_methods/object#payment_method_object-type)
{% endhint %}

### Exemplo de geração de link de pagamento

Vamos criar um link de pagamento para 1000 AED (a moeda padrão é USD).

<div data-with-frame="true"><figure><img src="/files/2462533743a6f57ef7814a2a488f43c46a7cff04" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Observação:&#x20;

— Primeiro, especifique os parâmetros opcionais, como first\_name, payment\_description etc.&#x20;

— Depois, atribua o valor à variável payment\_sum por último.

As variáveis também podem ser definidas mais cedo na cadeia, não necessariamente no mesmo bloco — este é apenas um exemplo.
{% endhint %}

Em seguida, exiba a variável stripe\_pay\_url, que contém o link, no ponto desejado — seja em um bloco de mensagem ou em um botão:

Exemplo 1. Exibir o link de pagamento diretamente em uma mensagem:

<div data-with-frame="true"><figure><img src="/files/9bfd01b513f7e97552fe5368fc51e535b2ce2058" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e645344811cc3e3829610a273ba050d44567b0a9" alt="" width="563"><figcaption><p>Testando no bot.</p></figcaption></figure></div>

Exemplo 2. Adicionar o link de pagamento a um botão.

<div data-with-frame="true"><figure><img src="/files/d72eefd6389246a37578a09c26013ec545a2a4f6" alt=""><figcaption></figcaption></figure></div>

Quando o botão é clicado ou o link é acessado, quem paga será redirecionado para a página de pagamento.

<div data-with-frame="true"><figure><img src="/files/19d28201183876fbb844b33c9ac5d2d9eede35c8" alt=""><figcaption></figcaption></figure></div>

O exemplo mostra que os parâmetros que especificamos na calculadora nas configurações do bloco foram aplicados: descrição do pedido, moeda e valor.

Se você passar o parâmetro da alíquota de imposto (stripe\_tax\_id) no bloco.

<div data-with-frame="true"><figure><img src="/files/7114a82502320158a3d7e8e0eda3dce72627fe1f" alt=""><figcaption></figcaption></figure></div>

A alíquota de imposto também será exibida no formulário de pagamento.

<div data-with-frame="true"><figure><img src="/files/709d52e2b14ae43510e19fa8728343266d506056" alt=""><figcaption></figcaption></figure></div>

<details>

<summary>Exemplo de código para copiar</summary>

payment\_description = "test payment"&#x20;

currency = 'AED'&#x20;

stripe\_tax\_id = 'enter\_your\_stripe\_id\_tax'&#x20;

payment\_sum = 1000

</details>

Onde encontrar o ID da taxa.

<div data-with-frame="true"><figure><img src="/files/e33e056cd1f0280305d51dc3f875d3c046e10fab" alt=""><figcaption></figcaption></figure></div>

## Como configurar pagamentos recorrentes

Para pagamentos recorrentes (assinaturas), declare a variável stripe\_subscription antes da variável payment\_sum e atribua a ela o nome da assinatura.

Você também pode adicionar as seguintes variáveis: interval — duração do intervalo da assinatura. Passe 'day' para dias, 'week' para semanas, 'month' para meses ou 'year' para anos. Se a variável não for definida, 'month' será usado por padrão.

{% hint style="warning" %}
Importante!

A duração de um ciclo de assinatura não pode exceder 1 ano (para o parâmetro 'year'), 12 meses (para o parâmetro 'month') ou 52 semanas (para o parâmetro 'week').
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/a60bc10ca89dca51aaa48986f004fe80789645de" alt=""><figcaption></figcaption></figure></div>

interval\_count — número de intervalos especificados: quantos dias, semanas ou meses estão incluídos na assinatura para o valor dado. O padrão é 1.

stripe\_payment\_method\_type — o método de pagamento; o padrão é pagamento com cartão. Pode ser substituído por outros métodos de pagamento disponíveis no Stripe. Os métodos disponíveis estão listados abaixo.

Por exemplo, `stripe_payment_method_type = 'customer_balance'`

stripe\_additional\_payment\_method\_type — adicione um método de pagamento adicional. Os métodos disponíveis estão listados abaixo.

Por exemplo, `stripe_additional_payment_method_type = 'sepa_debit'`

{% hint style="warning" %}
Importante! Se você usar as variáveis stripe\_payment\_method\_type e stripe\_additional\_payment\_method\_type, os valores nelas DEVEM ser DIFERENTES!
{% endhint %}

<details>

<summary>Lista de valores para stripe_payment_method_type e stripe_additional_payment_method_type:</summary>

card\
acss\_debit\
affirm \
afterpay\_clearpay \
alipay\
au\_becs\_debit \
bacs\_debit \
bancontact \
blik \
boleto \
cashapp \
customer\_balance \
eps \
fpx \
giropay \
grabpay \
ideal \
klarna \
konbini \
link \
oxxo \
p24 \
paynow \
paypal \
pix \
promptpay \
sepa\_debit \
sofort \
us\_bank\_account \
wechat\_pay zip

</details>

{% hint style="info" %}
[Para mais detalhes sobre cada método e os países onde eles estão disponíveis, consulte a documentação do Stripe](https://stripe.com/docs/api/payment_methods/object#payment_method_object-type).
{% endhint %}

{% hint style="warning" %}
Importante!

A duração de um ciclo de assinatura não pode exceder 1 ano (para o parâmetro 'year'), 12 meses (para o parâmetro 'month') ou 52 semanas (para o parâmetro 'week').
{% endhint %}

Neste exemplo, uma assinatura chamada 'My\_subscription' será criada com o preço de 1000 AED por 1 mês, e um pagamento recorrente do mesmo valor será cobrado após 1 mês.

<div data-with-frame="true"><figure><img src="/files/2a98cac24a3e63191f0e0b5e3343e214fb72c82a" alt=""><figcaption></figcaption></figure></div>

Exemplo para copiar:

`stripe_subscription = 'My_subscription' interval = 'month' payment_sum = 90`

Para cobrar o pagamento da assinatura uma vez a cada dois, três ou quatro meses, passe o parâmetro interval\_count:

`stripe_subscription = 'My_subscription'`

`interval = 'month'`

`interval_count = 3`

`payment_sum = 90`

Para alterar o intervalo de pagamento da assinatura de mensal para semanal, passe a palavra week no parâmetro interval:

`stripe_subscription = 'My_subscription'`

`interval = 'week'`

`interval_count = 3`

`payment_sum = 90`

Após o pagamento, as variáveis de transação do cliente incluirão stripe\_subscription\_id, que é necessário para configurar o cancelamento da assinatura, e stripe\_customer\_id, que pode ser usado depois para verificar o status da assinatura.

{% hint style="warning" %}
A notificação (callback) é enviada apenas para o primeiro pagamento recorrente!

NÃO haverá callback para pagamentos subsequentes. O acompanhamento é feito pela função e pelo stripe\_customer\_id.
{% endhint %}

<figure><img src="/files/31391a71a80738970aec1ad166a415b7f5e5f6d7" alt="" width="371"><figcaption></figcaption></figure>

## Configurações para voltar a pagamentos regulares

Para voltar aos pagamentos regulares, atribua uma string vazia à variável da assinatura: stripe\_subscription = ''. Nesse caso, as variáveis interval e interval\_count não afetarão a geração do link.

<div data-with-frame="true"><figure><img src="/files/f1917d4b5e2affd5c911ac37649f0a643dad81a9" alt=""><figcaption></figcaption></figure></div>

## Configurações para cancelar uma assinatura

Para cancelar uma assinatura na calculadora, use o método stripe\_remove\_subscription(stripe\_subscription\_id), onde stripe\_subscription\_id é o identificador salvo nas variáveis da transação após o pagamento.

Isso manterá a assinatura paga ativa até o final do período de cobrança atual, mas nenhuma cobrança adicional ocorrerá, e a assinatura será cancelada quando o período expirar.

<div data-with-frame="true"><figure><img src="/files/c874e9a8885da2cda056026e2c3d55bbe896d5be" alt=""><figcaption></figcaption></figure></div>

answer = stripe\_remove\_subscription('#{stripe\_subscription\_id}')

stripe\_remove\_subscription — em caso de sucesso, retorna uma resposta com informações sobre a data até a qual a assinatura cancelada permanecerá ativa.

Neste exemplo, o resultado da função será armazenado na variável answer, permitindo verificar o resultado.

## Verificando o status da assinatura

stripe\_check\_subscription(subscription\_id, customer\_id), onde

stripe\_subscription\_id — identificador da assinatura stripe\_customer\_id — identificador do cliente no Stripe (parâmetro opcional)

<div data-with-frame="true"><figure><img src="/files/80083e30bdaa616e498c99734098d053e2faf5e7" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/277a3963fc00ec87c17acdfbd56fe1120553a287" alt=""><figcaption></figcaption></figure></div>

## Como criar um cupom e obter um ID de desconto

Para obter um identificador de desconto, crie um cupom no seu painel na seção "[Cupons](https://dashboard.stripe.com/coupons)".

<div data-with-frame="true"><figure><img src="/files/eb2cd30b1b6f29a2faf197a5d6da688445f08035" alt=""><figcaption></figcaption></figure></div>

Clicar no botão "Novo" abrirá uma página onde você precisa especificar:

1. Nome — o nome do desconto;
2. ID — o identificador, gerado automaticamente;
3. Tipo — o tipo de desconto: percentual ou valor fixo;
4. Duração — a duração do desconto (único ou contínuo, por exemplo, para assinaturas) e outros parâmetros.

<div data-with-frame="true"><figure><img src="/files/2adcf85bb1ea1f4dfb9b829fc06a95e7baf14880" alt=""><figcaption></figcaption></figure></div>

O cupom de desconto aparecerá no "Catálogo de produtos" na seção "Cupons", e você poderá ver o ID do desconto abrindo o menu do cupom.

<div data-with-frame="true"><figure><img src="/files/0b38431b4b4d410e2cea98d6e78db355c314a99a" alt=""><figcaption></figcaption></figure></div>

Clique no cupom para copiar o ID do cupom.

<div data-with-frame="true"><figure><img src="/files/bcd4e6555b832d4c21b537d32743fce1b89de069" alt=""><figcaption></figcaption></figure></div>

## Como aplicar um desconto a um pedido

1. Ao gerar um link de pagamento (funciona tanto para assinaturas quanto para pagamentos únicos).

Na calculadora do bloco, antes de declarar a variável payment\_sum, defina a variável coupon\_id e passe o identificador do desconto do seu painel do Stripe.

<div data-with-frame="true"><figure><img src="/files/4ed31b6d4b5e9e9439e5792d56c8c1f64900b097" alt=""><figcaption></figcaption></figure></div>

2. Em uma assinatura existente usando a função stripe\_add\_subscription\_discount.

Defina as condições de gatilho para o bloco e chame a função especificada na calculadora, passando os parâmetros stripe\_subscription\_id (ID da assinatura) e coupon\_id (ID do desconto do cupom). O desconto será aplicado aos pagamentos subsequentes da assinatura.

<div data-with-frame="true"><figure><img src="/files/5ed941ce71128915988ba17a6b99a0791e3490d7" alt=""><figcaption></figcaption></figure></div>

<details>

<summary>Exemplo de código para copiar</summary>

stripe\_subscription = 'test subscription'&#x20;

interval = 'month'&#x20;

payment\_description = 'test payment'&#x20;

currency = 'AED'&#x20;

coupon\_id = 'BD8VIwi8' stripe\_add\_subscription\_discount(stripe\_subscription\_id, coupon\_id)

stripe\_tax\_id = 'Qfkiwiki29jcs'

payment\_sum = 90

</details>

Se o desconto for aplicado com sucesso, a função retornará uma mensagem com o ID da assinatura, o tipo de desconto, o valor ou percentual e a data de expiração.

<div data-with-frame="true"><figure><img src="/files/f157c9df796a443876cb777dce97ae729d6647f2" alt=""><figcaption></figcaption></figure></div>

## Como remover ou alterar um desconto de uma assinatura

Um desconto associado a uma assinatura pode ser removido ou substituído por outro desconto.

Para interromper um desconto, defina as condições de gatilho para o bloco e chame a função stripe\_remove\_subscription\_discount na calculadora, passando o parâmetro stripe\_subscription\_id (ID da assinatura).

<div data-with-frame="true"><figure><img src="/files/7058611ae66d988d301daaf097308e02965e3c39" alt=""><figcaption></figcaption></figure></div>

Se a operação for bem-sucedida, a função retornará uma mensagem contendo o ID da assinatura e a data de cancelamento do desconto.

Substituir um desconto, assim como adicionar um novo, é feito usando a função stripe\_add\_subscription\_discount. Certifique-se de passar os parâmetros stripe\_subscription\_id e coupon\_id. Uma solicitação bem-sucedida atualizará o cupom associado à assinatura e retornará uma mensagem com os detalhes atualizados.

## Como lidar com o resultado

Após um pagamento bem-sucedido, o bot receberá callbacks que indicam uma transação bem-sucedida. No sistema, esses callbacks aparecem como mensagens do usuário. Para impedir que os usuários os enviem manualmente, eles consistem nos primeiros 20 caracteres da chave secreta seguidos de \_success, por exemplo: sk\_live\_d35gky6d8ers\_success

<div data-with-frame="true"><figure><img src="/files/71514d0132adb70250062e36da0ed55568fe8f1f" alt="" width="563"><figcaption></figcaption></figure></div>

Esses callbacks NÃO ficam visíveis para o usuário — eles são visíveis apenas para o operador.

O tipo de comparação deve ser definido como "Correspondência exata".

Após um pagamento bem-sucedido, a variável stripe\_payment\_completed também é definida como True.

Por exemplo, você pode lidar com um pagamento bem-sucedido usando um bloco condicional e exibir a mensagem apropriada para o usuário.

<div data-with-frame="true"><figure><img src="/files/7cbda09fd736c20de7e69a3b8c72cdd6af10a7a3" alt=""><figcaption></figcaption></figure></div>

Após a conclusão do pagamento, a variável stripe\_callback\_data será adicionada aos dados do cliente, contendo a resposta do sistema de pagamento para a transação concluída. Os dados necessários podem ser extraídos do dicionário resultante usando o método get.

{% hint style="warning" %}
Para processar um pagamento repetido, você deve primeiro redefinir payment\_sum e o link gerado anteriormente, e só então reatribuir a variável payment\_sum para obter um novo link. Você pode usar o valor anterior.
{% endhint %}

## Como testar pagamentos

Para testar a integração, você pode usar a chave secreta do ambiente de teste. Para isso, mude para o ambiente de teste no painel do Stripe usando o menu à direita.

![](https://lh5.googleusercontent.com/r-tuJboMES8alkTUpKwA4HKrmL_epNtSXdENrv12EyR9dGCtvRLBK6qw4UGcr59GA3unxc1cV1otCu80nqHEw9VhbEK05ovPQ1Ad8chBv50LAWPO16nEPC2hFhCAsCe3khtBJrob=s0)

Em seguida, siga as etapas de configuração descritas no início deste guia. Insira a chave secreta de teste e adicione a URL do webhook no ambiente de teste.

Para testar, use um número de cartão de pagamento de teste ([você pode encontrar o número do cartão do seu país no site oficial do Stripe](https://stripe.com/docs/testing#regulatory-cards)).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.mavibot.ai/doc/pt/integrations/payment/stripe.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
