Mağazandaki satışları bağlantı tıklamalarıyla eşleştirmek için satış callback’lerini, kendi araçlarından canlı veri göndermek için “Custom (API)” kullan.
LinkHarbor dışarıdan da veri kabul eder. İki durum için kendi gizli anahtarlarına sahip özel uç noktalar vardır – bunlar için bir API anahtarına ihtiyacın yok: satış callback’leri mağazandaki satışları bildirir, böylece istatistiklerinde hangi bağlantının gelir getirdiğini görebilirsin. “Custom (API)” entegrasyonu kendi araçlarından canlı verileri bir widget olarak sayfana getirir ve anlık bildirimleri tetikleyebilir.
Satış callback’leri: satışları eşleştirme
Tıklama kimliğinin (lt_click_id), eşleştirmenin ve raporlamanın nasıl bir araya geldiği Dönüşümleri ve satışları ilişkilendirme bölümünde anlatılıyor; burada geliştiriciler için tüm alanları ve yanıtları bulursun. Kısaca: LinkHarbor sayılan bir tıklamayı bir http veya https hedefine yönlendirdiğinde lt_click_id parametresini ekler; mağazan onu hatırlar ve satın almadan sonra geri gönderir.
Callback gizli anahtarı oluştur
- “Callback ve API”yi aç
- “Callback gizli anahtarları” kartında “+ Yeni gizli anahtar oluştur”a tıkla
- İstersen ona bir ad ver, örneğin “Mağaza callback’i”, ve “Gizli anahtar oluştur”a tıkla
- Gizli anahtarı hemen kopyala – yalnızca bir kez gösterilir
- Kim
- Sahipler ve yöneticiler, Creator Pro’dan itibaren. Creator Free’de “Callback gizli anahtarları Creator Pro’dan itibaren kullanılabilir.” yazar.
- Kaç tane
- Çalışma alanı başına en fazla 5 gizli anahtar, örneğin mağaza başına bir tane.
- “Düzenle”
- Adı değiştir ve durumu “Aktif” veya “Pasif” olarak ayarla. Pasif bir gizli anahtarla API callback’leri reddeder.
- “↺ Yenile”
- Yeni bir gizli anahtar oluşturur; eskisi hemen çalışmayı bırakır.
- “Son callback:”
- Gizli anahtarın en son ne zaman başarıyla kullanıldığını gösterir.
Bir callback gönder
curl -X POST https://dock.at-harbor.com/v1/callbacks/sale \
-H "Content-Type: application/json" \
-H "X-Callback-Secret: $LH_CALLBACK_SECRET" \
-d '{
"click_id": "3f1c2a9e-8d4b-4a51-9f0e-6b7c1d2e3f40",
"order_id": "A-10023",
"amount": "49.90",
"currency": "EUR",
"occurred_at": "2026-11-01T10:15:00Z"
}'
# → {"ok":true,"conversion_id":123} | Alan | Zorunlu | Anlamı |
|---|---|---|
| click_id | Evet | lt_click_id’nin değeri (10–36 karakter) |
| order_id | Evet | Sipariş numaran (1–128 karakter); her sipariş numarası çalışma alanı başına yalnızca bir kez sayılır |
| amount | Evet | Ondalık sayı olarak tutar, örneğin "49.90"; negatif değer yok |
| currency | Evet | Üç harfli kod olarak para birimi, örneğin EUR; API küçük harfleri dönüştürür |
| occurred_at | Hayır | Satın alma zamanı (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | Hayır | Birden fazla para biriminde satış yapıyorsan en küçük birimde dönüştürülmüş tutar, temel para birimi ve döviz kuru |
| meta | Hayır | Düz bir nesne olarak kendi ek verilerin: 1–64 karakterlik en fazla 50 anahtar; değerler metin (en fazla 500 karakter), sayı, true/false veya null; iç içe nesneler ve listeler reddedilir |
| workspace_id | Hayır | Çalışma alanı kimliğin; bununla API bilinmeyen bir click_id’yi 403 yerine 404 olarak bildirir |
| Yanıt | Anlamı |
|---|---|
| 200 {"ok":true,"conversion_id":…} | Satış kaydedildi – ya da bu order_id zaten kaydedilmişti (o zaman mevcut dönüşümün kimliği) |
| 403 forbidden | Yanlış gizli anahtar veya imza ya da bilinmeyen click_id (workspace_id olmadan) |
| 403 secret_inactive | Gizli anahtar “Pasif” olarak ayarlı |
| 404 not_found | Bilinmeyen click_id (yalnızca workspace_id ve geçerli bir gizli anahtarla) |
| 413 request_too_large | Gövde 1 MB’tan büyük |
| 422 validation_failed | Bir alan eksik veya geçersiz, örneğin meta içinde çok uzun veya iç içe bir değer |
| 429 rate_limited | IP adresinden dakikada 120’den fazla callback |
İsteğe bağlı imza
Gizli anahtara ek olarak X-Callback-Signature başlığını gönderebilirsin. sha256= ve ham gövdenin hex olarak HMAC-SHA256 imzasını içerir. Anahtar gizli anahtarın kendisi değil, ikili biçimdeki SHA-256 hash’idir. Başlığı gönderirsen doğru olmalıdır – aksi halde callback reddedilir.
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // gizli anahtarın ikili hash’i
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// Başlıklar: X-Callback-Secret ve X-Callback-Signature: $sig, gövde: $body Satışları nerede görürsün
Bildirilen satışlar istatistiklerinde dönüşüm olarak görünür, bkz. Dönüşümleri ve satışları ilişkilendirme. API üzerinden bunları read:stats ile /v1/stats/…/conversions/breakdown altında okursun.
Custom (API): kendi canlı verilerin
“Custom (API)” entegrasyonuyla HTTP isteği gönderebilen her program – bir oyun sunucusu eklentisi, bir bot, bir cron betiği – LinkHarbor’a veri gönderebilir. Bu veriler sayfanda canlı bir widget’a dönüşür ve bildirim kuralları takipçilerini bilgilendirebilir.
Bağla
- Çalışma alanında “Entegrasyonlar”ı aç
- “Custom (API)”yi seç ve bir ad gir
- Bağlandıktan sonra pencere “Ingest URL'si”ni ve “Gizli anahtar”ı (“Gizli anahtarı göster” ile) gösterir
- İkisini de aracında sakla
Entegrasyonlar Creator Pro’dan itibaren kullanılabilir. Ingest URL’sini ve gizli anahtarı, daha sonra entegrasyonun ayrıntı görünümünde de dahil, yalnızca sahipler ve yöneticiler görebilir. Bağlantıyı kesip yeniden bağlamak yeni bir gizli anahtar oluşturur. Entegrasyonların genel olarak nasıl bağlandığı Bir entegrasyon bağla bölümünde anlatılıyor.
Veri gönder
curl -X POST "$INGEST_URL" \
-H "Authorization: Bearer $INGEST_SECRET" \
-H "Content-Type: application/json" \
-d '{
"event": "player.joined",
"event_id": "join-2026-11-01T20:01:02Z-steve",
"data": { "player": "Steve" },
"state": {
"type": "game_server",
"name": "Survival SMP",
"online": true,
"players_online": 3,
"players_max": 20
}
}'
# → {"ok":true,"event_id":4711,"duplicate":false,"event_type":"player.joined"} - event
- Serbest olay adı, örneğin player.joined. Küçük harfe dönüştürülür ve bildirim kurallarının tepki verdiği addır. event olmadan olayın adı state.updated olur.
- event_id
- Çift işlemeyi önleyen isteğe bağlı anahtar. Aynı event_id yeniden gönderilirse LinkHarbor duplicate: true ile yanıt verir ve hiçbir şey yapmaz.
- data
- Bildirim metinlerindeki yer tutucular için değerler, örneğin {player}. En fazla 40 anahtar, yalnızca basit değerler.
- state
- Widget’ın tam durumu. Öncekinin tamamen yerini alır. type game_server (oyun sunucusu kartı) veya status (durum kartı) olur.
Authorization: Bearer yerine gizli anahtarı X-LinkHarbor-Secret başlığında da gönderebilirsin. IP adresi başına dakikada 120 çağrıya izin verilir. İsteğe bağlı olarak gövdeyi imzalarsın: X-LinkHarbor-Signature başlığı sha256= ve anahtar olarak gizli anahtarla ham gövdenin HMAC-SHA256 imzasını içerir. Gönderirsen doğru olmalıdır.
| Yanıt | Anlamı |
|---|---|
| 200 {"ok":true,…} | Olay kaydedildi, bilinen bir event_id için duplicate: true ile |
| 400 invalid_json | Gövde bir JSON nesnesi değil |
| 401 invalid_secret | Yanlış gizli anahtar veya bilinmeyen ingest URL’si |
| 401 signature_invalid | X-LinkHarbor-Signature gövdeyle eşleşmiyor |
| 413 request_too_large | Gövde 64 KB’tan büyük |
| 422 validation_failed | Gövdede ne event ne de state var |
| 429 rate_limited | IP adresinden dakikada 120’den fazla çağrı |
Bunlar da işine yarayabilir
Bir şey bulamadın mı?
Neye ihtiyacın olduğunu bize anlat, destek ekibimiz sana kişisel olarak yardımcı olsun.