Wow! Redução de 65% no preço para clientes brasileiros! Registre-se agora
WhatsApp API

Pagamento confirmado: envie o convite do grupo

Dê a quem paga um caminho direto do checkout ao seu grupo privado no WhatsApp. Quando o pagamento for confirmado, seu backend pode buscar o convite e entregá-lo ao pagador automaticamente via Whapi.Cloud. Este caso de uso mostra aos integradores como implementar esse fluxo com a WhatsApp API.

Disparado pelo seu webhook de pagamento O convite chega no WhatsApp do pagador
Confirmação de checkout ao lado de um convite de grupo no WhatsApp pronto para o pagador abrir.
Balão decorativo
Caso de uso

Quando usar este fluxo

Você vende acesso a um grupo privado no WhatsApp

O produto pago é uma vaga em um grupo privado no WhatsApp, e a entrada é o link de convite desse grupo.

O grupo de destino é resolvido de forma dinâmica

Seu backend escolhe qual grupo do WhatsApp corresponde ao produto ou plano comprado.

O convite deve ser enviado automaticamente

O pagador deve receber o convite sem alguém copiar o link.

Chat do WhatsApp em um celular mostrando a mensagem de convite do grupo que o pagador pode tocar para entrar.
Experiência do cliente

O pagador recebe o convite sem esperar

Antes da automação, alguém copia o link do grupo ou corre atrás do pagador depois do checkout, e quem já pagou fica parado sem saber se tem acesso.

Depois que o pagamento é confirmado, o convite do grupo aparece no chat de WhatsApp do pagador para ele abrir e entrar quando quiser. Integradores constroem esse resultado com a WhatsApp API.

Fluxo

Do pagamento confirmado ao convite do grupo

1

Pagamento confirmado

Seu webhook de pagamento passa ao backend o número de WhatsApp do pagador e o produto ou plano comprado.

2

Resolva o grupo pago

GET /groups

Associe a compra ao grupo certo no WhatsApp. Se o id ainda não estiver salvo, getGroups devolve a lista que você compara.

3

Obtenha o código de convite

GET /groups/{GroupID}/invite

getGroupInvite lê o código de convite do grupo que você acabou de resolver.

4

Envie o convite ao pagador

POST /groups/link/{InviteCode}

sendGroupInvite entrega esse convite ao número de WhatsApp do pagador vindo do evento de pagamento. O pagador entra ao abrir o link.

Precisa acompanhar a entrega? Acompanhe o que acontece depois do envio com webhooks de status. A resposta do envio só confirma que a requisição foi aceita. Saiba mais sobre o status de entrega →

Pré-requisitos

Antes de executar o fluxo

Conecte o número de WhatsApp que vai enviar o convite e autentique cada requisição com o token de API desse número. Seu webhook de pagamento fica no seu stack. A Whapi.Cloud executa as chamadas do convite do grupo.

Opcional: aprofunde este fluxo

Implementação da API

As três chamadas em ordem

Resolva o grupo pago, busque o código de convite e entregue o convite ao pagador. Mapeie o telefone do pagador do payload de pagamento para o campo to do corpo de envio.

Obtenha seu token de API grátis depois de se registrar no whapi.cloud e use esse token no código no lugar de Your_Token dos exemplos.

Resolva o grupo pago

Encontre o grupo do WhatsApp que corresponde ao produto comprado quando esse id de grupo ainda não está salvo.

curl --request GET \
     --url https://gate.whapi.cloud/groups \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/groups",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import requests

url = "https://gate.whapi.cloud/groups"

headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
}

response = requests.get(url, headers=headers)

print(response.text)
const url = 'https://gate.whapi.cloud/groups';

const response = await fetch(url, {
  method: 'GET',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
  },
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/groups")
  .get()
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://gate.whapi.cloud/groups", nil)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}

Obtenha o código de convite

Leia o código de convite do grupo que você resolveu.

curl --request GET \
     --url https://gate.whapi.cloud/groups/{GroupID}/invite \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/groups/{GroupID}/invite",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import requests

url = "https://gate.whapi.cloud/groups/{GroupID}/invite"

headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
}

response = requests.get(url, headers=headers)

print(response.text)
const url = 'https://gate.whapi.cloud/groups/{GroupID}/invite';

const response = await fetch(url, {
  method: 'GET',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
  },
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/groups/{GroupID}/invite")
  .get()
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/groups/{GroupID}/invite");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://gate.whapi.cloud/groups/{GroupID}/invite", nil)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}

Envie o convite ao pagador

Entregue esse convite ao número de telefone do evento de pagamento.

curl --request POST \
     --url https://gate.whapi.cloud/groups/link/{InviteCode} \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "to": "447123456789"
}
'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/groups/link/{InviteCode}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":\"447123456789\"}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import requests

url = "https://gate.whapi.cloud/groups/link/{InviteCode}"

payload = {
  "to": "447123456789"
}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const url = 'https://gate.whapi.cloud/groups/link/{InviteCode}';

const response = await fetch(url, {
  method: 'POST',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
  "to": "447123456789"
}),
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"447123456789\"}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/groups/link/{InviteCode}")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/groups/link/{InviteCode}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddHeader("content-type", "application/json");
request.AddJsonBody(new { to = "447123456789" });
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	body := []byte(`{"to":"447123456789"}`)
	req, _ := http.NewRequest("POST", "https://gate.whapi.cloud/groups/link/{InviteCode}", bytes.NewReader(body))
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")
	req.Header.Set("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
Entrega

Status depois da resposta de envio

Uma resposta de envio bem-sucedida não significa que o pagador já tem o convite. O primeiro status visível antes de um webhook é pending. Mudanças posteriores chegam só em statuses.post e statuses.put. Se o status ficar em pending e não passar para sent, delivered ou um ack posterior, a mensagem não foi entregue. Confira o payload e se a conta pode enviar esse tipo de mensagem.

  • A chamada de envio é aceita quando a resposta inclui sent.

  • Novos acks chegam em statuses.post e statuses.put, não como campos extras da resposta de envio.

O que ler sobre entrega e webhooks

Fale com o suporte se algo deu errado
Quando algo quebra

Trate as falhas em cada passo

O pagamento pode ser confirmado e a cadeia do convite ainda quebrar, quando o grupo pago não está na lista, o código de convite não pode ser lido ou sendGroupInvite falha. Trate a quebra nesse passo para o pagador ainda receber o link.

O pagamento foi confirmado, mas o convite falhou?

Separe o estado do pagamento da entrega do convite. Tente de novo o passo que falhou ou avise sua equipe para o pagador receber o link. Não mande o cliente passar pelo checkout de novo. Clientes costumam dizer que nosso suporte responde. Não hesite em pedir ajuda.

Fale com o suporte se algo deu errado

Investigue por passo da API

Status What it means What to do
400 Wrong request parameters
500 Internal Error
Status What it means What to do
400 Wrong request parameters
401 Need channel authorization for create invite link
403 You do not have permissions for this action
404 Specified group not found
429 Too many requests
500 Internal Error
Status What it means What to do
400 Wrong request parameters
401 Need channel authorization for this action
402 Trial version limit exceeded
404 Specified group not found
429 Too many requests
500 Internal Error
FAQ

Perguntas que operadores fazem

Se o GroupID do grupo pago já estiver salvo, você pode pular getGroups e começar em getGroupInvite. Você ainda precisa do código de convite antes de sendGroupInvite.
Mapeie o telefone do pagador do payload do seu webhook de pagamento para o campo to de sendGroupInvite. A Whapi.Cloud não lê o seu sistema de cobrança.
O envio entrega um link de convite no chat. O pagador entra quando abre o link.
Tente de novo o passo do convite que falhou ou avise sua equipe. Não deixe o pagador esperando e não peça para ele pagar de novo.
Resolver um grupo, buscar um convite e enviar esse link é um motivo central para escolher um gateway com recursos completos quando o produto é acesso a uma comunidade.
Recursos compatíveis do WhatsApp

Tudo o que você precisa para criar automações no WhatsApp

O Whapi.Cloud oferece acesso a um conjunto completo de recursos do WhatsApp — mensagens, mídia, grupos, canais, webhooks e muito mais. Crie bots, automações e integrações sem limitações de funcionalidades.

Escolhido por desenvolvedores

Confiado por mais de 3.300 desenvolvedores e equipes SaaS

Desenvolvedores no mundo inteiro utilizam o Whapi.Cloud para criar automações, bots, integrações com CRM, ferramentas de envio em massa e fluxos avançados de WhatsApp. Nossa infraestrutura processa milhões de requisições API com alta estabilidade — e esse número cresce a cada mês.

Ícone de recurso

5,5K+

canais de API ativos

Ícone de recurso

21M+

requisições API por mês

“Tudo é simples, intuitivo e fácil de navegar. A documentação é clara e todas as informações estão bem à mão. Trabalho excelente.”

Roberto K. / Desenvolvedor Web

“Conectamos o WhatsApp aos nossos fluxos usando o n8n em apenas alguns minutos. Sem código, sem complicações — funcionou de primeira.”

Martin P. / Desenvolvedor

“O Whapi.Cloud se tornou uma parte essencial da nossa comunicação com clientes. Automatizamos atualizações de produtos, notificações de pedidos e mensagens de suporte — tudo sem templates nem aprovações da Meta.”

Oscar T. / CTO

Balão decorativo