# Launch और Licentivo से एप्लिकेशन एकीकरण

यह मार्गदर्शिका Licentivo प्रदाता पर लागू है। Licentivo के बिना व्यापारी के अपने लाइसेंसिंग सिस्टम को जोड़ने के लिए [कस्टम लाइसेंसिंग API और एकीकरण प्रवाह](/hi/launch-documents/external-licensing/) उपयोग करें, उत्पाद/वातावरण के लिए `custom_http` चुनें और उस सिस्टम का रनटाइम SDK बनाए रखें।

ये स्थानीय, अप्रकाशित बदलाव खाता पहचान विनिमय उपयोग करते हैं। माइग्रेशन और सर्वर-साइड सत्र निरस्तीकरण के लिए [ज़िम्मेदारी और खरीद-सिंक अनुबंध](/hi/launch-documents/account-purchase-boundary/) देखें। इस बदलाव से पैकेज संस्करण नंबर प्रकाशित या अपग्रेड नहीं हुए हैं।

Launch व्यापारी खाते, ऑर्डर, कीमतें, नवीनीकरण/अपग्रेड कोट, रिफ़ंड और निरपेक्ष खरीदी तारीखों का स्वामी है। Licentivo लाइसेंस, नीतियाँ, डिवाइस भत्ते, प्राधिकरण सत्र, हस्ताक्षरित अनुमतियाँ और रनटाइम निर्णयों का स्वामी है। सफल Launch लॉगिन या सिंक्रनाइज़ खरीद संरक्षित कार्य चलाने की अनुमति कभी नहीं है।

सीधा कनेक्शन कॉल और पिन की गई सार्वजनिक उत्पाद कुंजियाँ पाने के लिए प्रशासन एकीकरण पृष्ठ उपयोग करें। सभी नौ भाषा रैपर में आधिकारिक SDK है। व्यापारी प्रबंधन और भुगतान कुंजियाँ सर्वर पर रहती हैं। सार्वजनिक उत्पाद सेटिंग में ग्राहक क्रेडेंशियल, डिवाइस ID, कैश पथ या पहचान assertions नहीं होते।

## खाता विनिमय

```mermaid
sequenceDiagram
    participant App as Application
    participant Launch as Launch server
    participant SDK as Official Licentivo SDK
    participant Lic as Licentivo server
    App->>Launch: Account login
    Launch-->>App: Account session
    App->>Launch: POST /software/products/{id}/identity
    Launch-->>App: Short-lived signed identity assertion
    App->>SDK: In-memory identity + connection + environment
    SDK->>Lic: POST /launch/exchange
    Lic-->>SDK: Restricted device credential + signed permission + logout ticket
    App->>SDK: RunFeature around every protected action
```

रैपर `POST /api/v1/software/products/{id}/identity` को `{"environment":"sandbox"}` या `live` के साथ अनुरोध करता है। लौटाया पहचान assertion अधिकतम 120 सेकंड रहता है और पंजीकृत जारीकर्ता, audience, वास्तविक लॉगिन सत्र, उत्पाद, वातावरण और खरीद संदर्भ से बँधा है। इसमें सुविधा ग्रांट, डिवाइस भत्ता या ऑफ़लाइन नीति नहीं होती।

आधिकारिक SDK ये मान मेमोरी में प्राप्त करता है:

```json
{
  "product_id": "LICENTIVO_PRODUCT_UUID",
  "trusted_keys": {"SIGNING_KEY_ID": "PINNED_PUBLIC_KEY"},
  "launch_connection_id": "LICENTIVO_LAUNCH_CONNECTION_UUID",
  "environment": "sandbox",
  "identity_token": "SHORT_LIVED_ASSERTION_FROM_LAUNCH",
  "license_key": ""
}
```

यह रनटाइम कॉन्फ़िगरेशन सार्वजनिक फ़ाइल में न लिखें या उसका assertion खाता रिकॉर्ड में स्थायी न रखें। Launch v2 याद रखे रिकॉर्ड केवल खाता सत्र और सार्वजनिक रूटिंग संदर्भ रखते हैं। पुराना ग्राहक `/credential` एंडपॉइंट HTTP 410 लौटाता है।

## जीवनचक्र और स्टोरेज

- `Login`: खाता प्रमाणित करें, नया assertion माँगें, आधिकारिक SDK शुरू करें।
- `Restore`: याद रखे खाते की ऑनलाइन पुष्टि करें, नया assertion माँगें, आधिकारिक SDK शुरू करें। Launch बाधा ऑफ़लाइन अनुमति नहीं चुनती।
- `RunFeature`: प्रत्येक संरक्षित निष्पादन आधिकारिक SDK को सौंपें। अस्वीकृत कॉलबैक कभी नहीं चलना चाहिए।
- `Close` / `Dispose` / `Drop`: बैकग्राउंड कार्य रोकें, जानबूझकर याद रखा लॉगिन और नोड बाइंडिंग बनाए रखें।
- `Logout`: आधिकारिक SDK का एकीकृत लॉगआउट चलाएँ, फिर Launch खाता रिकॉर्ड साफ़ करें और उसका खाता सत्र समाप्त करें।
- `ReleaseDevice`: स्पष्ट लॉगआउट का संगत उपनाम। लंबित दूरस्थ निरस्तीकरण ईमानदारी से रिपोर्ट करें।

केवल आधिकारिक SDK अपने डिवाइस क्रेडेंशियल और लीज़ फ़ाइलें हटाता है। उसकी कैश निर्देशिका या `.logout.json` कभी न हटाएँ: उस जर्नल में विफल नेटवर्क अनुरोधों के बाद आवश्यक प्रतिबंधित रिलीज़ टिकट हैं। संबंधित कैश दोबारा आरंभ होने पर SDK लंबित टिकट फिर संसाधित करता है। Launch के अपने खाता स्टोरेज और SDK स्टोरेज के स्वामी अलग हैं।

ऑफ़लाइन स्टार्टअप चाहने वाले ऐप आधिकारिक SDK का दस्तावेज़ित बहाली प्रवाह उपयोग करते हैं। केवल SDK हस्ताक्षरित अनुमति, उत्पाद/वातावरण संदर्भ, समाप्ति, घड़ी व्यवहार और डिवाइस स्थिति सत्यापित करता है। Launch रैपर खरीदी तारीखों, स्थानीय ऑर्डर या फ़ाइल की मौजूदगी से अनुमति अनुमानित नहीं करते।

केवल-मेमोरी खाता सत्र डिफ़ॉल्ट हैं। स्थायी खाता स्टोर अपने रिकॉर्ड एन्क्रिप्ट/प्रमाणित करें और OS की क्रेडेंशियल सुविधाओं से कुंजियाँ सुरक्षित रखें। प्रत्येक व्यापारी, खाते, उत्पाद और वातावरण के लिए अलग लिखने योग्य कैश उपयोग करें। ब्राउज़र रेंडरर को डेस्कटॉप खाता टोकन, assertions या डिवाइस क्रेडेंशियल के बजाय व्यावसायिक परिणाम मिलने चाहिए।

## खरीद और डिवाइस

Launch सत्यापित भुगतान और अपरिवर्तनीय ऑर्डर कवरेज से निरपेक्ष खरीदी तारीखें गणना करता है, फिर संस्करणित स्नैपशॉट `/api/v1/launch/connections/{id}/events` को भेजता है। यह `applied` तक इवेंट पूछता है; केवल रसीद पूर्ति नहीं है। नवीनीकरण और रिफ़ंड पुनः प्रयास अवधि दूसरी बार नहीं जोड़ सकते। रिफ़ंड केवल संबंधित ऑर्डर कवरेज हटाते हैं; पूर्ण रिफ़ंड वाली खरीद पुनः खरीद पर नए संदर्भ से बदली जाती है।

डिवाइस तक पहुँच न रखने वाले उपयोगकर्ता Launch का डिवाइस-प्रबंधन पृष्ठ खोल सकते हैं। सूचियाँ, शेष रिलीज़, अनुमत कार्रवाइयाँ और परिणाम Licentivo से आते हैं। रिलीज़ में दिखाई बाइंडिंग पीढ़ी और अपरिवर्तित कार्रवाई ID होती है। Launch अलग प्रतिस्पर्धी रिलीज़ काउंटर या जॉब निष्पादक नहीं रखता।

## सत्यापन और सीमाएँ

खाता विनिमय, अल्पकालिक assertion स्टोरेज, SDK-नियंत्रित सुविधा निष्पादन, सामान्य बंद करना, नई प्रक्रिया में स्पष्ट लॉगआउट, लंबित रिलीज़ जर्नल और उत्पाद/वातावरण अलगाव जाँचें। आधिकारिक SDK की वास्तविक हस्ताक्षरित लीज़, ऑफ़लाइन जाँच और छेड़छाड़ अस्वीकृति Launch खाता ट्रांसपोर्ट से अलग जाँचें। कंपाइलेशन और फ़िक्स्चर उत्पादन स्वीकृति सिद्ध नहीं करते।

Launch डेस्कटॉप लॉगआउट, बलपूर्वक सत्र लॉगआउट, पासवर्ड बदलाव और खाता अक्षम करने के लिए Licentivo V39 के `session-revocations` POST और रसीद GET एंडपॉइंट भी उपयोग करता है। यह मूल प्राप्तकर्ता और अनुरोध स्थायी रूप से स्थिर करता है, खोई प्रतिक्रियाएँ पुनर्प्राप्त करता है और हर वातावरण अलग पुष्ट करता है। लंबित खाता-व्यापी सूचनाएँ नया डेस्कटॉप प्रमाणीकरण रोकती हैं; पुष्टि के बाद वास्तव में नए लॉगिन का `auth_time` नवीनतम `revoked_before` सेकंड के सख्ती से बाद होना चाहिए। वेबसाइट बहाली उपलब्ध रहती है। ये सूचनाएँ खरीदी तारीखें कभी नहीं बदलतीं। [सीमा और बहाली अनुबंध](/hi/launch-documents/account-purchase-boundary/) देखें।

[मैनुअल एकीकरण](/hi/launch-documents/manual-integration/), [AI एकीकरण](/hi/launch-documents/ai-integration/), [एकीकरण पैकेज](/hi/launch-documents/integration-packages/) और [स्वीकृति](/hi/launch-documents/acceptance/) देखें।
