SubSovereign on Roku — एकीकरण गाइड
यह गाइड आपके Roku चैनल को "मुझे पता ही नहीं कि किसने भुगतान किया" से "मेरा चैनल सही उपयोगकर्ता के लिए सही सुविधाएँ अनलॉक करता है, मेरे अपने सर्वर पर सत्यापित करके" तक ले जाती है। SDK एक सिंगल BrightScript फ़ाइल है और यह मानकर चलती है कि आपको सदस्यता टूलिंग का कोई पूर्व अनुभव नहीं है।
SubSovereign आपके लिए क्या करता है
आपके उपयोगकर्ता Roku Pay (Roku Channel Store) के ज़रिये सदस्यता लेते हैं। SubSovereign आपके चैनल के लिए एक सवाल का भरोसेमंद जवाब देता है: इस उपयोगकर्ता ने वास्तव में किस चीज़ के लिए भुगतान किया है?
- आपका चैनल SubSovereign से उपयोगकर्ता का अधिकार (entitlement) पूछता है — वह पहुँच जो उन्होंने अनलॉक की है।
- रसीद सत्यापन सर्वर पर होता है, सीधे Roku के साथ, ताकि कोई छेड़छाड़ किया गया क्लाइंट नकली सदस्यता न दिखा सके।
- यह स्व-होस्टेड है: यह आपके इंफ्रास्ट्रक्चर पर चलता है, आपके उपयोगकर्ताओं का डेटा आपके पास रहता है, और राजस्व में कोई हिस्सेदारी नहीं — आपके उपयोगकर्ता जो भुगतान करते हैं उसका 100% आप रखते हैं।
डिवाइस पर कभी भरोसा न करें। डिवाइस पूछता है; सर्वर तय करता है।
शुरू करने से पहले
आपको एक चालू SubSovereign सर्वर, डैशबोर्ड में एक पंजीकृत ऐप (जो आपको एक appId और एक API key देगा), और आपके Roku Pay उत्पादों से जुड़े हुए एक्सेस स्तर (टियर, जैसे pro) की ज़रूरत होगी। Roku Developer Dashboard में उत्पाद सेट करें और खरीदारी को roChannelStore से सामान्य तरीके से संभालें — SubSovereign बाद में उसे सत्यापित और दर्ज करता है।
चरण 1 — SDK जोड़ें
SubSovereign.brs को अपने चैनल के source/ फ़ोल्डर में डालें। बस इतना ही — कोई पैकेज मैनेजर नहीं। इसके HTTP कॉल roUrlTransfer का उपयोग करते हैं, जिसमें Roku सर्टिफ़िकेट बंडल पहले से जुड़ा हुआ है।
चरण 2 — चैनल शुरू होते समय एक बार कॉन्फ़िगर करें
SubSovereign_Configure को जल्दी कॉल करें (जैसे अपने Main में), और अपनी API key, ऐप ID, एक स्थिर उपयोगकर्ता पहचानकर्ता, और अपना सर्वर URL पास करें:
SubSovereign_Configure("YOUR_APP_API_KEY", "your-app-id", userId, "https://subs.yourdomain.com/api/v1")
किसी दिए गए उपयोगकर्ता के लिए हर बार एक ही userId का उपयोग करें ताकि उनकी पहुँच सभी डिवाइसों पर उनके साथ बनी रहे। (कॉन्फ़िग m पर रहता है, इसलिए उसी थ्रेड पर कॉन्फ़िगर करें जहाँ से आप कॉल करेंगे — चरण 6 में नोट देखें।)
चरण 3 — उपयोगकर्ता क्या एक्सेस कर सकता है, यह जाँचें
SubSovereign_CheckEntitlements() एक ऑब्जेक्ट लौटाता है। त्वरित हाँ/नहीं के लिए hasAccess पढ़ें:
result = SubSovereign_CheckEntitlements()
if result.hasAccess = true
unlockProFeatures()
else
showFreeExperience() ' free tier, or send them to the Channel Store
end if
अगर अनुरोध विफल होता है, तो ऑब्जेक्ट hasAccess = false और एक error फ़ील्ड के साथ वापस आता है — इसलिए नेटवर्क में रुकावट आने पर यह बंद (लॉक्ड) रहता है, गलती से अनलॉक कभी नहीं होता।
चरण 4 — सदस्यता बेचें
खरीदारी को Roku Pay (roChannelStore) से सामान्य तरीके से चलाएँ। जब Roku एक सफल लेनदेन लौटाए, तो उसका transactionId (उत्पाद ID और उसके द्वारा दिए जाने वाले एक्सेस स्तर के साथ) SubSovereign को पास करें ताकि सर्वर इसे सीधे Roku से सत्यापित करे:
result = SubSovereign_ValidateRokuPurchase(transactionId, productId, "pro")
if result.granted = true
entitlements = SubSovereign_CheckEntitlements() ' re-check, then unlock
unlockProFeatures()
end if
खरीदारी तभी वास्तविक मानी जाती है जब सर्वर ने Roku के साथ इसकी पुष्टि कर ली हो।
चरण 5 — फ़ीचर फ्लैग और सहमति
चैनल अपडेट किए बिना सर्वर से फ़ीचर रोलआउट करें:
flags = SubSovereign_GetFeatureFlags()
if flags.newPlayer = true then showNewPlayer()
GDPR सहमति दर्ज करें (fire-and-forget):
purposes = { analytics: true, marketing: false }
SubSovereign_RecordConsent(purposes, "GDPR")
चरण 6 — नेटवर्क कॉल रेंडर थ्रेड से बाहर चलाएँ
SubSovereign_CheckEntitlements और SubSovereign_ValidateRokuPurchase सर्वर का इंतज़ार करते हैं (15 सेकंड तक)। इन्हें अपने रेंडर/UI थ्रेड पर कभी न कॉल करें — धीमा नेटवर्क स्क्रीन को फ्रीज़ कर देगा। इन्हें एक Task node के अंदर चलाएँ और परिणाम अपने सीन पर वापस पास करें:
' in a Task node's function:
SubSovereign_Configure(m.top.apiKey, m.top.appId, m.top.userId, m.top.baseUrl)
m.top.result = SubSovereign_CheckEntitlements() ' observed field the scene listens on
fire-and-forget कॉल SubSovereign_RecordConsent प्रतिक्रिया का इंतज़ार नहीं करती और इसे सीधे कॉल करना सुरक्षित है।
सर्वोत्तम अभ्यास
- चैनल लॉन्च पर जाँच करें ताकि उपयोगकर्ता के लॉक्ड कॉन्टेंट तक पहुँचने से पहले गेटिंग सही हो।
- खरीदने के बाद फिर से जाँचें ताकि UI तुरंत नई पहुँच दर्शाए।
- क्लाइंट पर कभी भरोसा न करें — सर्वर से पूछें; उसने Roku के साथ लेनदेन सत्यापित किया है।
- अधिकार और सत्यापन कॉल के लिए हमेशा Task node का उपयोग करें।
त्वरित संदर्भ
| आप चाहते हैं… | कॉल |
|---|---|
| SDK सेट अप करना | SubSovereign_Configure(apiKey, appId, userId, baseUrl) |
| उपयोगकर्ता ने क्या अनलॉक किया यह देखना | SubSovereign_CheckEntitlements() → hasAccess के साथ ऑब्जेक्ट |
| Roku Pay खरीदारी सत्यापित करना | SubSovereign_ValidateRokuPurchase(transactionId, productId, accessLevel) |
| फ़ीचर फ्लैग पढ़ना | SubSovereign_GetFeatureFlags() |
| GDPR सहमति दर्ज करना | SubSovereign_RecordConsent(purposes, jurisdiction) |
अगले चरण
- अन्य प्लेटफ़ॉर्म के अपने गाइड हैं: Android, iOS, Web / React Native।
- अवधारणाओं में नए हैं? SubSovereign कैसे काम करता है पढ़ें।