সেল কলব্যাক দিয়ে শপের বিক্রি লিংক ক্লিকের সাথে মেলান, আর “Custom (API)” দিয়ে নিজের টুলের লাইভ ডেটা আপনার পেজে পাঠান।
LinkHarbor বাইরে থেকেও ডেটা নেয়। দুটি ক্ষেত্রের জন্য নিজস্ব সিক্রেটসহ আলাদা এন্ডপয়েন্ট আছে – এগুলোর জন্য API কী লাগে না: সেল কলব্যাক আপনার শপ থেকে বিক্রির খবর দেয়, যাতে পরিসংখ্যানে দেখতে পান কোন লিংক আয় এনেছে। “Custom (API)” ইন্টিগ্রেশন আপনার নিজের টুলের লাইভ ডেটা উইজেট হিসেবে আপনার পেজে আনে এবং পুশ নোটিফিকেশন চালু করতে পারে।
সেল কলব্যাক: বিক্রি মেলানো
ক্লিক আইডি (lt_click_id), মেলানো আর রিপোর্টিং কীভাবে একসাথে কাজ করে তা ব্যাখ্যা করা আছে কনভার্সন ও বিক্রি যুক্ত করা-এ; এখানে ডেভেলপারদের জন্য সব ফিল্ড আর রেসপন্স পাবেন। সংক্ষেপে: LinkHarbor যখন গোনা একটি ক্লিককে http বা https টার্গেটে রিডাইরেক্ট করে, তখন lt_click_id প্যারামিটার যোগ করে; আপনার শপ এটি মনে রাখে এবং কেনাকাটার পর ফেরত পাঠায়।
কলব্যাক সিক্রেট তৈরি করুন
- “কলব্যাক ও API” খুলুন
- “কলব্যাক সিক্রেট” কার্ডে “+ নতুন সিক্রেট তৈরি করুন”-এ ক্লিক করুন
- চাইলে একটি নাম দিন, যেমন “শপ কলব্যাক”, তারপর “সিক্রেট তৈরি করুন”-এ ক্লিক করুন
- সিক্রেটটি সাথে সাথে কপি করুন – এটি শুধু একবারই দেখানো হয়
- কে
- মালিক আর অ্যাডমিন, Creator Pro থেকে। Creator Free-তে লেখা থাকে “কলব্যাক সিক্রেট Creator Pro থেকে পাওয়া যায়।”
- কতগুলো
- প্রতি ওয়ার্কস্পেসে সর্বোচ্চ ৫টি সিক্রেট, যেমন প্রতিটি শপের জন্য একটি।
- “সম্পাদনা করুন”
- নাম বদলান আর স্ট্যাটাস “সক্রিয়” বা “নিষ্ক্রিয়” করুন। সিক্রেট নিষ্ক্রিয় থাকলে API কলব্যাক প্রত্যাখ্যান করে।
- “↺ রোটেট করুন”
- একটি নতুন সিক্রেট তৈরি করে; পুরোনোটি সাথে সাথে কাজ করা বন্ধ করে।
- “সর্বশেষ কলব্যাক:”
- সিক্রেটটি শেষবার কখন সফলভাবে ব্যবহার হয়েছে তা দেখায়।
কলব্যাক পাঠান
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-এর মান (১০–৩৬ অক্ষর) |
| order_id | হ্যাঁ | আপনার অর্ডার নম্বর (১–১২৮ অক্ষর); প্রতিটি অর্ডার নম্বর প্রতি ওয়ার্কস্পেসে শুধু একবার গোনা হয় |
| amount | হ্যাঁ | দশমিক সংখ্যা হিসেবে পরিমাণ, যেমন "49.90"; ঋণাত্মক মান চলবে না |
| currency | হ্যাঁ | তিন অক্ষরের কোড হিসেবে মুদ্রা, যেমন EUR; ছোট হাতের অক্ষর API নিজেই বদলে নেয় |
| occurred_at | না | কেনাকাটার সময় (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | না | একাধিক মুদ্রায় বিক্রি করলে সবচেয়ে ছোট এককে রূপান্তরিত পরিমাণ, মূল মুদ্রা আর বিনিময় হার |
| meta | না | ফ্ল্যাট অবজেক্ট হিসেবে আপনার নিজের অতিরিক্ত ডেটা: ১–৬৪ অক্ষরের সর্বোচ্চ ৫০টি কী; মান হতে পারে টেক্সট (সর্বোচ্চ ৫০০ অক্ষর), সংখ্যা, true/false বা null; নেস্টেড অবজেক্ট আর তালিকা প্রত্যাখ্যাত হয় |
| workspace_id | না | আপনার ওয়ার্কস্পেস আইডি; এটি দিলে API অজানা click_id-কে 403-এর বদলে 404 হিসেবে জানায় |
| রেসপন্স | অর্থ |
|---|---|
| 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 | বডি ১ MB-এর চেয়ে বড় |
| 422 validation_failed | কোনো ফিল্ড নেই বা অবৈধ, যেমন meta-তে খুব লম্বা বা নেস্টেড কোনো মান |
| 429 rate_limited | আপনার IP ঠিকানা থেকে মিনিটে ১২০টির বেশি কলব্যাক |
ঐচ্ছিক সিগনেচার
সিক্রেটের পাশাপাশি আপনি X-Callback-Signature হেডার পাঠাতে পারেন। এতে থাকে sha256= আর hex-এ কাঁচা বডির HMAC-SHA256 সিগনেচার। কী হিসেবে সিক্রেট নিজে নয়, বরং বাইনারি আকারে তার SHA-256 হ্যাশ ব্যবহার হয়। হেডার পাঠালে তা অবশ্যই সঠিক হতে হবে – নইলে কলব্যাক প্রত্যাখ্যাত হয়।
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // সিক্রেটের বাইনারি হ্যাশ
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// হেডার: X-Callback-Secret আর X-Callback-Signature: $sig, বডি: $body বিক্রি কোথায় দেখবেন
রিপোর্ট করা বিক্রি আপনার পরিসংখ্যানে কনভার্সন হিসেবে দেখা যায়, দেখুন কনভার্সন ও বিক্রি যুক্ত করা। API দিয়ে এগুলো পড়েন read:stats দিয়ে, /v1/stats/…/conversions/breakdown-এর অধীনে।
Custom (API): আপনার নিজের লাইভ ডেটা
“Custom (API)” ইন্টিগ্রেশনের মাধ্যমে HTTP রিকোয়েস্ট পাঠাতে পারে এমন যেকোনো প্রোগ্রাম – গেম সার্ভারের প্লাগইন, বট, ক্রন স্ক্রিপ্ট – LinkHarbor-এ ডেটা পাঠাতে পারে। তা আপনার পেজে একটি লাইভ উইজেট হয়ে যায়, আর পুশ রুল আপনার ফলোয়ারদের জানাতে পারে।
সংযুক্ত করুন
- ওয়ার্কস্পেসে “ইন্টিগ্রেশন” খুলুন
- “Custom (API)” বেছে নিয়ে একটি নাম দিন
- সংযুক্ত হলে ডায়ালগে “Ingest URL” আর “সিক্রেট” দেখা যায় (“সিক্রেট দেখান” সহ)
- দুটোই আপনার টুলে সংরক্ষণ করুন
ইন্টিগ্রেশন Creator Pro থেকে পাওয়া যায়। Ingest URL আর সিক্রেট শুধু মালিক আর অ্যাডমিনরা দেখতে পান, পরে ইন্টিগ্রেশনের বিস্তারিত ভিউতেও। সংযোগ বিচ্ছিন্ন করে আবার সংযুক্ত করলে নতুন সিক্রেট তৈরি হয়। সাধারণভাবে ইন্টিগ্রেশন কীভাবে সংযুক্ত করবেন তা ব্যাখ্যা করা আছে ইন্টিগ্রেশন সংযোগ, নবায়ন ও বিচ্ছিন্ন করা-এ।
ডেটা পাঠান
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}। সর্বোচ্চ ৪০টি কী, শুধু সাধারণ মান।
- state
- উইজেটের সম্পূর্ণ অবস্থা। এটি আগেরটিকে পুরোপুরি প্রতিস্থাপন করে। type হলো game_server (গেম সার্ভার কার্ড) বা status (স্ট্যাটাস কার্ড)।
Authorization: Bearer-এর বদলে আপনি সিক্রেটটি X-LinkHarbor-Secret হেডারেও পাঠাতে পারেন। প্রতি IP ঠিকানায় মিনিটে ১২০টি কল অনুমোদিত। চাইলে বডিতে সাইন করতে পারেন: X-LinkHarbor-Signature হেডারে থাকে sha256= আর সিক্রেটকে কী হিসেবে নিয়ে কাঁচা বডির HMAC-SHA256 সিগনেচার। পাঠালে তা অবশ্যই সঠিক হতে হবে।
| রেসপন্স | অর্থ |
|---|---|
| 200 {"ok":true,…} | ইভেন্ট সংরক্ষিত হয়েছে, পরিচিত event_id হলে duplicate: true সহ |
| 400 invalid_json | বডি কোনো JSON অবজেক্ট নয় |
| 401 invalid_secret | ভুল সিক্রেট বা অজানা Ingest URL |
| 401 signature_invalid | X-LinkHarbor-Signature বডির সাথে মেলে না |
| 413 request_too_large | বডি ৬৪ KB-এর চেয়ে বড় |
| 422 validation_failed | বডিতে event বা state কোনোটিই নেই |
| 429 rate_limited | আপনার IP ঠিকানা থেকে মিনিটে ১২০টির বেশি কল |
এগুলোও কাজে আসতে পারে
কিছু খুঁজে পাননি?
আপনার কী দরকার তা আমাদের জানান, আমাদের সাপোর্ট টিম ব্যক্তিগতভাবে আপনাকে সাহায্য করবে।