# مرچنٹ کے اپنے لائسنس اڈاپٹر کی مثال

یہ 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 termination، عمل کی نگرانی، محفوظ ڈیٹا بیس بیک اپ اور اپنے بیک اینڈ کی SDK/رن ٹائم توثیق استعمال کریں۔ صرف واقعی معاون خریداری/فراہمی اقسام کا اعلان کریں؛ `capabilities` اسی مطابق بدلیں۔

بیک اینڈ مسئلہ درست ہونے کے بعد `python server.py --retry-event ORIGINAL_EVENT_UUID` مقامی طور پر وہی محفوظ پے لوڈ دوبارہ قطار میں ڈالتا ہے۔ Launch کے لائسنس کام صفحے پر بھی اسی اصل ایونٹ کی دوبارہ کوشش کریں۔ جواب بحال کرنے کے لیے ID نہ بدلیں یا وقت دوبارہ نہ بڑھائیں۔

مثال نقطہ آغاز ہے، پروڈکشن اہلیت نہیں۔ ورکر لیز 60 سیکنڈ ہے؛ ہک کال کا ٹائم آؤٹ اس سے کم رکھیں یا لیز تجدید کریں۔ live خریداری قبول کرنے سے پہلے نگرانی، گردش کے طریقے، سخت کاروباری/اسکیما جانچ اور تعیناتی کے عملی کنٹرول شامل کریں۔ [انضمام رہنمائی](/ur/launch-documents/external-licensing/) اور [OpenAPI](/ur/assets/launch/external-licensing-openapi.json) پروٹوکول متعین کرتے ہیں۔ Launch حالت کے جواب کو محفوظ کوڈ چلانے کی اجازت کبھی نہ سمجھیں۔
