Uau! Construiți-vă integrarea WhatsApp. Începeți gratuit. Înregistrați-vă acum
WhatsApp API

Plata a reușit: trimite invitația în grup

Oferă clienților care au plătit un drum direct de la checkout la grupul tău privat de WhatsApp. După confirmarea plății, backend-ul poate prelua invitația și o poate livra automat plătitorului prin Whapi.Cloud. Acest caz de utilizare arată integratorilor cum să implementeze fluxul cu WhatsApp API.

Pornit de webhook-ul tău de plată Invitația ajunge pe WhatsApp-ul plătitorului
Confirmarea checkout-ului lângă o invitație de grup WhatsApp gata de deschis de plătitor.
Bulă decorativă
Caz de utilizare

Când să folosești acest flux

Vinzi acces la un grup privat WhatsApp

Produsul plătit este un loc într-un grup privat WhatsApp, iar intrarea este linkul de invitație al acelui grup.

Grupul țintă este rezolvat dinamic

Backend-ul alege ce grup WhatsApp corespunde produsului sau nivelului cumpărat.

Invitația trebuie trimisă automat

Plătitorul trebuie să primească invitația fără ca cineva să copieze linkul.

Chat WhatsApp pe un telefon, cu mesajul de invitație în grup pe care plătitorul îl poate atinge ca să intre.
Experiența clientului

Plătitorul primește invitația fără să aștepte

Înainte de automatizare, cineva copiază linkul grupului sau urmărește plătitorul după checkout, iar cine a plătit deja stă pe loc fără acces clar.

După confirmarea plății, invitația în grup apare în chatul WhatsApp al plătitorului, ca să o deschidă și să intre când vrea. Integratorii construiesc acest rezultat cu WhatsApp API.

Flux

De la plata confirmată la invitația în grup

1

Plată confirmată

Webhook-ul tău de plată trimite backend-ului numărul de WhatsApp al plătitorului și produsul sau nivelul cumpărat.

2

Rezolvă grupul plătit

GET /groups

Potrivește cumpărarea cu grupul WhatsApp corect. Dacă id-ul nu este încă salvat, getGroups întoarce lista cu care compari.

3

Obține codul de invitație

GET /groups/{GroupID}/invite

getGroupInvite citește codul de invitație al grupului pe care tocmai l-ai rezolvat.

4

Trimite invitația plătitorului

POST /groups/link/{InviteCode}

sendGroupInvite livrează invitația către numărul de WhatsApp al plătitorului din evenimentul de plată. Plătitorul intră când deschide linkul.

Vrei urmărirea livrării? Urmărește ce se întâmplă după trimitere cu webhook-uri de status. Răspunsul la trimitere confirmă doar că cererea a fost acceptată. Despre statusul livrării →

Cerințe

Înainte să rulezi fluxul

Conectează numărul de WhatsApp care va trimite invitația și autentifică fiecare cerere cu tokenul API al acelui număr. Webhook-ul de plată rămâne în stack-ul tău. Whapi.Cloud rulează apelurile de invitație în grup.

Opțional: aprofundare pentru acest flux

Implementare API

Cele trei apeluri în ordine

Rezolvă grupul plătit, obține codul de invitație, apoi livrează invitația plătitorului. Mapează telefonul plătitorului din payload-ul de plată pe câmpul to din corpul trimiterii.

Obține tokenul API gratuit după ce te înregistrezi pe whapi.cloud și folosește acel token în cod în loc de Your_Token din exemple.

Rezolvă grupul plătit

Găsește grupul WhatsApp care corespunde produsului cumpărat când id-ul grupului nu este deja salvat.

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))
}

Obține codul de invitație

Citește codul de invitație al grupului pe care l-ai rezolvat.

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))
}

Trimite invitația plătitorului

Livrează invitația către numărul de telefon din evenimentul de plată.

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))
}
Livrare

Status după răspunsul de trimitere

Un răspuns reușit la trimitere nu înseamnă că plătitorul are deja invitația. Primul status vizibil înainte de un webhook este pending. Schimbările ulterioare sosesc doar pe statuses.post și statuses.put. Dacă statusul rămâne pending și nu trece la sent, delivered sau un ack ulterior, mesajul nu a fost livrat. Verifică payload-ul și dacă acel cont poate trimite acest tip de mesaj.

  • Apelul de trimitere este acceptat când răspunsul include sent.

  • Ack-urile ulterioare sosesc pe statuses.post și statuses.put, nu ca câmpuri extra în răspunsul de trimitere.

Ce să citești despre livrare și webhook-uri

Contactează suportul dacă ceva nu a mers
Când ceva se rupe

Tratează eșecurile la fiecare pas

Plata poate reuși, iar lanțul invitației se poate rupe totuși, când grupul plătit lipsește din listă, codul de invitație nu poate fi citit sau sendGroupInvite eșuează. Tratează ruptura la pasul acela ca plătitorul să primească linkul.

Plata a reușit, dar invitația a eșuat?

Ține starea plății separată de livrarea invitației. Reîncearcă pasul eșuat sau alertează echipa ca plătitorul să primească linkul. Nu trimite clientul din nou prin checkout. Clienții spun des că suportul nostru răspunde. Nu ezita să ceri ajutor.

Contactează suportul dacă ceva nu a mers

Depanează pe pas 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

Întrebări pe care le pun operatorii

Dacă GroupID al grupului plătit este deja salvat, poți sări getGroups și să începi de la getGroupInvite. Tot ai nevoie de codul de invitație înainte de sendGroupInvite.
Mapează telefonul plătitorului din payload-ul webhook-ului de plată pe câmpul to din sendGroupInvite. Whapi.Cloud nu citește sistemul tău de facturare.
Trimiterea livrează un link de invitație în chat. Plătitorul intră când deschide linkul.
Reîncearcă pasul de invitație eșuat sau alertează echipa. Nu lăsa plătitorul să aștepte și nu-i cere să plătească din nou.
Rezolvarea unui grup, obținerea unei invitații și trimiterea acelui link sunt un motiv central să alegi un gateway cu funcții complete când produsul este accesul la o comunitate.
Funcționalități WhatsApp suportate

Tot ce ai nevoie pentru a construi automatizări pe WhatsApp

Whapi.Cloud îți oferă acces la un set complet de funcționalități WhatsApp — mesaje, media, grupuri, canale, webhook-uri și altele. Construiește boți, automatizări și integrări fără limitări de funcții.

Ales de dezvoltatori

De încredere pentru peste 3.300 de dezvoltatori și echipe SaaS

Dezvoltatori din întreaga lume se bazează pe Whapi.Cloud pentru a crea automatizări, boți, integrări CRM, instrumente de mesagerie în masă și fluxuri avansate WhatsApp. Infrastructura noastră procesează milioane de cereri API cu o stabilitate ridicată — iar numărul crește în fiecare lună.

Pictogramă funcționalitate

5,5K+

canale API active

Pictogramă funcționalitate

21M+

cereri API pe lună

„Totul este simplu, intuitiv și ușor de folosit. Documentația este clară, iar toate informațiile necesare sunt la îndemână. Foarte bine făcut.”

Roberto K. / Web Developer

„Am conectat WhatsApp la fluxurile noastre în n8n în doar câteva minute. Fără cod, fără complicații — totul a funcționat din prima.”

Martin P. / Developer

„Whapi.Cloud a devenit o parte esențială a comunicării cu clienții. Am automatizat actualizări de produse, notificări de comenzi și mesaje de suport — fără șabloane sau aprobări Meta.”

Oscar T. / CTO

Bulă decorativă