استخدم Callbacks البيع لربط المبيعات من متجرك بالنقرات على الروابط، وتكامل Custom (API) لإرسال بيانات حيّة من أدواتك الخاصة إلى صفحتك.
يقبل LinkHarbor أيضًا بيانات من الخارج. ولحالتين توجد نقاط نهاية مخصّصة بأسرار خاصة بها، فلا تحتاج إلى مفتاح API لهما: تبلّغ Callbacks البيع عن المبيعات من متجرك، فترى في إحصائياتك أي رابط جلب إيرادات. ويجلب تكامل Custom (API) بيانات حيّة من أدواتك الخاصة إلى صفحتك كودجة، ويمكنه إطلاق إشعارات فورية.
Callbacks البيع: ربط المبيعات
كيف يتكامل معرّف النقرة (lt_click_id) والربط والتقارير مشروح في نسب التحويلات والمبيعات؛ وهنا تجد كل الحقول والاستجابات للمطوّرين. باختصار: عندما يعيد LinkHarbor توجيه نقرة محسوبة إلى هدف http أو https، يضيف المعامل lt_click_id؛ فيحتفظ به متجرك ويرسله مرة أخرى بعد الشراء.
إنشاء سر Callback
- افتح «Callback وواجهة API»
- في بطاقة «أسرار Callback» انقر «+ إنشاء سر جديد»
- أعطه اسمًا اختياريًا، مثل Callback المتجر، وانقر «إنشاء السر»
- انسخ السر فورًا، فهو يُعرض مرة واحدة فقط
- من
- المالكون والمسؤولون، ابتداءً من Creator Pro. وفي Creator Free تظهر العبارة «أسرار Callback متاحة ابتداءً من Creator Pro.»
- كم
- حتى 5 أسرار لكل مساحة عمل، مثلًا سر لكل متجر.
- «تعديل»
- غيّر الاسم واضبط الحالة على «نشط» أو «غير نشط». ومع السر غير النشط ترفض الـ API عمليات Callback.
- «↺ تدوير»
- يُنشئ سرًا جديدًا؛ ويتوقف القديم عن العمل فورًا.
- «آخر Callback:»
- يعرض متى استُخدم السر آخر مرة بنجاح.
إرسال 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} | الحقل | مطلوب | المعنى |
|---|---|---|
| click_id | نعم | قيمة lt_click_id (10–36 حرفًا) |
| order_id | نعم | رقم طلبك (1–128 حرفًا)؛ ولا يُحسب كل رقم طلب إلا مرة واحدة لكل مساحة عمل |
| amount | نعم | المبلغ كرقم عشري، مثل "49.90"؛ دون قيم سالبة |
| currency | نعم | العملة كرمز من ثلاثة أحرف، مثل EUR؛ وتحوّل الـ API الأحرف الصغيرة |
| occurred_at | لا | وقت الشراء (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | لا | المبلغ المحوَّل بأصغر وحدة، والعملة الأساسية، وسعر الصرف، إذا كنت تبيع بعدة عملات |
| meta | لا | بياناتك الإضافية الخاصة ككائن مسطّح: حتى 50 مفتاحًا بطول 1–64 حرفًا؛ والقيم نص (حتى 500 حرف) أو رقم أو true/false أو null؛ وتُرفض الكائنات والقوائم المتداخلة |
| workspace_id | لا | معرّف مساحة عملك؛ ومعه تبلّغ الـ API عن click_id غير المعروف بالخطأ 404 بدلًا من 403 |
| الاستجابة | المعنى |
|---|---|
| 200 {"ok":true,"conversion_id":…} | حُفظ البيع، أو كان order_id هذا محفوظًا بالفعل (فيُعاد حينها معرّف التحويل الموجود) |
| 403 forbidden | سر أو توقيع خاطئ، أو click_id غير معروف (دون workspace_id) |
| 403 secret_inactive | السر مضبوط على «غير نشط» |
| 404 not_found | click_id غير معروف (فقط مع workspace_id وسر صالح) |
| 413 request_too_large | الجسم أكبر من 1 MB |
| 422 validation_failed | حقل مفقود أو غير صالح، مثل قيمة في meta طويلة جدًا أو متداخلة |
| 429 rate_limited | أكثر من 120 Callback في الدقيقة من عنوان IP الخاص بك |
توقيع اختياري
إضافة إلى السر، يمكنك إرسال الترويسة X-Callback-Signature. وهي تحتوي على sha256= وتوقيع HMAC-SHA256 للجسم الخام بالنظام الست عشري. والمفتاح ليس السر نفسه، بل تجزئة SHA-256 له بالصيغة الثنائية. وإذا أرسلت الترويسة، فيجب أن تكون صحيحة، وإلا رُفض الـ Callback.
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // binary hash of the secret
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// Headers: X-Callback-Secret and X-Callback-Signature: $sig, body: $body أين ترى المبيعات
تظهر المبيعات المبلَّغ عنها كتحويلات في إحصائياتك، انظر نسب التحويلات والمبيعات. وعبر الـ API تقرؤها بالنطاق read:stats تحت /v1/stats/…/conversions/breakdown.
Custom (API): بياناتك الحيّة الخاصة
مع تكامل Custom (API) يستطيع أي برنامج قادر على إرسال طلبات HTTP، كإضافة لخادم ألعاب أو بوت أو سكربت cron، أن يرسل بيانات إلى LinkHarbor. وتتحول هذه البيانات إلى ودجة حيّة على صفحتك، ويمكن لقواعد الإشعارات الفورية إخطار متابعيك.
الربط
- افتح «التكاملات» في مساحة العمل
- اختر Custom (API) وأدخل اسمًا
- بعد الربط تعرض النافذة «رابط الاستقبال» و«السر» (مع «إظهار السر»)
- احفظ الاثنين في أداتك
التكاملات متاحة ابتداءً من Creator Pro. ولا يرى رابط الاستقبال والسر إلا المالكون والمسؤولون، بما في ذلك لاحقًا في عرض تفاصيل التكامل. والفصل ثم إعادة الربط يُنشئ سرًا جديدًا. وكيفية ربط التكاملات عمومًا مشروحة في ربط التكاملات وتجديدها وفصلها.
إرسال البيانات
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
- اسم حدث حر، مثل player.joined. يُحوَّل إلى أحرف صغيرة، وهو الاسم الذي تتفاعل معه قواعد الإشعارات الفورية. ودون event يُسمّى الحدث state.updated.
- event_id
- مفتاح اختياري يمنع المعالجة المزدوجة. إذا أُرسل event_id نفسه مرة أخرى، يستجيب LinkHarbor بـ duplicate: true ولا يفعل شيئًا.
- data
- قيم للعناصر النائبة في نصوص الإشعارات الفورية، مثل {player}. حتى 40 مفتاحًا، وبقيم بسيطة فقط.
- state
- الحالة الكاملة للودجة. وهي تستبدل الحالة السابقة بالكامل. وقيمة type هي game_server (بطاقة خادم ألعاب) أو status (بطاقة حالة).
بدلًا من Authorization: Bearer يمكنك أيضًا إرسال السر في الترويسة X-LinkHarbor-Secret. ويُسمح بـ 120 استدعاءً في الدقيقة لكل عنوان IP. واختياريًا توقّع الجسم: تحتوي الترويسة X-LinkHarbor-Signature على sha256= وتوقيع HMAC-SHA256 للجسم الخام مع السر مفتاحًا. وإذا أرسلتها، فيجب أن تكون صحيحة.
| الاستجابة | المعنى |
|---|---|
| 200 {"ok":true,…} | حُفظ الحدث، مع duplicate: true عند event_id معروف |
| 400 invalid_json | الجسم ليس كائن JSON |
| 401 invalid_secret | سر خاطئ أو رابط استقبال غير معروف |
| 401 signature_invalid | X-LinkHarbor-Signature لا يطابق الجسم |
| 413 request_too_large | الجسم أكبر من 64 KB |
| 422 validation_failed | لا يوجد event ولا state في الجسم |
| 429 rate_limited | أكثر من 120 استدعاءً في الدقيقة من عنوان IP الخاص بك |
قد يفيدك أيضًا
لم تجد ما تبحث عنه؟
أخبرنا بما تحتاج إليه، وسيساعدك فريق الدعم لدينا شخصيًا.