Wow! WhatsApp entegrasyonunuzu oluşturun. Ücretsiz başlayın. Şimdi Kaydol
WhatsApp API

Ödeme alındı: grup davetini gönderin

Ödeyen kişiye checkout'tan özel WhatsApp grubunuza doğrudan bir yol verin. Ödeme onaylandığında backend daveti alıp ödeyene Whapi.Cloud üzerinden otomatik iletebilir. Bu kullanım senaryosu, entegratörlere akışın WhatsApp API ile nasıl kurulacağını gösterir.

Kendi ödeme webhook'unuz tetikler Davet ödeyenin WhatsApp'ına gelir
Checkout onayı, ödeyenin açabileceği bir WhatsApp grup davetinin yanında.
Dekoratif balon
Kullanım senaryosu

Bu akışı ne zaman kullanın

Özel bir WhatsApp grubuna erişim satıyorsunuz

Ücretli ürün, özel bir WhatsApp grubunda bir yerdir ve giriş o grubun davet bağlantısıdır.

Hedef grup dinamik olarak bulunur

Backend, satın alınan ürüne veya pakete hangi WhatsApp grubunun karşılık geldiğini seçer.

Davet otomatik gönderilmeli

Ödeyen, birinin bağlantıyı kopyalamasına gerek kalmadan daveti almalıdır.

Telefonda, ödeyenin katılmak için dokunabileceği grup daveti mesajını gösteren bir WhatsApp sohbeti.
Müşteri deneyimi

Ödeyen daveti beklemeden alır

Otomasyondan önce biri grup bağlantısını kopyalar ya da checkout sonrası ödeyeni kovalar; ödemiş kişi erişimi net olmadan bekler.

Ödeme onaylandıktan sonra grup daveti, ödeyenin WhatsApp sohbetinde görünür; istediği zaman açıp katılır. Entegratörler bu sonucu WhatsApp API ile kurar.

Akış

Onaylı ödemeden grup davetine

1

Ödeme onaylandı

Ödeme webhook'unuz, ödeyenin WhatsApp numarasını ve satın alınan ürünü veya paketi backend'e iletir.

2

Ücretli grubu bulun

GET /groups

Satın almayı doğru WhatsApp grubuyla eşleştirin. Id henüz kayıtlı değilse getGroups karşılaştıracağınız listeyi döner.

3

Davet kodunu alın

GET /groups/{GroupID}/invite

getGroupInvite, az önce bulduğunuz grubun davet kodunu okur.

4

Daveti ödeyene gönderin

POST /groups/link/{InviteCode}

sendGroupInvite bu daveti ödeme olayındaki WhatsApp numarasına iletir. Ödeyen bağlantıyı açınca gruba katılır.

Teslimatı izlemeniz mi gerekiyor? Gönderimden sonra ne olduğunu durum webhook'larıyla izleyin. Gönderim yanıtı yalnızca isteğin kabul edildiğini doğrular. Teslimat durumu hakkında →

Ön koşullar

Akışı çalıştırmadan önce

Daveti gönderecek WhatsApp numarasını bağlayın ve her isteği o numaranın API token'ı ile doğrulayın. Ödeme webhook'unuz kendi yığınınızda kalır. Whapi.Cloud grup daveti çağrılarını çalıştırır.

İsteğe bağlı: bu akışta derinleşin

API uygulaması

Üç çağrı sırayla

Ücretli grubu bulun, davet kodunu alın, sonra daveti ödeyene iletin. Ödeyenin telefonunu ödeme payload'ından gönderim gövdesindeki to alanına eşleyin.

whapi.cloud'a kaydolduktan sonra API token'ınızı ücretsiz alın ve örneklerdeki Your_Token yerine bu token'ı kodda kullanın.

Ücretli grubu bulun

Grup id'si henüz kayıtlı değilken ödeyenin aldığı ürüne uyan WhatsApp grubunu bulun.

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

Davet kodunu alın

Bulduğunuz grubun davet kodunu okuyun.

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

Daveti ödeyene gönderin

Bu daveti ödeme olayındaki telefon numarasına iletin.

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

Gönderim yanıtından sonraki durum

Başarılı bir gönderim yanıtı, ödeyenin daveti aldığı anlamına gelmez. Webhook'tan önce görünen ilk durum pending olur. Sonraki değişiklikler yalnızca statuses.post ve statuses.put ile gelir. Durum pending kalır ve sent, delivered veya sonraki bir ack'e geçmezse mesaj teslim edilmemiştir. Payload'ı ve hesabın bu mesaj türünü gönderip gönderemediğini kontrol edin.

  • Gönderim çağrısı, yanıt sent içerdiğinde kabul edilmiş sayılır.

  • Sonraki ack'ler statuses.post ve statuses.put ile gelir, gönderim yanıtının ek alanları olarak değil.

Teslimat ve webhook hakkında ne okunur

Bir şey ters gittiyse destekle iletişime geçin
Bir şey bozulunca

Hataları her adımda ele alın

Ödeme onaylanabilir ve davet zinciri yine kopabilir: ücretli grup listede yoktur, davet kodu okunamaz veya sendGroupInvite başarısız olur. Kopmayı o adımda ele alın ki ödeyen bağlantıyı alsın.

Ödeme alındı ama davet gitmedi mi?

Ödeme durumunu davet teslimatından ayrı tutun. Başarısız adımı yeniden deneyin veya ekibinizi uyarın ki ödeyen bağlantıyı alsın. Müşteriyi yeniden checkout'tan geçirmeyin. Müşteriler desteğimizin yanıt verdiğini sık söyler. Yardım istemekten çekinmeyin.

Bir şey ters gittiyse destekle iletişime geçin

API adımına göre sorun giderin

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
SSS

Operatörlerin sorduğu sorular

Ücretli grubun GroupID değeri zaten kayıtlıysa getGroups adımını atlayıp getGroupInvite ile başlayabilirsiniz. sendGroupInvite öncesinde davet kodu yine gerekir.
Ödeyenin telefonunu ödeme webhook payload'ınızdan sendGroupInvite içindeki to alanına eşleyin. Whapi.Cloud faturalama sisteminizi okumaz.
Gönderim, sohbete bir davet bağlantısı iletir. Ödeyen bağlantıyı açınca katılır.
Başarısız davet adımını yeniden deneyin veya ekibinizi uyarın. Ödeyeni bekletmeyin ve yeniden ödeme istemeyin.
Bir grubu bulmak, daveti almak ve bu bağlantıyı göndermek, ürün topluluk erişimi olduğunda tam özellikli bir ağ geçidi seçmenin temel nedenidir.
Desteklenen WhatsApp Özellikleri

WhatsApp otomasyonları oluşturmak için ihtiyacınız olan her şey

Whapi.Cloud; mesajlaşma, medya, gruplar, kanallar, webhook’lar ve daha fazlası dahil olmak üzere WhatsApp’ın tüm özelliklerine erişim sağlar. Özellik kısıtlamaları olmadan botlar, otomasyonlar ve entegrasyonlar oluşturun.

Geliştiricilerin tercihi

3.300+ geliştirici ve SaaS ekibi tarafından güveniliyor

Dünya genelindeki geliştiriciler, otomasyonlar, botlar, CRM entegrasyonları, toplu mesaj araçları ve gelişmiş WhatsApp iş akışları oluşturmak için Whapi.Cloud'a güveniyor. Altyapımız her ay yüksek kararlılıkla milyonlarca API isteği işliyor — ve bu sayı giderek artıyor.

Özellik simgesi

5,5K+

aktif API kanalı

Özellik simgesi

21M+

aylık API isteği

“Her şey basit, sezgisel ve kullanımı kolay. Dokümantasyon net ve gerekli tüm bilgiler elimizin altında. Harika iş.”

Roberto K. / Web Geliştirici

“WhatsApp'ı n8n kullanarak iş akışlarımıza sadece birkaç dakikada bağladık. Kod yok, karmaşa yok — her şey ilk denemede çalıştı.”

Martin P. / Geliştirici

“Whapi.Cloud, müşteri iletişimimizin önemli bir parçası haline geldi. Ürün güncellemelerini, sipariş bildirimlerini ve destek mesajlarını Meta şablonlarına veya onaylara ihtiyaç duymadan otomatikleştirdik.”

Oscar T. / CTO

Dekoratif balon