# বিক্রেতার নিজস্ব লাইসেন্সিং অ্যাডাপ্টারের উদাহরণ

এই Python 3.10+ উদাহরণ SQLite ইভেন্ট/nonce স্থায়ী সংরক্ষণ ও পুনরুদ্ধার ওয়ার্কারসহ Launch-এর বাহ্যিক HTTP ব্রিজ বাস্তবায়ন করে। এটি লাইসেন্স তৈরি করে **না**, সুরক্ষিত ফিচার যাচাই করে না বা আপনার লাইসেন্সিং সিস্টেমের বিকল্প নয়।

এই হুকগুলোসহ একটি Python মডিউল বাস্তবায়ন করুন:

```python
def apply_snapshot(snapshot):
    # Call your licensing system with snapshot["event_id"] as its durable
    # idempotency key. Apply desired_state and the absolute purchased dates.
    # Return only after confirming the original operation was applied.
    # Raise ValueError for a result requiring manual review.
    ...

def delivery(snapshot):
    # Read an existing result owned by this purchase; do not issue here.
    return {"type": "instructions", "value": "Your own delivery instructions", "expires_at": None}
```

ব্যাকএন্ড কনফিগার করার আগে `...` বাস্তব ইন্টিগ্রেশন দিয়ে বদলান। ব্যাকএন্ড মডিউল কনফিগার না থাকলে প্যাকেজের হুক `NotImplementedError` উত্থাপন করে; ইভেন্ট ম্যানুয়াল পর্যালোচনায় যায় এবং লাইসেন্স ইস্যু হয়েছে বলে দাবি করে না। উদাহরণের ওয়ার্কার ক্র্যাশ বা অনিশ্চিত ত্রুটির পরে হুক আবার চেষ্টা করতে পারে, তাই আপনার লাইসেন্সিং ব্যাকএন্ড একই ইভেন্ট ID দিয়ে ডুপ্লিকেট নিয়ন্ত্রণ/পুনরুদ্ধার করবে।

পরিবেশ ভেরিয়েবল দিয়ে অ্যাডাপ্টার কনফিগার করুন, কী সোর্স কন্ট্রোল ও শেল ইতিহাসের বাইরে রাখুন:

- `CUSTOM_LICENSING_KEY`: 32–128 র্যান্ডম বাইটের স্ট্যান্ডার্ড Base64 এনকোডিং, Launch-এর সঙ্গে মেলে।
- `CUSTOM_LICENSING_KEY_ID`: `key-1`, অথবা আপনার কনফিগার করা কী শনাক্তকারী।
- `CUSTOM_LICENSING_CONNECTION_REF`: মিল থাকা সংযোগ রেফারেন্স।
- `CUSTOM_LICENSING_ENVIRONMENT`: `sandbox` বা `live`।
- `CUSTOM_LICENSING_DATABASE`: আপনার চেকআউটের বাইরে ব্যক্তিগত লেখাযোগ্য SQLite পাথ; পুনরারম্ভের পরও সংরক্ষণ করুন।
- `CUSTOM_LICENSING_BACKEND`: উপরের হুক বাস্তবায়নকারী ইমপোর্টযোগ্য মডিউল।
- `CUSTOM_LICENSING_PORT`: স্থানীয় লিসেন পোর্ট, ডিফল্ট `18883`।

`python server.py` চালান। স্থানীয় sandbox পরীক্ষায় Launch-এ `http://127.0.0.1:18883` কনফিগার করে তার loopback HTTP ব্যতিক্রম স্পষ্টভাবে সক্ষম করুন। উৎপাদনে HTTPS টার্মিনেশন, প্রক্রিয়া তত্ত্বাবধান, সুরক্ষিত ডেটাবেস ব্যাকআপ এবং নিজস্ব ব্যাকএন্ড SDK/রানটাইম যাচাই ব্যবহার করুন। ব্যাকএন্ড বাস্তবে সমর্থন করে শুধু এমন ক্রয়/ডেলিভারি ধরন ঘোষণা করুন; সেই অনুযায়ী `capabilities` বদলান।

ব্যাকএন্ড সমস্যা ঠিক করার পর `python server.py --retry-event ORIGINAL_EVENT_UUID` স্থানীয়ভাবে একই সংরক্ষিত পেলোড আবার সারিতে রাখে। Launch-এর লাইসেন্স-কাজ পৃষ্ঠাতেও সেই মূল ইভেন্ট পুনঃপ্রচেষ্টা করুন। প্রতিক্রিয়া পুনরুদ্ধারে ID বদলাবেন না বা সময় আবার যোগ করবেন না।

উদাহরণটি শুরুর স্থান, উৎপাদন যোগ্যতা নয়। ওয়ার্কার লিজ 60 সেকেন্ড; হুক কলের টাইমআউট আরও ছোট রাখুন বা লিজ নবায়ন করুন। live ক্রয় গ্রহণের আগে পর্যবেক্ষণ, রোটেশন পদ্ধতি, কঠোর ব্যবসায়িক/স্কিমা যাচাই ও ডিপ্লয়মেন্ট পরিচালন নিয়ন্ত্রণ যোগ করুন। [ইন্টিগ্রেশন নির্দেশিকা](/bn/launch-documents/external-licensing/) ও [OpenAPI](/bn/assets/launch/external-licensing-openapi.json) প্রোটোকল সংজ্ঞায়িত করে। Launch অবস্থার প্রতিক্রিয়াকে সুরক্ষিত কোড চালানোর অনুমতি মনে করবেন না।
