# Launch ক্রয় মেয়াদ ও অ্যাকাউন্ট SDK সীমা

এই পরিবর্তন শুধু স্থানীয়ভাবে উন্নয়ন ও যাচাই করা হয়েছে; Launch ডিপ্লয় বা SDK প্যাকেজ প্রকাশ হয়নি। বর্তমান সোর্স Licentivo অ্যাকাউন্ট অনুমোদন প্রোটোকল ও সংশ্লিষ্ট অফিসিয়াল SDK আপডেটের ওপর নির্ভরশীল; শুধু দীর্ঘমেয়াদি লাইসেন্স কী সমর্থনকারী পুরোনো সার্ভারের সঙ্গে মিশিয়ে ব্যবহার করা যাবে না।

## দায়িত্ব

| সক্ষমতা | দায়িত্বপ্রাপ্ত পক্ষ |
| --- | --- |
| নিবন্ধন, লগইন, অ্যাকাউন্ট নিরাপত্তা, পণ্য, অর্ডার, পেমেন্ট, রিফান্ড | Launch |
| নবায়ন/আপগ্রেড কোট, ক্রয় চক্র ও নির্দিষ্ট শুরু/শেষ সময় গণনা | Launch |
| প্ল্যান রেফারেন্স থেকে লাইসেন্স পণ্য/নীতির ম্যাপিং প্রয়োগ ও নীতি যাচাই | Licentivo; Launch নির্বাচন ও নিবন্ধন প্রবেশপথ দেয় |
| লাইসেন্স, ফিচার অধিকার, ডিভাইস সিট, অনুমোদন সেশন, অফলাইন অনুমতি | Licentivo ও অফিসিয়াল SDK |
| ডিভাইস তালিকা ও দূরবর্তী আনলিঙ্ক | Licentivo; Launch বর্তমান অ্যাকাউন্টের অনুরোধ প্রক্সি করে ও ফল দেখায় |
| লগইন ক্রেডেনশিয়াল সংরক্ষণ, অ্যাকাউন্ট পুনরুদ্ধার, লগআউট প্রবেশ | Launch SDK |

Launch অর্ডার, ক্রয় মেয়াদ বা সিঙ্ক সম্পন্ন চিহ্ন সুরক্ষিত ফিচার চালুর অনুমতি দিতে পারে না। ক্লায়েন্টকে অফিসিয়াল SDK-এর `RunFeature` প্রভৃতি রানটাইম ইন্টারফেস দিয়ে সুরক্ষিত কাজ চালাতে হবে।

প্রতিটি Launch পণ্য স্থির প্রকাশ্য Licentivo পণ্য রুট সংরক্ষণ করে। একই পণ্যের প্ল্যানে ভিন্ন নীতি নির্বাচন করা যায়, কিন্তু অন্য দূরবর্তী পণ্যে যাওয়া যায় না; ম্যাপিং সংরক্ষণ সাধারণ পণ্যের ডেটাবেস সারি লক দিয়ে ক্রমান্বয়ে যাচাই হয়। গ্রাহক পরিচয়, প্ল্যান প্রকাশ ও SDK ইন্টিগ্রেশন কনফিগারেশন একই বাইন্ডিং পড়ে; খসড়া বিদ্যমান ক্রেতার পণ্য প্রসঙ্গ বদলাতে পারে না। এটি কেবল ইন্টিগ্রেশন কনফিগারেশনের সামঞ্জস্য যাচাই করে, ফিচার বা ডিভাইস অনুমোদন নির্ধারণ করে না। পুরোনো ডেটাবেসে স্থির ফিল্ড না থাকলে আগে ক্রয় ও প্রকাশ ইতিহাস দেখুন; অনন্যভাবে নিশ্চিত না হলে `PRODUCT_MAPPING_CONFLICT` ফেরত আসে। বিস্তারিত [ম্যাপিং সমবর্তী সংশোধন](/bn/launch-documents/product-mapping-fix-2026-10-24/)।

## ক্রয় মেয়াদ সিঙ্ক

বিদ্যমান ইন্টারফেস পুনর্ব্যবহার করুন, নতুন পেমেন্ট তথ্য, রিফান্ড তথ্য বা কোট পরিষেবা নয়:

- `POST /api/v1/launch/connections`、`PUT /connections/{id}`: পরিচয় স্বাক্ষর পাবলিক কী নিবন্ধন করুন, উৎপাদন ও পরীক্ষার জন্য আলাদা সংযোগ তৈরি করুন।
- `PUT /api/v1/launch/connections/{id}/plans/{plan}`: অনন্য Launch প্ল্যান সংস্করণ রেফারেন্স ও দূরবর্তী পণ্য, নীতি সংস্করণ নিবন্ধন করুন।
- `POST /api/v1/launch/connections/{id}/events`: সম্পূর্ণ সংস্করণযুক্ত ক্রয় স্ন্যাপশট জমা দিন।
- `GET /api/v1/launch/connections/{id}/events/{event}`: প্রক্রিয়াকরণের ফল নিশ্চিত করুন।
- `POST /api/v1/launch/connections/{id}/events/{event}/retry`: যাচাইয়ের পর মূল ইভেন্ট পুনঃপ্রচেষ্টা করুন।

স্ন্যাপশটে শুধু ইভেন্ট নম্বর, পরিবেশ, ইভেন্ট ধরন, ক্রয় রেফারেন্স, বেনামি অ্যাকাউন্ট রেফারেন্স, Launch পণ্য, প্ল্যান সংস্করণ রেফারেন্স, বাড়তে থাকা সংস্করণ ও নির্দিষ্ট `valid_from` / `valid_until` থাকে; মাইগ্রেশনে পুরোনো লাইসেন্স ID যুক্ত হয়। পেমেন্ট কী, মূল্য, গ্রাহক ইমেইল বা দীর্ঘমেয়াদি লাইসেন্স কী পাঠানো হয় না। স্থায়ী ক্রয়ে `valid_until` হলো `null`; Licentivo নীতির সঙ্গে মিল যাচাই করে।

Launch একই ডেটাবেস লেনদেনে পেমেন্ট নিশ্চিত করে, অপরিবর্তনীয় ক্রয় কভারেজের সময়সীমা রেকর্ড করে ও সিঙ্ক কাজ সংরক্ষণ করে। দিন/মাস/বছরের ক্যালেন্ডার চক্রে শেষ সময় গণনা হয়; নবায়নে মূল ক্রয় অ্যাঙ্কর থাকে, মেয়াদ শেষের পরে পেমেন্ট হলে প্রকৃত পেমেন্ট সময় থেকে শুরু। আপগ্রেড কোট ও মেয়াদ এখনও Launch গণনা করে।

প্রতিটি পরিবর্তনে সম্পূর্ণ নির্দিষ্ট মান পাঠান, পুনঃপ্রচেষ্টায় একই ইভেন্ট ID ও বডি ব্যবহার করুন, “আর N দিন যোগ” পাঠাবেন না। কাজ অনুরোধ, দূরবর্তী সংযোগ ও অগ্রগতি স্থায়ী রাখে; প্রতিক্রিয়া হারানো, প্রক্রিয়া পুনরারম্ভ ও সমবর্তী ওয়ার্কারেও মেয়াদ দ্বিগুণ যোগ হয় না।

HTTP 202 শুধু Licentivo গ্রহণ করেছে বোঝায়। শুধু `applied` পেলে সিঙ্ক সম্পন্ন চিহ্নিত; `pending`-এ জিজ্ঞাসা চলবে, `manual_review` ও অনিশ্চিত `stale` যাচাইয়ের অপেক্ষায় থাকবে। নেটওয়ার্ক ত্রুটিতে ব্যাকঅফ পুনঃপ্রচেষ্টা, ধারাবাহিক ব্যর্থতা সীমায় ম্যানুয়াল যাচাই।

রিফান্ড শুধু সংশ্লিষ্ট অর্ডারের কভারেজ সরায়: আপগ্রেড অর্ডার রিফান্ডে মূল প্ল্যান ফেরে; নবায়ন অর্ডার রিফান্ডে সংশ্লিষ্ট সম্প্রসারণ সরায়; অন্য অপরিফান্ড ক্রয় থাকলে পুনর্গণিত ফল সিঙ্ক হয়, সব ক্রয় প্রত্যাহার নয়। সব ক্রয় রিফান্ড হলে `entitlement.refunded` পাঠান। পরে পুনঃক্রয়ে নতুন ক্রয় রেফারেন্স ব্যবহার করুন, যাতে প্রত্যাহৃত দূরবর্তী লাইসেন্স পুনর্জীবিত না হয়।

চ্যানেল-নিশ্চিত হারানো চার্জব্যাক বা রিভার্সালও শুধু সংশ্লিষ্ট অর্ডারের ক্রয় কভারেজ সরায়, অর্ডার `reversed` দেখায় এবং প্রকৃত অনুমোদন পরিবর্তন Licentivo ক্রয় স্ন্যাপশট প্রয়োগের পরে করে। অপেক্ষমাণ বিরোধ ক্রয় রেকর্ড বদলায় না। পুরোনো যাচাই-অপেক্ষমাণ রিভার্সাল বিজ্ঞপ্তি মূল চ্যানেলে স্বাক্ষর আবার যাচাই ও পুনঃপ্রেরণে পুনরুদ্ধার করা যায়।

অজানা রিফান্ড ম্যানুয়াল যাচাইয়ে গেলে প্রশাসক `POST /api/v1/admin/refunds/{id}/reconcile` দিয়ে মূল কাজ পুনরুদ্ধার করতে পারেন। রসিদ মূল লেনদেন, মুদ্রা ও অর্থের সঙ্গে মিলতে হবে; মূল কাজ নম্বর ও অনুমোদন সময় বদলানো যাবে না, নিরাপদ পুনঃপ্রচেষ্টা সময় পেরোলে অন্ধভাবে অর্থের অনুরোধ পুনরায় জমা নয়।

## অ্যাকাউন্ট ও ক্লায়েন্ট

1. ক্লায়েন্ট `POST /api/v1/auth/login` দিয়ে বাস্তব ডেস্কটপ লগইন সেশন তৈরি করে।
2. Launch SDK `POST /api/v1/software/products/{id}/identity` অনুরোধ করে, `sandbox` বা `live` নির্দিষ্ট করে।
3. Launch সর্বাধিক 120 সেকেন্ডের পরিচয় assertion ইস্যু করে, নির্ধারিত প্রাপক ও পণ্য/ক্রয় প্রসঙ্গসহ; এতে বাস্তব লগইন `sid` ও লগইন মেয়াদ থাকে। assertion-এ ফিচার, ডিভাইস ভাতা বা অফলাইন অধিকার নেই।
4. Launch SDK কেবল মেমোরিতে `identity_token`, `launch_connection_id`, `environment` অফিসিয়াল SDK-কে দেয়, `license_key` ফাঁকা।
5. অফিসিয়াল SDK Licentivo `/api/v1/launch/exchange` কল করে; Licentivo অনুমোদন সিদ্ধান্ত নিয়ে ডিভাইস ক্রেডেনশিয়াল ও স্বাক্ষরিত অনুমতি দেয়।

Launch স্বাভাবিক অ্যাকাউন্ট রেকর্ড v2 ব্যবহার করে, শুধু অ্যাকাউন্ট সেশন ও প্রকাশ্য রাউটিং তথ্য রাখে, assertion, লাইসেন্স কী বা অনুমতি নয়। স্পষ্ট লগআউটে শুধু প্রত্যাহারের ব্যক্তিগত v3 অপেক্ষমাণ কাজে বদলায়, যা লগইন পুনরুদ্ধার করতে পারে না; Launch সেশন প্রত্যাহার নিশ্চিত হলে মুছুন। পুরোনো `/credential` ইন্টারফেস HTTP 410 ফেরত দেয়। পাবলিক কী ও পণ্য ID অ্যাপের সঙ্গে বিতরণযোগ্য, ব্যবস্থাপনা কী শুধু সার্ভারে থাকে।

## লগআউট, বন্ধ, দূরবর্তী আনলিঙ্ক

| কাজ | আচরণ |
| --- | --- |
| সাধারণ Close / Dispose / Drop | রানটাইম থামিয়ে ক্রয়, ডিভাইস বাইন্ডিং ও ইচ্ছাকৃত মনে রাখা অ্যাকাউন্ট বজায় রাখুন |
| Logout / ReleaseDevice সামঞ্জস্য এন্ট্রি | স্থানীয় অ্যাকাউন্ট লগআউট চিহ্নিত ও অফিসিয়াল SDK লগআউট কল করুন, তারপর Launch সেশন প্রত্যাহার করুন; অনিশ্চিত অ্যাকাউন্ট লগআউটে নিরাপদ অপেক্ষমাণ কাজ থাকে |
| ডিভাইসে পৌঁছানো না গেলে Launch-এ ডিভাইস পরিচালনা করুন | Licentivo ডিভাইস তালিকা, আনলিঙ্ক অনুরোধ ও ফল প্রক্সি করুন |

অফিসিয়াল SDK লগআউট এই প্রক্রিয়ায় লাইসেন্স ব্যবহার অবিলম্বে থামায়, রানটাইম ক্রেডেনশিয়াল পরিষ্কার করে এবং নির্দিষ্ট লগআউট টিকিট দিয়ে দূরবর্তী বাইন্ডিং প্রত্যাহার করে। নেটওয়ার্ক ব্যর্থতায় SDK-এর `.logout.json` রাখতে হবে; ফল দূরবর্তী প্রত্যাহার অপেক্ষমাণ দেখাবে, সফল আনলিঙ্ক নয়। Launch SDK অফিসিয়াল SDK ক্যাশ ডিরেক্টরি মুছে, ঘুরে পরিষ্কার করে বা বদলায় না; সংশ্লিষ্ট ক্যাশ আবার ইনিশিয়ালাইজ হলে অফিসিয়াল SDK অপেক্ষমাণ টিকিট পুনরুদ্ধার করে।

Launch অ্যাকাউন্ট লগআউটের স্বাধীন অপেক্ষমাণ অবস্থাও আছে: নেটওয়ার্ক ব্যর্থতা, বাতিল বা প্রতিক্রিয়া হারালে পুনঃপ্রচেষ্টার নিরাপদ রেকর্ড মুছবেন না; পুনরায় লগইন, পুনরুদ্ধার বা লগআউট শুধু মূল সেশন প্রত্যাহার আবার জমা দেয়, অপেক্ষমাণ কাজ লগইন পুনরুদ্ধারে ব্যবহৃত হতে পারে না। সফলতা বা HTTP 401-এ সেশন অকার্যকর নিশ্চিত হলে মুছুন। প্রক্রিয়ার মধ্যে পুনরুদ্ধারে স্থায়ী নিরাপদ Store প্রয়োজন, MemoryStore শুধু এই প্রক্রিয়ায় কার্যকর। বিস্তারিত [লগআউট পুনঃপ্রচেষ্টা সংশোধন ও যৌথ পরীক্ষা](/bn/launch-documents/logout-retry-fix-2026-10-24/)।

দূরবর্তী আনলিঙ্ক অনুরোধে মূল তালিকার `activation_id` ও `expected_generation` থাকে, পুনঃপ্রচেষ্টায় একই `operation_id`। Launch আনলিঙ্ক সংখ্যা গণনা, নিজে অনুমোদন বা আনলিঙ্ক সারি নির্বাহ করে না এবং জেনারেশন রিফ্রেশ করে পুরোনো কাজ স্বয়ংক্রিয় পুনঃপ্রচেষ্টা করে না। অবশিষ্ট সংখ্যা, রিলিজ অনুমতি, পর্যালোচনা ও চূড়ান্ত ফল Licentivo থেকে আসে।

অ্যাকাউন্ট পুনরুদ্ধার `Restore`-এ অনলাইনে অ্যাকাউন্ট নিশ্চিত ও নতুন পরিচয় assertion প্রয়োজন; অ্যাকাউন্ট পরিষেবা ব্যর্থ হলে Launch নিজে অফলাইন অনুমতি বেছে নেয় না। অফলাইন শুরু দরকার এমন অ্যাপ অফিসিয়াল SDK পুনরুদ্ধার চুক্তি অনুযায়ী যুক্ত হয়; স্বাক্ষর, অফলাইন মেয়াদ ও ঘড়ি পরীক্ষা অফিসিয়াল SDK করে।

## সার্ভার-পার্শ্বের পরিচয় প্রত্যাহার

Licentivo V39-এর বিদ্যমান ইন্টারফেসে যুক্ত করুন, বাণিজ্যিক তথ্য বা কোট ইন্টারফেস প্রয়োজন নেই:

- `POST /api/v1/launch/connections/{id}/session-revocations`: নির্দিষ্ট `sid` বা অ্যাকাউন্টের পুরোনো লগইন প্রত্যাহার করে সিঙ্ক্রোনাস কমিট রসিদ ফেরত দেয়।
- `GET /api/v1/launch/connections/{id}/session-revocations/{event_id}`: মূল ইভেন্টের কমিট ফল এনে হারানো প্রতিক্রিয়ার অনুরোধ পুনরুদ্ধার করুন।

সাধারণ ডেস্কটপ লগআউট ও নির্দিষ্ট সেশন জোরপূর্বক লগআউটে `scope=session`; পাসওয়ার্ড বদল/রিসেট, ইমেইল পরিবর্তন, অ্যাকাউন্ট নিষ্ক্রিয় এবং ওয়েবসাইট কর্মীর ভূমিকা পরিবর্তনে সব সেশন অকার্যকরে `scope=account` ব্যবহৃত হয়। ওয়েব সেশনের সাধারণ লগআউট গ্রাহক সফটওয়্যার প্রভাবিত করে না। Launch শুধু পরিচয় অকার্যকরের বিজ্ঞপ্তি দেয়; দূরবর্তী অনুমোদন সেশন, রানটাইম ক্রেডেনশিয়াল ও ডিভাইস রিলিজ Licentivo সম্পন্ন করে, ক্রয় মেয়াদ বদলায় না বা Launch-এর আনলিঙ্ক ভাতা খরচ করে না।

স্থানীয় সেশন অকার্যকর ও বিজ্ঞপ্তি সারিতে যোগ একই লেনদেনে হয়। সারি তখন বিদ্যমান সংযোগ ও পরিবেশ স্থির করে, একই ইভেন্ট ID, বেনামি অ্যাকাউন্ট শনাক্তকারী ও মূল অনুরোধ দিয়ে পুনঃপ্রচেষ্টা করে; পরে তৈরি সংযোগ পুরোনো অ্যাকাউন্ট প্রত্যাহার পায় না। আগে মূল রসিদ জিজ্ঞাসা, না থাকার নিশ্চয়তার পরই আবার জমা; প্রতি পরিবেশে ফল আলাদা স্থায়ী, সব মিল থাকা সফল রসিদ পেলেই সম্পন্ন দেখায়। নেটওয়ার্ক বিচ্ছিন্নতায় স্বয়ংক্রিয় পুনঃপ্রচেষ্টা, ক্রেডেনশিয়াল/চুক্তি সংঘর্ষে ম্যানুয়াল যাচাই। প্রশাসক সিঙ্ক কাজ পৃষ্ঠায় বিজ্ঞপ্তি দেখে পুনঃপ্রচেষ্টা করতে পারেন; নতুন প্রত্যাহার ইভেন্ট তৈরি হয় না।

অ্যাকাউন্ট-পরিসরের প্রত্যাহার Licentivo প্রথম গ্রহণ করা `revoked_before`-কে সীমা ধরে। বিজ্ঞপ্তি অপেক্ষমাণ থাকলে নতুন ডেস্কটপ লগইন ও পরিচয় assertion স্থগিত; সম্পন্নের পর বাস্তব লগইনের `auth_time` সব পরিবেশের রসিদের কাটঅফ সেকেন্ডের কঠোরভাবে পরে হতে হবে। একই সেকেন্ডের লগইন পরে পুনঃপ্রমাণীকৃত হতে পারে; `iat` বা পরিচয় assertion রিফ্রেশ পুরোনো লগইন চালাতে পারে না। ওয়েবসাইট লগইন পুনরুদ্ধারে ব্যবহারযোগ্য থাকে। অ্যাকাউন্ট পুনরায় সক্ষম হলেও আবার লগইন প্রয়োজন, পুরোনো সেশন ফেরে না।

## পুরোনো ডেটা মাইগ্রেশন

নিশ্চিত পুরোনো লাইসেন্স বাইন্ডিংসহ ক্রয় `entitlement.migrated` ব্যবহার করে, শুধু পুরোনো লাইসেন্স ID জমা দেয়, পুরোনো কী পড়ে বা পাঠায় না। Licentivo মাইগ্রেশন নিশ্চিত করলে বর্তমান বাণিজ্যিক মেয়াদ ও অবস্থা সিঙ্কে পৃথক নতুন সংস্করণের স্ন্যাপশট পাঠান। অনিশ্চিত পুরোনো ইস্যুর ফল ও অসঙ্গত অনুমোদনে ম্যানুয়াল যাচাই প্রয়োজন; পুরোনো ব্যবস্থাপনা কমান্ড স্বয়ংক্রিয় রিপ্লে হয় না।

সাধারণ SDK লগআউট, দূরবর্তী ডিভাইস আনলিঙ্ক ও সার্ভার পরিচয় প্রত্যাহার বিদ্যমান ইন্টারফেসে যুক্ত। দূরবর্তী নিষ্ক্রিয়করণ এখনও অফিসিয়াল SDK-এর ইস্যুকৃত অফলাইন অনুমতির মেয়াদে সীমিত; Launch অফলাইন ডিভাইসে তাৎক্ষণিক প্রত্যাহারের প্রতিশ্রুতি দেয় না।

<!-- account-store-ownership-2026-10-24 -->

অ্যাকাউন্ট লগআউট স্বাধীন নিরাপদ অপেক্ষমাণ কাজ, স্থানীয় সেশন লগআউট ডাইজেস্ট ও প্রক্রিয়া-পার সমন্বয় ব্যবহার করে; পুরোনো ইনস্ট্যান্স শুধু নিজের লগইন পরিচালনা করে। স্টোরেজ ব্যর্থতার পর পুনরুদ্ধার প্রথমে অ্যাকাউন্ট প্রত্যাহার আবার জমা দেয়, পরিচয় পায় না বা অনুমোদন শুরু করে না; ফিচার, অফলাইন অনুমতি, ডিভাইস জেনারেশন ও আনলিঙ্ক ভাতা Licentivo নির্ধারণ করে। বিস্তারিত [সংশোধন ও উভয় পক্ষের যৌথ পরীক্ষা রেকর্ড](/bn/launch-documents/account-store-fix-2026-10-24/)।
