Markdown ڈاؤن لوڈ کریںGitHub پر اصل دستاویز
کسٹم لائسنسنگ سسٹم انضمام کی رہنمائی
موجودہ سورس کوڈ دو لائسنس فراہم کنندگان کی حمایت کرتا ہے: Licentivo اور custom_http۔ مرچنٹ سسٹم کی ترتیبات → لائسنسنگ سسٹم میں ایک فراہم کنندہ منتخب اور فعال کرتا ہے؛ تمام مصنوعات اور sandbox/live ماحول ایک ہی فراہم کنندہ استعمال کرتے ہیں۔ کسٹم کنکشن اور پلان میپنگ ہر پروڈکٹ اور ماحول کے لیے الگ ترتیب دی جاتی ہیں۔ اس خصوصیت میں خود بنایا گیا لائسنسنگ سسٹم شامل نہیں؛ مرچنٹ اپنی لائسنسنگ سروس اور SDK استعمال کرتا رہتا ہے۔
موجودہ Licentivo اکاؤنٹ ایکسچینج، نو زبانوں کا SDK اور ڈیوائس مینجمنٹ موجودہ طریقے سے جاری رہتے ہیں۔ کسٹم مصنوعات اس دستاویز کے پروٹوکول کے ذریعے خریداری کی حیثیت ہم آہنگ کرتی ہیں؛ صارف اکاؤنٹ سینٹر میں لائسنس کی فراہمی دیکھتا ہے اور Licentivo SDK کے عمل میں داخل نہیں ہوتا۔
فوری آغاز
- اپنی سروس میں ذیل کے چار HTTP انٹرفیس نافذ کریں اور ہر کنکشن کے لیے الگ HMAC دستخطی کلید اور شناخت کنندہ ترتیب دیں۔
- “لائسنسنگ سسٹم” میں “کسٹم لائسنسنگ سروس” منتخب کریں، نیا کنکشن شامل کریں، پتہ، ماحول، کنکشن شناخت کنندہ، key ID اور معیاری Base64 کلید درج کریں۔ تصدیق کے بعد محفوظ کریں اور “کسٹم لائسنسنگ سروس فعال کریں” پر کلک کریں۔
- پروڈکٹ اور سیلز پلان کے مسودے بنائیں۔ خریداری کی قسم اور قیمت Launch میں منظم ہوتی ہیں؛ لائسنس کے قواعد آپ کے اپنے سسٹم میں منظم ہوتے ہیں۔
- پروڈکٹ اور ماحول منتخب کریں، کنکشن منتخب کریں، بیرونی پروڈکٹ اور پلان کے حوالے درج کر کے محفوظ کریں۔ فراہم کنندہ پوری سائٹ کی انتخابی ترتیب سے طے ہوتا ہے؛ دوسری مصنوعات کے لیے بیک وقت Licentivo فعال نہیں کیا جا سکتا۔
- سیلز پلان صفحے پر آزمائشی ورژن شائع کریں، ادائیگی، فراہمی، تجدید، اپ گریڈ، رقم کی واپسی اور خرابی سے بحالی کے قبولیتی ٹیسٹ مکمل کریں، پھر پروڈکشن ماحول الگ ترتیب دیں۔
بنانے کے بعد پتہ، ماحول، کنکشن شناخت کنندہ اور نیٹ ورک رسائی کی پالیسی تبدیل نہیں ہو سکتی؛ ضرورت پر نیا کنکشن بنائیں۔ دستخطی کلید تبدیل کی جا سکتی ہے؛ خالی چھوڑنے سے پرانی کلید برقرار رہتی ہے۔ دوسرے لائسنسنگ سسٹم کے آرڈرز موجود ہوں تو پوری سائٹ کا فراہم کنندہ براہ راست تبدیل نہیں ہو سکتا؛ پہلے منتقلی مکمل کریں۔ تبدیلی کے بعد پرانے پلان صرف پیش نظارہ بن جاتے ہیں اور دوبارہ شائع کرنا ضروری ہے؛ محفوظ کنکشن اسناد اور میپنگ برقرار رہتی ہیں۔ موجودہ آرڈرز والے پروڈکٹ کا کنکشن براہ راست تبدیل نہیں ہو سکتا اور زیر فروخت میپنگ بھی براہ راست نہیں بدلی جا سکتی؛ نئی قیمت یا میپنگ کے لیے پلان کا نیا ورژن استعمال کریں۔
API سے ترتیب دیتے وقت پہلے PUT /api/v1/admin/licensing/provider کال کریں، درخواست کا باڈی {"provider":"custom_http"} یا {"provider":"licentivo"} ہو، پھر پروڈکٹ میپنگ محفوظ کریں۔ غیر فعال فراہم کنندہ کے لیے پروڈکٹ لائسنس بائنڈنگ یا Licentivo پلان پالیسی میپنگ محفوظ نہیں ہو سکتی۔
کنکشن کی جانچ پروٹوکول، توثیق، ماحول اور معاون خریداری کی اقسام کی تصدیق کرتی ہے؛ مرچنٹ کے لیے بیرونی پلان نہیں بناتی یا تصدیق نہیں کرتی۔ حقیقی ادائیگی لینے سے پہلے حقیقی بیرونی پلان کے ساتھ sandbox انضمام کا قبولیتی امتحان مکمل کرنا ضروری ہے۔
3. مرچنٹ انضمام کا عمل
- موجودہ لائسنسنگ سسٹم کے سامنے اس دستاویز کے چار انٹرفیس نافذ کریں؛ سسٹم کی موجودہ لائسنس منطق برقرار رکھیں۔
- Launch میں نیا “کسٹم لائسنسنگ سروس” کنکشن بنائیں اور HTTPS پتہ، کنکشن شناخت کنندہ، ماحول اور دستخطی کلید ترتیب دیں۔
- Launch صلاحیت کی جانچ کا انٹرفیس کال کر کے پروٹوکول ورژن، مستقل/محدود مدت خریداری کی حمایت اور فراہمی کا طریقہ تصدیق کرتا ہے۔
- پروڈکٹ کے لیے یہ کنکشن منتخب کریں؛ سیلز پلان ورژن کو بیرونی
product_refاورplan_refسے میپ کریں۔ بیرونی شناخت کے لیے مرچنٹ کے اپنے سٹرنگ استعمال ہو سکتے ہیں؛ Licentivo UUID لازم نہیں۔ - sandbox میں ادائیگی، تجدید، اپ گریڈ، رقم کی واپسی اور خرابی سے بحالی کا قبولیتی امتحان مکمل کریں، پھر live ترتیب الگ شائع کریں۔
- ادائیگی کی توثیق کے بعد Launch اسی ڈیٹا بیس ٹرانزیکشن میں آرڈر، خریداری کوریج اور بھیجے جانے والے کام محفوظ کرتا ہے۔
- پس منظر میں مکمل خریداری سنیپ شاٹ کسٹم لائسنسنگ سروس کو بھیجا جاتا ہے؛ وہ سروس وصولی کا ریکارڈ مستقل محفوظ کرنے کے بعد وصولی کی تصدیق کرتی ہے۔
- لائسنسنگ سروس ہدف کی حالت پر کارروائی کرتی ہے۔ Launch اصل ایونٹ کی رسید پوچھتا ہے اور صرف
appliedپر ہم آہنگی مکمل مانتا ہے۔ - Launch لاگ ان اور اس خریداری کے مالک گاہک کی فراہمی کی معلومات پڑھ کر کسٹمر سینٹر میں لائسنس کوڈ، ایکٹیویشن کا راستہ یا سادہ متن کی ہدایات دکھاتا ہے۔ ایپ مرچنٹ کے اپنے لائسنسنگ سسٹم سے جڑتی ہے۔
- تجدید، اپ گریڈ، رقم کی واپسی، ادائیگی کی واپسی، معطلی اور اختتام ہر ایک مکمل سنیپ شاٹ کا نیا ورژن بناتے ہیں۔ لائسنسنگ سروس تازہ ترین ہدف کی حالت کے مطابق کارروائی کرتی ہے۔
ایک ہی پروڈکٹ کے sandbox/live الگ کنکشن سے منسلک ہیں۔ خریداری کے بعد فراہم کنندہ بدلنے کے لیے الگ منتقلی ضروری ہے؛ پرانے آرڈرز اور کام پس منظر کے انتخاب کے ساتھ خاموشی سے نئی سروس کو نہیں بھیجے جا سکتے۔
4. کسٹم لائسنسنگ سروس کے لیے ضروری API
درج ذیل تمام انٹرفیس مرچنٹ کی لائسنسنگ سروس وصول کرتی ہے اور Launch سرور کال کرتا ہے۔ base_url میں مقررہ پاتھ سابقہ ہو سکتا ہے؛ جدول کے پاتھ اس کے بعد شامل ہوتے ہیں۔
| طریقہ اور پاتھ | مقصد |
|---|---|
GET /launch/v1/capabilities |
کنکشن کی جانچ، پروٹوکول اور صلاحیتوں کا اعلان |
POST /launch/v1/events |
مکمل خریداری کی ہدف حالت وصول کریں؛ دوبارہ کوشش میں اصل ایونٹ استعمال کریں |
GET /launch/v1/events/{event_id} |
دریافت کریں کہ ایونٹ واقعی لاگو ہوا یا نہیں، اور گم شدہ جواب بحال کریں |
GET /launch/v1/entitlements/{entitlement_ref}/delivery |
دوسرا لائسنس بنائے بغیر موجودہ لائسنس کی فراہمی کی معلومات پڑھیں |
پہلے ورژن میں رسید فعال طور پر پوچھی جاتی ہے؛ آرڈر بدلنے کے لیے نیا بیرونی کال بیک راستہ نہیں بنایا جاتا۔ کسٹم سروس کو ادائیگی کی تصدیق، قیمت تبدیل کرنے یا خریداری کی مدت بدلنے کا اختیار نہیں۔
4.1 عمومی اصول اور توثیق
- JSON میں UTF-8؛ وقت کے لیے UTC RFC 3339؛
versionکے لیے مثبت صحیح عدد استعمال کریں۔ - کامیاب جواب
{"data": {...}, "request_id": "..."}ہے؛ غلطی کا جواب{"error": {"code": "...", "message": "..."}, "request_id": "..."}ہے۔ - ہر ماحول اور کنکشن کے لیے الگ کلید استعمال کریں۔ کلید کم از کم 32 بے ترتیب بائٹس کی ہو؛ Launch میں موجود خفیہ کردہ کلید اسٹوریج کا حوالہ دیں، اسے فرنٹ اینڈ ترتیب، مثال یا ایپ انسٹالیشن پیکیج میں نہ رکھیں۔
- ہر درخواست میں
X-Launch-Key-Id,X-Launch-Timestamp,X-Launch-Nonce,X-Launch-Signatureشامل ہیں۔ - ٹائم اسٹیمپ اعشاری Unix سیکنڈ ہے۔ nonce کم از کم 128 بٹ بے ترتیب قدر کی بغیر پیڈنگ base64url انکوڈنگ ہے؛ ہر نیٹ ورک کوشش پر نئی قدر بنائیں۔
دستخط کا ان پٹ درج ذیل سات اشیا کو ایک ایک نئی سطر سے جوڑنے والے UTF-8 بائٹس ہیں؛ آخر میں نئی سطر شامل نہ کریں:
v1
<key_id>
<timestamp>
<nonce>
<UPPERCASE HTTP method>
<encoded request path and raw query, including the base_url path prefix>
<lowercase hexadecimal SHA-256 digest of the exact request body>
X-Launch-Signature، v1= کے بعد HMAC-SHA256 نتیجے کی بغیر پیڈنگ base64url انکوڈنگ ہے۔ GET درخواست کا باڈی خالی ہے۔ وصول کنندہ پہلے دستخط اور وقت کی حد جانچے، پھر ڈی سیریلائز کرے؛ مستقل وقت کا موازنہ استعمال کرے، طے شدہ طور پر مثبت و منفی 300 سیکنڈ فرق قبول کرے اور ری پلے روکنے کے لیے nonce کم از کم 600 سیکنڈ رکھے۔ دوبارہ کوششوں میں nonce دوبارہ استعمال نہ کریں، لیکن ایونٹ ID اور کاروباری درخواست کا باڈی یکساں رہیں۔
دستخط HTTPS کا متبادل نہیں۔ درخواست میں گاہک کا پاس ورڈ، ادائیگی کی کلید یا Licentivo انتظامی کلید نہیں ہوتی؛ طے شدہ طور پر صرف گمنام اکاؤنٹ حوالہ بھیجا جاتا ہے، ای میل نہیں۔ سرور HTTP کلائنٹ میں ٹائم آؤٹ، جواب کی لمبائی کی حد اور اسناد کے ساتھ ری ڈائریکٹ کی پیروی روکنا ضروری ہے۔ کسٹم پتہ ترتیب دیتے وقت ہدف کا پتہ جانچیں؛ اندرونی نیٹ ورک تک رسائی منتظم کی واضح ترتیب کردہ تعیناتی صلاحیت ہونی چاہیے۔
4.2 صلاحیت کی جانچ
GET /launch/v1/capabilities HTTP 200 واپس کرتا ہے، مثلاً:
{
"data": {
"protocol": "launch-external-licensing-v1",
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"purchase_types": ["perpetual", "fixed_term"],
"delivery_types": ["license_key", "activation_url", "instructions"],
"devices": false,
"identity_exchange": false
},
"request_id": "check-001"
}
protocol, connection_ref, environment, purchase_types, delivery_types لازم ہیں۔ آخری دو غیر خالی arrays ہوں؛ غیر معاون خریداری کی قسم فروخت کے لیے شائع نہیں ہو سکتی۔ پہلے ورژن میں devices اور identity_exchange لازماً false ہوں؛ توسیعی معاہدہ اور نفاذ مکمل ہونے کے بعد ہی حمایت کا اعلان جائز ہے۔
4.3 خریداری سنیپ شاٹ
POST /launch/v1/events درخواست کی مثال:
{
"schema": "launch-external-licensing-v1",
"event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"type": "entitlement.snapshot",
"change_reason": "purchase",
"account_ref": "customer_opaque_001",
"entitlement_ref": "purchase_opaque_001",
"launch_product_id": "c6dd463e-50f7-4b76-8239-0a8ec6fc304b",
"launch_plan_version_id": "5459a073-9362-4b46-949d-9b0c5d84421a",
"product_ref": "desktop-editor",
"plan_ref": "professional-yearly-v1",
"version": 1,
"desired_state": "active",
"valid_from": "2026-10-25T00:00:00Z",
"valid_until": "2027-10-25T00:00:00Z"
}
اوپر کی مثال کے تمام فیلڈ لازم ہیں۔ valid_until کا null مستقل خریداری ظاہر کرتا ہے؛ دوسری اقدار valid_from کے بعد ہونی چاہئیں۔
| فیلڈ | پابندیاں اور معنی |
|---|---|
event_id |
Launch کا بنایا UUID؛ ایک ہی ایونٹ کی دوبارہ کوشش میں غیر تبدیل |
connection_ref / environment |
دستخطی کلید کے کنکشن اور ماحول سے مطابقت ضروری ہے |
account_ref |
مستحکم گمنام اکاؤنٹ حوالہ؛ وصول کنندہ کنکشن، ماحول اور اس حوالے سے گاہک کی شناخت کرتا ہے |
entitlement_ref |
ایک خریداری تعلق کا مستحکم حوالہ؛ سب منسوخ ہونے کے بعد دوبارہ خریداری میں نیا حوالہ استعمال کریں |
launch_product_id / launch_plan_version_id |
Launch پروڈکٹ اور غیر متغیر پلان ورژن کا UUID |
product_ref / plan_ref |
انضمام کرنے والے کا ترتیب کردہ بیرونی حوالہ؛ 1–128 ASCII حروف، حروف، اعداد، _, -, . جائز؛ بیرونی پلان خودکار نہیں بنتا |
version |
ایک ہی کنکشن، ماحول اور خریداری حوالے کے تحت مسلسل بڑھتا ہدف ورژن |
desired_state |
active、suspended、expired、revoked |
change_reason |
purchase、renewal、upgrade、refund、reversal、suspension、resumption、expiry、reconciliation |
account_ref, entitlement_ref میں 1–128 حروف، اعداد، انڈر اسکور یا ہائفن استعمال ہوتے ہیں۔ schema, type مثال کی اقدار پر مقرر ہیں۔ وصول کنندہ desired_state اور مکمل مطلق مدت کے مطابق نتیجہ لاگو کرتا ہے، وجہ کی بنیاد پر خود دن نہیں بڑھاتا یا پورا لائسنس منسوخ نہیں کرتا۔
خصوصاً رقم کی واپسی: تجدید یا اپ گریڈ آرڈر واپس کرنے کے بعد بھی درست بنیادی خریداری رہ سکتی ہے؛ تب سنیپ شاٹ active رہ سکتا ہے لیکن مدت کم یا پلان تبدیل ہو سکتا ہے۔ صرف لیجر کی دوبارہ گنتی کے بعد درست خریداری کوریج باقی نہ رہے تو متعلقہ اختتامی حالت بھیجی جاتی ہے۔
4.4 وصولی، رسید اور بحالی
وصول کنندہ ایونٹ ID، اصل درخواست باڈی کا ڈائجسٹ اور زیر عمل کام مستقل محفوظ کرنے کے بعد ہی HTTP 202 واپس کرے؛ پہلے مکمل ہم آہنگ ڈپلیکیٹ درخواست HTTP 200 واپس کر سکتی ہے۔ دونوں درج ذیل رسید کا ڈھانچہ واپس کرتے ہیں۔
{
"data": {
"event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"entitlement_ref": "purchase_opaque_001",
"version": 1,
"payload_sha256": "<64-character lowercase hexadecimal SHA-256 digest of the exact event body>",
"status": "pending",
"error_code": null
},
"request_id": "receipt-001"
}
ڈائجسٹ پلیس ہولڈر کو حقیقی ڈائجسٹ سے بدلنا ضروری ہے۔ رسید میں اوپر کے تمام فیلڈ لازم ہیں؛ غلطی نہ ہو تو error_code، null ہے۔ GET /launch/v1/events/{event_id} اسی ڈھانچے کو HTTP 200 کے ساتھ واپس کرتا ہے؛ حالت ہو سکتی ہے:
status |
مطلب | Launch کی کارروائی |
|---|---|---|
pending |
مستقل محفوظ، اصل لائسنس تبدیلی ابھی مکمل نہیں | بعد میں پوچھیں، ہم آہنگی مکمل نشان زد نہ کریں |
applied |
لائسنسنگ سروس تصدیق کرتی ہے کہ ہدف حالت واقعی لاگو ہو گئی | تمام متعلقہ فیلڈ اور ڈائجسٹ جانچنے کے بعد ہم آہنگی مکمل تصدیق کریں |
rejected |
یقینی طور پر لاگو نہیں ہو سکتا، مثلاً بیرونی پلان موجود نہیں | خودکار دوبارہ کوشش روک کر واضح غلطی دکھائیں |
manual_review |
نتیجہ غیر یقینی یا حالت میں تصادم ہے؛ دستی جانچ ضروری ہے | اصل کام اور ایونٹ محفوظ رکھیں، قابل آڈٹ کارروائی کا انتظار کریں |
فراہمی کی حالت ہم آہنگی کی رسید سے الگ ہے؛ applied کو گاہک کی ایپ کا رن ٹائم اجازت نامہ براہ راست نہیں سمجھا جا سکتا۔
قابل اعتماد ہونے کے تقاضے:
- کم از کم ایک بار ترسیل؛ وصول کنندہ کاروباری idempotency یقینی بنائے؛ نیٹ ورک سطح پر “صرف ایک بار کال” کا وعدہ نہیں کیا جا سکتا۔
- ایک ہی ایونٹ ID اور اصل درخواست باڈی پر موجودہ نتیجہ واپس کریں؛ ایک ہی ID اور مختلف باڈی پر HTTP 409
IDEMPOTENCY_CONFLICTواپس کریں۔ - پرانا ورژن نئے کو اوور رائٹ نہیں کر سکتا۔ ایک خریداری ورژن کے مختلف ایونٹس یا اہداف خاموشی سے قبول نہ ہوں؛ جانچ کے لیے HTTP 409
STATE_VERSION_CONFLICTواپس کریں۔ - POST جواب کھو جائے یا عمل دوبارہ شروع ہو تو Launch پہلے اصل ایونٹ کا GET کرتا ہے؛ واضح
EVENT_NOT_FOUNDکے بعد ہی اصل ID اور باڈی دوبارہ بھیجتا ہے۔ - دور دراز اجراء کا حقیقی نتیجہ غیر واضح ہو تو انضمام کرنے والا اپنے مستقل idempotency حوالے سے بھی جانچے؛ دوبارہ بھیجنے سے دوسرا لائسنس نہ بنے۔
- HTTP 429 میں
Retry-Afterکی پابندی کریں؛ ٹائم آؤٹ اور 5xx پر بیک آف سے بحالی کریں؛ حد سے تجاوز پر دستی جانچ۔ توثیق، ترتیب اور کاروباری انکار کو کامیاب ہم آہنگی نہ سمجھیں۔
تجویز کردہ غلطی کوڈ: SIGNATURE_INVALID(401)、SIGNATURE_EXPIRED(401)、NONCE_REPLAYED(409)、SCOPE_MISMATCH(403)、EVENT_NOT_FOUND(404)、IDEMPOTENCY_CONFLICT(409)、STATE_VERSION_CONFLICT(409)、PLAN_UNKNOWN(422)、PURCHASE_TYPE_UNSUPPORTED(422)、RATE_LIMITED(429)、SERVICE_UNAVAILABLE(503)。 غلطی کے پیغام میں اسناد نہ ہوں۔
4.5 لائسنس کی فراہمی
GET /launch/v1/entitlements/{entitlement_ref}/delivery صرف اس کنکشن اور ماحول کا موجودہ فراہمی نتیجہ پڑھ سکتا ہے؛ سوال کو نیا اجراء حکم نہ سمجھیں۔ HTTP 200 مثال:
{
"data": {
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"entitlement_ref": "purchase_opaque_001",
"version": 1,
"status": "ready",
"delivery": {
"type": "license_key",
"value": "EXAMPLE-ONLY-NOT-A-REAL-LICENSE",
"expires_at": null
}
},
"request_id": "delivery-001"
}
status، pending, ready یا unavailable ہے؛ ready نہ ہو تو delivery، null ہے۔ ready پر type اعلان کردہ license_key, activation_url یا instructions ہو، value زیادہ سے زیادہ 4096 UTF-8 بائٹس اور expires_at UTC وقت یا null ہو۔ تمام متعلقہ جوابی فیلڈ Launch کے موجودہ خریداری ورژن سے ملیں؛ پرانے ورژن کی فراہمی موجودہ نتیجہ نہیں۔
لائسنس کوڈ حساس معلومات ہے؛ فراہمی کا جواب Cache-Control: no-store استعمال کرتا ہے، باڈی لاگ نہیں ہوتی اور مستقل رکھنے کی ضرورت پر خفیہ کردہ اسٹوریج استعمال کریں۔ ایکٹیویشن URL صرف کنکشن ترتیب کے اجازت یافتہ HTTPS ذرائع سے قبول کریں؛ instructions سادہ متن میں دکھائیں، HTML یا اسکرپٹ نہ چلائیں۔ منسوخ، مکمل رقم واپس شدہ یا درست خریداری کے بغیر اکاؤنٹ Launch سے فراہمی کی معلومات حاصل نہیں کر سکتا؛ پہلے فراہم شدہ اسناد کی حقیقی تنسیخ بیرونی نظام کرتا ہے۔
Launch انتظامی اور کسٹمر API
یہ انٹرفیس مرچنٹ کے تعینات کردہ Launch origin کے تحت ہیں، بیرونی سروس کی HMAC کلید سے توثیق نہیں کرتے۔ منتظم موجودہ ویب سائٹ سیشن استعمال کرتا ہے، لکھنے کی درخواست میں X-CSRF-Token لازم ہے۔ گاہک صرف اپنی خریداری پڑھ سکتا ہے۔
| طریقہ اور پاتھ | مقصد |
|---|---|
GET /api/v1/admin/licensing/connections |
connections, bindings, mappings اور default_provider واپس کرتا ہے؛ کنکشن فہرست میں صرف کسٹم کنکشن ہیں، Licentivo موجودہ انتظامی انٹرفیس استعمال کرتا ہے |
POST /api/v1/admin/licensing/connections |
کسٹم کنکشن جانچ کر شامل کریں |
PUT /api/v1/admin/licensing/connections/{id} |
نام، اجازت یافتہ ایکٹیویشن ذرائع اور دستخطی ترتیب میں ترمیم کریں؛ پرانا وصولی پتہ غیر تبدیل |
POST /api/v1/admin/licensing/connections/{id}/check |
دوبارہ جانچیں؛ HTTP 200 میں last_check_error غیر null ہو تو جانچ ناکام ہے |
PUT /api/v1/admin/products/{id}/licensing |
پروڈکٹ کے منتخب ماحول کے لیے فراہم کنندہ، کنکشن اور بیرونی پلان میپنگ ترتیب دیں |
GET /api/v1/me/products/{id}/delivery?environment=sandbox |
موجودہ گاہک اپنی موجودہ درست کسٹم خریداری کی لائسنس فراہمی پڑھتا ہے؛ Cookie یا desktop Bearer توثیق |
GET /api/v1/licensing/documentation |
یہ دستاویز، لاگ ان ضروری نہیں |
GET /api/v1/licensing/protocol |
کسٹم سروس کے نفاذ کے لیے OpenAPI، لاگ ان ضروری نہیں |
نیا کسٹم کنکشن شامل کرنے کا درخواست باڈی:
{
"provider": "custom_http",
"name": "My licensing service",
"base_url": "https://licenses.example.com",
"environment": "sandbox",
"connection_ref": "merchant-01-sandbox",
"key_id": "key-1",
"signing_key": "<standard Base64 encoding of 32 to 128 random bytes>",
"allow_private_network": false,
"allow_local_http": false,
"activation_origins": ["https://activate.example.com"]
}
جواب کا data حساس معلومات ہٹایا گیا کنکشن آبجیکٹ ہے؛ دستخطی کلید یا secret ID واپس نہیں ہوتی۔ allow_local_http صرف sandbox کے localhost/لوپ بیک پتوں کے لیے ہے؛ نجی نیٹ ورک HTTPS کے لیے منتظم کی واضح اجازت ضروری ہے۔ خالی کلید صرف موجودہ کنکشن میں ترمیم پر جائز ہے۔ Licentivo اب بھی POST /api/v1/admin/connections/licentivo سے ترتیب پاتا ہے۔
پروڈکٹ ترتیب دینے کا درخواست باڈی:
{
"provider": "custom_http",
"environment": "sandbox",
"connection_id": "<id returned when creating the connection>",
"mappings": [
{
"version_id": "<Launch plan version UUID>",
"product_ref": "desktop-editor",
"plan_ref": "professional-yearly-v1"
}
]
}
Licentivo منتخب کرنے پر {"provider":"licentivo","environment":"sandbox","mappings":[]} بھیجیں، اس کی پروڈکٹ/پالیسی میپنگ اب بھی اصل انٹرفیس استعمال کرتی ہے۔ پہلی تبدیلی موجودہ اشاعت کو پیش نظارہ بناتی ہے؛ نئے فراہم کنندہ کے مطابق دوبارہ جانچ اور اشاعت ضروری ہے۔ mappings میں صرف شامل یا برقرار رکھنے والے ورژن ہو سکتے ہیں؛ حذف کرنے سے پرانی میپنگ نہیں مٹتی۔
گاہک کی فراہمی HTTP 200 کا معیاری data envelope ہے؛ خریداری نہ ہو تو 404، Licentivo پروڈکٹ پر 409 LICENSING_DELIVERY_UNSUPPORTED، غیر ہم آہنگ، معطل، میعاد ختم یا مکمل رقم واپس ہونے پر 409 ENTITLEMENT_NOT_READY، بیرونی سروس عارضی غیر دستیاب یا رسید نہ ملنے پر 503۔ کسٹمر سینٹر کا “لائسنس فراہمی دیکھیں” ملکیت اور حالت دوبارہ جانچتا ہے اور اسناد URL یا لاگ میں نہیں لکھتا۔
کسٹم پروڈکٹ کے Licentivo identity, device, integration-check انٹرفیس 409 CUSTOM_LICENSING_SDK_REQUIRED واپس کرتے ہیں۔ پرانا /credential اب بھی 410 واپس کرتا ہے۔ ایپ مرچنٹ کا اپنا SDK استعمال کرے، Launch کی ready حالت کو رن ٹائم اجازت نہ سمجھے۔
مثال اور قبولیتی جانچ
Python پتلے اڈاپٹر کی مثال دستخط، nonce، ایونٹ ڈپلیکیٹ روکنے اور رسید مستقل محفوظ کرنے کا وصول کنندہ فریم ورک فراہم کرتی ہے؛ حقیقی لائسنس کارروائی کے لیے مرچنٹ سسٹم سے انضمام ضروری ہے۔
کسٹم پروٹوکول کا OpenAPI اور Launch کا اپنا OpenAPI الگ الگ دونوں سمتیں بیان کرتے ہیں۔ وصول کنندہ کو Licentivo پروڈکٹ کیٹلاگ، پالیسی کیٹلاگ یا شناختی اعتماد کے انٹرفیس نافذ کرنے کی ضرورت نہیں۔
مقامی توثیق الگ MySQL، حقیقی HTTP اڈاپٹر اور مصنوعی لائسنس/ادائیگی سروس استعمال کرتی ہے، جواب کا ضیاع، دوبارہ آغاز، تجدید، اپ گریڈ، رقم کی واپسی، اکاؤنٹ معطلی، رسید کا عدم مطابقت اور فراہمی کی علیحدگی شامل ہیں۔ پروڈکشن قبولیتی جانچ میں مرچنٹ کی اپنی لائسنس سروس اور ایپ بھی ضروری ہیں۔ غیر اعلان شدہ ڈیوائس، مشترکہ اکاؤنٹ لاگ ان اور آف لائن صلاحیتیں Launch فراہم نہیں کرتا۔