SubSovereign
All guides

Flutter पर SubSovereign — इंटीग्रेशन गाइड

यह गाइड subsovereign Flutter पैकेज (sdk-flutter/) को कवर करती है — यह एक डेटा क्लाइंट और एक नेटिव paywall विजेट दोनों है। आप SubSovereign dashboard में जो paywall डिज़ाइन करते हैं, वह यहाँ एक असली Flutter Paywall विजेट के रूप में रेंडर होती है — iOS, Android, web, React और React Native SDK के समान कॉन्फ़िग से।

शुरू करने से पहले

एक चालू SubSovereign सर्वर, dashboard में रजिस्टर किया हुआ एक app (एक appId और SDK-रोल की एक API key), आपके स्टोर प्रोडक्ट्स से जुड़े एक्सेस स्तर (जैसे pro), और एक प्रकाशित paywall। खरीदारी की प्रक्रिया अपने सामान्य बिलिंग प्लगइन (जैसे in_app_purchase) से करें; SubSovereign उसे बाद में सर्वर-साइड सत्यापित कर रिकॉर्ड करता है।

चरण 1 — इंस्टॉल करें

पैकेज जोड़ें (जब तक pub.dev पर उपलब्ध नहीं, path/git डिपेंडेंसी के रूप में):

dependencies:
  subsovereign:
    path: ../sdk-flutter   # or a git dependency
import 'package:subsovereign/subsovereign.dart';

चरण 2 — app शुरू होते ही एक बार कॉन्फ़िगर करें

SubSovereign.instance.configure(SubSovereignConfig(
  apiKey:  'YOUR_SDK_KEY',
  appId:   'your-app-id',
  baseUrl: 'https://subs.yourdomain.com/api/v1', // YOUR self-hosted server
  userId:  currentUser.id,                        // your own stable user id
  locale:  'en',
));

एक स्थिर userId उपयोग करें — हर जगह एक ही मान, ताकि उपयोगकर्ता का एक्सेस सभी डिवाइसों पर उसके साथ बना रहे।

चरण 3 — देखें कि उपयोगकर्ता क्या एक्सेस कर सकता है

try {
  final result = await SubSovereign.instance.checkEntitlements();
  if (result.hasAccess) {
    showPremiumContent();
  } else {
    showPaywall();
  }
} on SubSovereignException catch (e) {
  // Keep the user on their last-known access and retry later.
  debugPrint('Entitlement check failed: $e');
}

चरण 4 — paywall दिखाएँ और बिक्री करें

final config = await SubSovereign.instance.getPaywallConfig(platform: 'android');

Paywall(
  config: config,
  onSelectProduct: (productId) => buy(productId), // your billing plugin
)

खरीदारी सफल होने के बाद, सर्वर से उसे सत्यापित कराएँ, फिर दोबारा जाँचें और एक्सेस अनलॉक करें:

final granted = await SubSovereign.instance.validateGooglePurchase(
  purchaseToken: purchase.verificationData.serverVerificationData,
  productId: purchase.productID,
  accessLevelId: 'pro',
);
if (granted) {
  final result = await SubSovereign.instance.checkEntitlements();
  if (result.hasAccess) unlockProFeatures();
}

गोपनीयता (GDPR)

await SubSovereign.instance.recordConsent(purpose: 'analytics', granted: true);

EU वापसी बटन (Compliance Passport)

यदि आप EU उपभोक्ताओं को ऑनलाइन subscription बेचते हैं, तो Directive (EU) 2023/2673 के अनुसार एक स्पष्ट रूप से लेबल की गई वापसी सुविधा अनिवार्य है:

WithdrawalButton(subscriptionId: sub.id)

यह एक प्रमुख बटन दिखाता है, एक बार पुष्टि करता है, और idempotently सबमिट करता है (नेटवर्क रिट्राई से कभी दो वापसियाँ नहीं बनेंगी)। कस्टम UI के लिए SubSovereign.instance.withdraw(subscriptionId: …) और getWithdrawalConfig() का उपयोग करें।

त्वरित संदर्भ

आप चाहते हैं… कॉल करें
SDK सेट अप करें SubSovereign.instance.configure(SubSovereignConfig(…))
उपयोगकर्ता का अनलॉक एक्सेस देखें await checkEntitlements()EntitlementResult.hasAccess
प्रकाशित paywall लोड करें await getPaywallConfig(platform: 'android')
उसे नेटिव रूप में दिखाएँ Paywall(config: …, onSelectProduct: …)
Google खरीदारी सत्यापित करें await validateGooglePurchase(purchaseToken: …, productId: …, accessLevelId: …)
सहमति रिकॉर्ड करें await recordConsent(purpose: …, granted: …)
EU वापसी WithdrawalButton(subscriptionId: …) · withdraw() · getWithdrawalConfig()

अगले कदम