Callbackami sprzedaży przypiszesz sprzedaże z Twojego sklepu do kliknięć w link, a przez „Custom (API)” wyślesz na stronę dane na żywo z własnych narzędzi.
LinkHarbor przyjmuje też dane z zewnątrz. Dla dwóch przypadków istnieją osobne endpointy z własnymi sekretami – nie potrzebujesz do nich klucza API: callbacki sprzedaży zgłaszają sprzedaże z Twojego sklepu, dzięki czemu widzisz w statystykach, który link przyniósł przychód. Integracja „Custom (API)” przenosi dane na żywo z Twoich własnych narzędzi na Twoją stronę jako widżet i może wywoływać powiadomienia push.
Callbacki sprzedaży: przypisywanie sprzedaży
Jak współdziałają ID kliknięcia (lt_click_id), przypisywanie i raportowanie, wyjaśnia artykuł Przypisywanie konwersji i sprzedaży; tutaj znajdziesz wszystkie pola i odpowiedzi dla programistów. W skrócie: gdy LinkHarbor przekierowuje policzone kliknięcie do celu http lub https, dołącza parametr lt_click_id; Twój sklep go zapamiętuje i odsyła po zakupie.
Tworzenie sekretu callbacku
- Otwórz „Callback i API”
- W karcie „Sekrety callbacków” kliknij „+ Utwórz nowy sekret”
- Opcjonalnie nadaj nazwę, na przykład „Callback sklepu”, i kliknij „Utwórz sekret”
- Od razu skopiuj sekret – jest pokazywany tylko raz
- Kto
- Właściciele i admini, od planu Creator Pro. W Creator Free widać komunikat „Sekrety callbacków są dostępne od planu Creator Pro.”
- Ile
- Do 5 sekretów na workspace, na przykład jeden na sklep.
- „Edytuj”
- Zmiana nazwy i ustawienie statusu „Aktywny” lub „Nieaktywny”. Przy nieaktywnym sekrecie API odrzuca callbacki.
- „↺ Zmień”
- Generuje nowy sekret; stary od razu przestaje działać.
- „Ostatni callback:”
- Pokazuje, kiedy sekret był ostatnio użyty z powodzeniem.
Wysyłanie callbacku
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} | Pole | Wymagane | Znaczenie |
|---|---|---|
| click_id | Tak | Wartość lt_click_id (10–36 znaków) |
| order_id | Tak | Twój numer zamówienia (1–128 znaków); każdy numer zamówienia liczy się tylko raz na workspace |
| amount | Tak | Kwota jako liczba dziesiętna, na przykład "49.90"; bez wartości ujemnych |
| currency | Tak | Waluta jako trzyliterowy kod, na przykład EUR; API zamienia małe litery na wielkie |
| occurred_at | Nie | Czas zakupu (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | Nie | Przeliczona kwota w najmniejszej jednostce, waluta bazowa i kurs wymiany, jeśli sprzedajesz w kilku walutach |
| meta | Nie | Twoje własne dodatkowe dane jako płaski obiekt: do 50 kluczy o długości 1–64 znaków; wartości to tekst (do 500 znaków), liczba, true/false lub null; zagnieżdżone obiekty i listy są odrzucane |
| workspace_id | Nie | ID Twojego workspace; z nim API zgłasza nieznane click_id jako 404 zamiast 403 |
| Odpowiedź | Znaczenie |
|---|---|
| 200 {"ok":true,"conversion_id":…} | Sprzedaż zapisana – albo ten order_id był już zapisany (wtedy ID istniejącej konwersji) |
| 403 forbidden | Błędny sekret lub podpis albo nieznane click_id (bez workspace_id) |
| 403 secret_inactive | Sekret ma status „Nieaktywny” |
| 404 not_found | Nieznane click_id (tylko z workspace_id i prawidłowym sekretem) |
| 413 request_too_large | Treść jest większa niż 1 MB |
| 422 validation_failed | Brakuje pola lub jest ono nieprawidłowe, na przykład za długa lub zagnieżdżona wartość w meta |
| 429 rate_limited | Ponad 120 callbacków na minutę z Twojego adresu IP |
Opcjonalny podpis
Oprócz sekretu możesz wysłać nagłówek X-Callback-Signature. Zawiera on sha256= i podpis HMAC-SHA256 surowej treści w hex. Kluczem nie jest sam sekret, lecz jego hash SHA-256 w postaci binarnej. Jeśli wyślesz ten nagłówek, musi być poprawny – w przeciwnym razie callback zostanie odrzucony.
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // binarny hash sekretu
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// Nagłówki: X-Callback-Secret i X-Callback-Signature: $sig, treść: $body Gdzie widać sprzedaże
Zgłoszone sprzedaże pojawiają się jako konwersje w Twoich statystykach, zobacz Przypisywanie konwersji i sprzedaży. Przez API odczytujesz je z read:stats pod /v1/stats/…/conversions/breakdown.
Custom (API): Twoje własne dane na żywo
Dzięki integracji „Custom (API)” każdy program, który potrafi wysyłać żądania HTTP – wtyczka serwera gry, bot, skrypt cron – może wysyłać dane do LinkHarbor. Stają się one widżetem na żywo na Twojej stronie, a reguły push mogą powiadamiać Twoich obserwujących.
Łączenie
- Otwórz „Integracje” w workspace
- Wybierz „Custom (API)” i wpisz nazwę
- Po połączeniu okno pokazuje „URL ingest” i „Secret” (z opcją „Pokaż secret”)
- Zapisz obie wartości w swoim narzędziu
Integracje są dostępne od planu Creator Pro. URL ingest i sekret widzą tylko właściciele i admini, także później w widoku szczegółów integracji. Rozłączenie i ponowne połączenie tworzy nowy sekret. Jak ogólnie łączyć integracje, wyjaśnia artykuł Łączenie integracji.
Wysyłanie danych
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
- Dowolna nazwa zdarzenia, na przykład player.joined. Jest zamieniana na małe litery i to na nią reagują reguły push. Bez event zdarzenie nazywa się state.updated.
- event_id
- Opcjonalny klucz, który zapobiega podwójnemu przetworzeniu. Jeśli ten sam event_id zostanie wysłany ponownie, LinkHarbor odpowiada duplicate: true i nic nie robi.
- data
- Wartości dla symboli zastępczych w tekstach push, na przykład {player}. Do 40 kluczy, tylko proste wartości.
- state
- Pełny stan widżetu. Całkowicie zastępuje poprzedni. type to game_server (karta serwera gry) lub status (karta statusu).
Zamiast Authorization: Bearer możesz też wysłać sekret w nagłówku X-LinkHarbor-Secret. Z jednego adresu IP dozwolonych jest 120 wywołań na minutę. Opcjonalnie podpisujesz treść: nagłówek X-LinkHarbor-Signature zawiera sha256= i podpis HMAC-SHA256 surowej treści z sekretem jako kluczem. Jeśli go wyślesz, musi być poprawny.
| Odpowiedź | Znaczenie |
|---|---|
| 200 {"ok":true,…} | Zdarzenie zapisane, z duplicate: true dla znanego event_id |
| 400 invalid_json | Treść nie jest obiektem JSON |
| 401 invalid_secret | Błędny sekret lub nieznany URL ingest |
| 401 signature_invalid | X-LinkHarbor-Signature nie pasuje do treści |
| 413 request_too_large | Treść jest większa niż 64 KB |
| 422 validation_failed | W treści nie ma ani event, ani state |
| 429 rate_limited | Ponad 120 wywołań na minutę z Twojego adresu IP |
Może Ci się też przydać
Nic nie znaleziono?
Napisz, czego potrzebujesz, a nasz zespół pomocy technicznej pomoże Ci osobiście.