Gunakan sale callback untuk mencocokkan penjualan toko Anda dengan klik tautan, dan “Custom (API)” untuk mengirim data langsung dari tool Anda ke halaman.
LinkHarbor juga menerima data dari luar. Untuk dua kasus ada endpoint khusus dengan secret sendiri – Anda tidak memerlukan kunci API untuk itu: sale callback melaporkan penjualan dari toko Anda, sehingga Anda bisa melihat di statistik tautan mana yang menghasilkan pendapatan. Integrasi “Custom (API)” membawa data langsung dari tool Anda sendiri ke halaman Anda sebagai widget dan bisa memicu notifikasi push.
Sale callback: mencocokkan penjualan
Bagaimana ID klik (lt_click_id), pencocokan, dan pelaporan saling berkaitan dijelaskan di Mengaitkan konversi dan penjualan; di sini Anda menemukan semua kolom dan respons untuk developer. Singkatnya: saat LinkHarbor mengalihkan klik yang dihitung ke tujuan http atau https, LinkHarbor menambahkan parameter lt_click_id; toko Anda mengingatnya dan mengirimkannya kembali setelah pembelian.
Membuat rahasia callback
- Buka “Callback & API”
- Di kartu “Rahasia callback”, klik “+ Buat rahasia baru”
- Jika mau, beri nama, misalnya “Callback toko”, lalu klik “Buat rahasia”
- Segera salin rahasianya – rahasia hanya ditampilkan sekali
- Siapa
- Pemilik dan admin, mulai Creator Pro. Di Creator Free tertulis “Rahasia callback tersedia mulai dari Creator Pro.”
- Berapa banyak
- Hingga 5 rahasia per workspace, misalnya satu per toko.
- “Edit”
- Mengubah nama dan menyetel status ke “Aktif” atau “Nonaktif”. Dengan rahasia yang nonaktif, API menolak callback.
- “↺ Rotasi”
- Membuat rahasia baru; yang lama langsung berhenti berfungsi.
- “Callback terakhir:”
- Menunjukkan kapan rahasia terakhir berhasil dipakai.
Mengirim callback
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} | Kolom | Wajib | Arti |
|---|---|---|
| click_id | Ya | Nilai lt_click_id (10–36 karakter) |
| order_id | Ya | Nomor pesanan Anda (1–128 karakter); setiap nomor pesanan hanya dihitung sekali per workspace |
| amount | Ya | Jumlah sebagai angka desimal, misalnya "49.90"; tanpa nilai negatif |
| currency | Ya | Mata uang sebagai kode tiga huruf, misalnya EUR; API mengonversi huruf kecil |
| occurred_at | Tidak | Waktu pembelian (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | Tidak | Jumlah yang dikonversi dalam satuan terkecil, mata uang dasar, dan kurs, jika Anda menjual dalam beberapa mata uang |
| meta | Tidak | Data tambahan Anda sendiri sebagai objek datar: hingga 50 kunci dengan 1–64 karakter; nilainya berupa teks (hingga 500 karakter), angka, true/false, atau null; objek dan daftar bersarang ditolak |
| workspace_id | Tidak | ID workspace Anda; dengan ini, API melaporkan click_id yang tidak dikenal sebagai 404, bukan 403 |
| Respons | Arti |
|---|---|
| 200 {"ok":true,"conversion_id":…} | Penjualan tersimpan – atau order_id ini sudah tersimpan sebelumnya (lalu ID konversi yang sudah ada) |
| 403 forbidden | Secret atau tanda tangan salah, atau click_id tidak dikenal (tanpa workspace_id) |
| 403 secret_inactive | Rahasia disetel ke “Nonaktif” |
| 404 not_found | click_id tidak dikenal (hanya dengan workspace_id dan secret yang valid) |
| 413 request_too_large | Body lebih besar dari 1 MB |
| 422 validation_failed | Sebuah kolom tidak ada atau tidak valid, misalnya nilai di meta yang terlalu panjang atau bersarang |
| 429 rate_limited | Lebih dari 120 callback per menit dari alamat IP Anda |
Tanda tangan opsional
Selain secret, Anda bisa mengirim header X-Callback-Signature. Header ini berisi sha256= dan tanda tangan HMAC-SHA256 dari body mentah dalam hex. Kuncinya bukan secret itu sendiri, melainkan hash SHA-256-nya dalam bentuk biner. Jika Anda mengirim header ini, isinya harus benar – jika tidak, callback ditolak.
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // hash biner dari secret
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// Header: X-Callback-Secret dan X-Callback-Signature: $sig, body: $body Tempat Anda melihat penjualan
Penjualan yang dilaporkan muncul sebagai konversi di statistik Anda, lihat Mengaitkan konversi dan penjualan. Lewat API, Anda membacanya dengan read:stats di /v1/stats/…/conversions/breakdown.
Custom (API): data langsung Anda sendiri
Dengan integrasi “Custom (API)”, program apa pun yang bisa mengirim permintaan HTTP – plugin server game, bot, skrip cron – bisa mengirim data ke LinkHarbor. Data itu menjadi widget langsung di halaman Anda, dan aturan push bisa memberi tahu pengikut Anda.
Menghubungkan
- Buka “Integrasi” di workspace
- Pilih “Custom (API)” dan masukkan nama
- Setelah terhubung, dialog menampilkan “URL ingest” dan “Secret” (dengan “Tampilkan secret”)
- Simpan keduanya di tool Anda
Integrasi tersedia mulai Creator Pro. Hanya pemilik dan admin yang bisa melihat URL ingest dan secret, termasuk nanti di tampilan detail integrasi. Memutus dan menghubungkan ulang membuat secret baru. Cara menghubungkan integrasi secara umum dijelaskan di Menghubungkan integrasi.
Mengirim data
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
- Nama event bebas, misalnya player.joined. Nama ini diubah menjadi huruf kecil dan merupakan nama yang ditanggapi aturan push. Tanpa event, event-nya bernama state.updated.
- event_id
- Kunci opsional yang mencegah pemrosesan ganda. Jika event_id yang sama dikirim lagi, LinkHarbor merespons dengan duplicate: true dan tidak melakukan apa pun.
- data
- Nilai untuk placeholder di teks push, misalnya {player}. Hingga 40 kunci, hanya nilai sederhana.
- state
- Status lengkap widget. Status ini sepenuhnya menggantikan yang sebelumnya. type bernilai game_server (kartu server game) atau status (kartu status).
Alih-alih Authorization: Bearer, Anda juga bisa mengirim secret di header X-LinkHarbor-Secret. 120 panggilan per menit diizinkan per alamat IP. Jika mau, Anda menandatangani body: header X-LinkHarbor-Signature berisi sha256= dan tanda tangan HMAC-SHA256 dari body mentah dengan secret sebagai kunci. Jika Anda mengirimnya, isinya harus benar.
| Respons | Arti |
|---|---|
| 200 {"ok":true,…} | Event tersimpan, dengan duplicate: true untuk event_id yang sudah dikenal |
| 400 invalid_json | Body bukan objek JSON |
| 401 invalid_secret | Secret salah atau URL ingest tidak dikenal |
| 401 signature_invalid | X-LinkHarbor-Signature tidak cocok dengan body |
| 413 request_too_large | Body lebih besar dari 64 KB |
| 422 validation_failed | Tidak ada event maupun state di body |
| 429 rate_limited | Lebih dari 120 panggilan per menit dari alamat IP Anda |
Mungkin ini juga berguna
Tidak menemukan jawabannya?
Beri tahu kami apa yang Anda perlukan, dan tim dukungan kami akan membantu Anda secara langsung.