{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-platform/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"GlomoPay Flutter SDK v1 (Archived)","llmstxt":{"title":"Glomopay developer documentation","description":"Cross-border payments APIs, organised by product. Each product section carries both the explanation of its objects and the job-shaped integration guides that set them up.","details":{"content":"How to use these docs:\n\n- Get started is the front door. It carries a routing table from\n  \"what are you building\" to the page that builds it, plus how to get\n  API keys.\n- The product sections - Payin, Payout, Multi-currency accounts,\n  Verification, Request for Information (RFI) - each hold two kinds of page.\n  Pages titled as a noun (\"Subscriptions\", \"Bank Transfer\") explain what\n  an object is. Pages titled as a job (\"Set up recurring subscriptions\",\n  \"Collect LRS remittances from India\") are complete integration flows\n  and live one level under the object they set up. Match a user's goal\n  against the job-shaped titles first.\n- Reports and Identity and Access Management are the two subjects with no\n  API counterpart. There are no endpoints for reports, users, roles or\n  invites; both pages document the merchant dashboard. A dashboard\n  procedure for something the API also does (a refund, a payout) is NOT\n  here - it stays in the product that owns it.\n- API reference is generated from OpenAPI and carries endpoint detail.\n- The OpenAPI description itself is published as a single self-contained\n  document at /openapi.yaml, and the same document as JSON at\n  /openapi.json. Every $ref is resolved into it, so one fetch is the\n  whole contract: 61 paths, 81 operations, 68 schemas - the same\n  endpoints the API reference pages render. Fetch that instead of\n  reading the 129 pages under /api-reference/.\n- Developer resources covers what every integration touches and no single\n  product owns: auth, errors, pagination, rate limits, webhooks,\n  versioning, supported countries, quotes, and the client SDKs.\n"},"sections":[{"title":"Get started","description":"The front door. The routing table from a merchant's goal to the flow that delivers it, how to obtain API keys, and the platform glossary.","includeFiles":["**/get-started/**"]},{"title":"Payin","description":"Collecting money: customers, orders, checkout, payment links, payment methods (cards, bank transfer, pay via bank), refunds, disputes, purpose codes, fee models, custom fields, subscriptions, and resident India remittance under LRS. Includes the flows that set each up - bank transfers, subscriptions, LRS remittances, and server-to-server card payments.","includeFiles":["**/payin/**"]},{"title":"Payout","description":"Sending money: the payout life cycle, queued payouts, creating and cancelling a payout, rails, beneficiaries, purpose codes, and the action required state.","includeFiles":["**/payout/**"]},{"title":"Multi-currency accounts","description":"Holding money: balances, balance conversion, adding balance, withdrawing balance, and the settlement holiday calendar - the Indian and US bank and FX holidays on which settlement to the merchant's bank account, and money movement generally, is affected.","includeFiles":["**/multi-currency-account/**"]},{"title":"Verification","description":"Proving who someone is and that an account is theirs: KYC, bank account validation, and third-party verification (TPV) with the flow that verifies a payer's bank account.","includeFiles":["**/verification/**"]},{"title":"Request for Information (RFI)","description":"Responding to a compliance request for information, per object - payment link, order, payment, payout - plus compliance reviews and RFIs raised on already-successful payments.","includeFiles":["**/request-for-information/**"]},{"title":"Reports","description":"The downloadable and scheduled reports a merchant pulls from the dashboard for reconciliation, compliance and treasury: payment, subscription, settlement breakup, balance statement and KYC reports, plus scheduling one for recurring email delivery. Dashboard only - there is no reports API.","includeFiles":["**/reports/**"]},{"title":"Identity and Access Management","description":"Administering who can use a merchant account: one set of credentials across multiple MIDs, switching between them without logging out, the Admin / Member / Sales Partner roles and what each may see and do, and inviting a new member. Dashboard only - there is no users, roles or invites API.","includeFiles":["**/access-management/**"]},{"title":"API reference","description":"Endpoint reference generated from the Glomopay OpenAPI description.","includeFiles":["**/api-reference/**"]},{"title":"Developer resources","description":"What every integration touches and no single product owns: auth, errors, pagination, rate limits, webhooks, versioning, API validations, security, supported countries, quotes, and the client SDKs - React Native, Flutter, Android and the Unified Web SDK, with per-version references and changelogs. Reports and Identity and Access Management used to be listed here and are now their own sections.","includeFiles":["**/platform/**"]}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"glomopay-flutter-sdk-v1-archived","__idx":0},"children":["GlomoPay Flutter SDK v1 (Archived)"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Archived"]}," - This documentation is for Flutter SDK ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["v1.x"]},", frozen at the final v1 release, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["v1.11.2"]},". v1 is no longer the latest version."," ","For the latest version, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v2"},"children":["Flutter SDK v2"]},"."," ","To upgrade, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/migration"},"children":["Migration Guide"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Official Flutter SDK for integrating GlomoPay payment checkout flows into your mobile applications."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/changelog"},"children":["Changelog"]}," is also available."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before using this SDK, you need:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API credentials (Public Key) from your GlomoPay dashboard"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An order ID created via the GlomoPay API (or a subscription ID for subscription payments)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"system-requirements","__idx":2},"children":["System Requirements"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Version"},"children":["Version"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Flutter"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 3.7.0"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dart SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 3.0.0"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"installation","__idx":3},"children":["Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the dependency to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pubspec.yaml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"dependencies:\n  flutter:\n    sdk: flutter\n  glomopay_sdk: ^1.11.2\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Or install via the CLI:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"flutter pub add glomopay_sdk\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then import the package:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"import 'package:glomopay_sdk/glomopay_sdk.dart';\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"platform-setup","__idx":4},"children":["Platform Setup"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"android","__idx":5},"children":["Android"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the following permissions to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["android/app/src/main/AndroidManifest.xml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<uses-permission android:name=\"android.permission.INTERNET\"/>\n<uses-permission android:name=\"android.permission.CAMERA\" />\n<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" android:maxSdkVersion=\"32\" />\n<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" android:maxSdkVersion=\"29\" />\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ios","__idx":6},"children":["iOS"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the following keys to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ios/Runner/Info.plist"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<key>NSCameraUsageDescription</key>\n<string>This app requires access to the camera to upload documents required for payment verification.</string>\n<key>NSPhotoLibraryUsageDescription</key>\n<string>This app requires access to the photo library to select documents for payment verification.</string>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"quick-start","__idx":7},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"import 'package:flutter/material.dart';\nimport 'package:glomopay_sdk/glomopay_sdk.dart';\n\nclass PaymentScreen extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(title: const Text('Complete Payment')),\n      body: GlomoPayCheckout(\n        config: const GlomoPayConfig(\n          publicKey: 'test_pk_12345',\n          orderId: 'order_abc123',\n        ),\n        onPaymentSuccess: (GlomoPayPayload payload) {\n          print('Payment succeeded! Payment ID: ${payload.paymentId}');\n        },\n        onPaymentFailure: (GlomoPayPayload payload) {\n          print('Payment failed with Order ID: ${payload.orderId}');\n        },\n        onSdkError: (List<SdkError> errors) {\n          print('SDK Error: ${errors.first.message}');\n        },\n        onConnectionError: (ConnectionError error) {\n          print('Connection error: ${error.message}');\n        },\n        onPaymentTerminate: (TerminationSource source) {\n          print('User cancelled checkout via $source');\n          Navigator.pop(context);\n        },\n      ),\n    );\n  }\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"subscriptions-checkout","__idx":8},"children":["Subscriptions Checkout"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To process subscription payments, pass a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," instead of an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayConfig"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"GlomoPayCheckout(\n  config: const GlomoPayConfig(\n    publicKey: 'live_pk_abc123',\n    subscriptionId: 'sub_xyz789',\n  ),\n  onPaymentSuccess: (GlomoPayPayload payload) {\n    print('Subscription payment success: ${payload.paymentId}');\n  },\n  onPaymentFailure: (GlomoPayPayload payload) {\n    print('Subscription payment failed: ${payload.orderId}');\n  },\n  onSdkError: (List<SdkError> errors) {\n    errors.forEach((e) => print('${e.type}: ${e.message}'));\n  },\n  onConnectionError: (ConnectionError error) {\n    print('Connection error: ${error.message}');\n  },\n)\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," is provided:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The SDK skips order detection API calls"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," must start with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["LRS-specific UI elements and flow logic are not applied"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not pass both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," - the SDK will fire ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Existing order-based integrations remain backward compatible"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"features","__idx":9},"children":["Features"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Glomo Payment Stack Support"]}," - handles standard checkout flows and overlay redirects (3DS, bank pages)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Robust Security"]}," - built-in jailbreak and root detection"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Error Monitoring"]}," - built-in error tracking and diagnostics"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Comprehensive Error Handling"]}," - gracefully manages connection drops, DNS issues, HTTP errors, validation mistakes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Native Support"]}," - full Android/iOS native features (camera, file pickers)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mock Mode"]}," - easy testing with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}," prefixed keys"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-reference","__idx":10},"children":["API Reference"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaycheckout-widget","__idx":11},"children":["GlomoPayCheckout Widget"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The checkout widget. Place it in your widget tree to render the payment checkout."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"GlomoPayCheckout(\n  config: config,\n  onPaymentSuccess: ...,\n  onPaymentFailure: ...,\n  onSdkError: ...,\n  onConnectionError: ...,\n)\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"props","__idx":12},"children":["Props"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Prop"},"children":["Prop"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayConfig"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Configuration details for the checkout session"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentSuccess"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function(GlomoPayPayload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called when payment completes successfully"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentFailure"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function(GlomoPayPayload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called when transaction declines or fails"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function(List<SdkError>)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called on SDK-level errors (validation, forbidden device)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onConnectionError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function(ConnectionError)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called on internet drop, DNS failure, HTTP error"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentTerminate"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function(TerminationSource)?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called if user dismisses modal or hits back"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onUserRefusedDevicePermissions"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Function()?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Called when user denies camera/storage permissions during file/document uploads or selfie verification requests"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["autoCloseOnConnectionError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bool"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Auto-call onPaymentTerminate on critical connection error. Default: true"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopayconfig","__idx":13},"children":["GlomoPayConfig"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Property"},"children":["Property"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Default"},"children":["Default"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["publicKey"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["-"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your GlomoPay public key (must start with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["-"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique tracking ID generated for transaction on server"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["-"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Subscription checkout ID; use instead of orderId for subscriptions"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["server"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custom LRS checkout URL; leave unset to use the official environment URL"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," must be provided. If both or neither are set, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," fires."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaypayload","__idx":14},"children":["GlomoPayPayload"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"class GlomoPayPayload {\n  final String orderId;       // System ID of the order\n  final String? paymentId;    // Transaction reference, if generated\n  final String? signature;    // Validation signature hash for backend verification\n  final Map<String, dynamic>? rawResponse; // Page message exactly as it arrived\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sdkerror","__idx":15},"children":["SdkError"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"class SdkError {\n  final SdkErrorType type;   // Error category\n  final String message;       // Human-readable description\n  final String? field;        // Field name (e.g. \"orderId\") causing validationError\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sdkerrortype","__idx":16},"children":["SdkErrorType"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Input validation failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceForbidden"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rooted or jailbroken device detected"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["networkError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network-level error"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unknown"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uncategorized error"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"connectionerror","__idx":17},"children":["ConnectionError"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"class ConnectionError {\n  final ConnectionErrorType type;  // Error category\n  final String message;            // Extracted error description or HTTP status phrase\n  final int? errorCode;            // Internal WebKit/Android error code\n  final int? statusCode;           // HTTP status code, if applicable\n  final bool isRecoverable;        // Suggests if safe to offer a \"Retry\" button\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"connectionerrortype","__idx":18},"children":["ConnectionErrorType"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["noInternet"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Device is offline"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeout"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Request timed out"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dnsFailure"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["DNS resolution failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sslError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SSL/TLS handshake error"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpClientError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP 4xx response"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpServerError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP 5xx response"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webResourceError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["WebView resource loading error"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unknown"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uncategorized connection error"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isRecoverable"]}," to decide whether to show a \"Retry\" button to the user."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"terminationsource","__idx":19},"children":["TerminationSource"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["userDismiss"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User swiped down to dismiss the payment sheet"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["backButton"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User pressed the hardware/software back button"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["programmatic"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The checkout was closed programmatically"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectionError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A connection error closed the checkout"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout-status","__idx":20},"children":["Checkout Status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutStatus"]}," represents the current state of the checkout flow."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validating"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Input keys and devices securely checked"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ready"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verified; loading UI"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentInProgress"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User typing card details or authorizing"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentSuccessful"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment clear"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentFailed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Processing declined"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentCancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User bounced"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"platform-specific-behavior","__idx":21},"children":["Platform-Specific Behavior"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": SDK intercepts downward swipes to dismiss the payment sheet and triggers ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentTerminate"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TerminationSource.userDismiss"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": Overrides standard pop; checks if the Flow WebView overlay can go back. Returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TerminationSource.backButton"]}," until the modal is closed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"mock-mode","__idx":22},"children":["Mock Mode"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK infers mock mode from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["publicKey"]}," prefix:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Prefix"},"children":["Prefix"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Mode"},"children":["Mode"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Environment"},"children":["Environment"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Live"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Production"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mock"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Test/sandbox"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mock"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Test/sandbox"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Mock mode keys route to the sandbox backend. No real transactions are created."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Connection heuristics allow mock traffic"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simulate fake transactions without real money movement"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":23},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"invalid-order-id-format","__idx":24},"children":["Invalid Order ID format"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order_"]}," and has appropriate length."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"invalid-subscription-id-format","__idx":25},"children":["Invalid Subscription ID format"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_"]}," and has appropriate length."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mutually-exclusive-identifiers","__idx":26},"children":["Mutually exclusive identifiers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Provide either ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]},", not both. The SDK fires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," if both are set."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sdk-crashes-immediately-on-open","__idx":27},"children":["SDK crashes immediately on open"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.publicKey"]}," is correctly set with an expected prefix (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"file-upload-buttons-do-nothing","__idx":28},"children":["File upload buttons do nothing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flutter clean"]}," and rebuild. Ensure Camera and Storage permissions are explicitly granted in the platform config."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"device-forbidden-error","__idx":29},"children":["Device Forbidden Error"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rooted or jailbroken devices trigger ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkErrorType.deviceForbidden"]}," unless testing in an emulator."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security","__idx":30},"children":["Security"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK loads checkout pages in an isolated WebView. No PAN, CVV, or sensitive payment data passes through the Flutter bridge - all sensitive input is handled within the WebView's sandboxed context."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Built-in jailbreak and root detection prevents checkout on compromised devices."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To report a security vulnerability, email security@glomopay.com. Do not open a public GitHub issue for security reports."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"exports","__idx":31},"children":["Exports"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"/**\n * All public exports from package:glomopay_sdk/glomopay_sdk.dart\n */\n\n// Widget\nGlomoPayCheckout\n\n// Controller\nGlomoPayController\n\n// Configuration\nGlomoPayConfig\n\n// Payload\nGlomoPayPayload\n\n// Errors\nSdkError\nSdkErrorType\nConnectionError\nConnectionErrorType\n\n// Enums\nTerminationSource\nCheckoutStatus\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":32},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v2"},"children":["Flutter SDK v2 (Latest)"]}," - current version documentation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/migration"},"children":["Migration Guide (v1.11.x to v2.0.0)"]}," - step-by-step upgrade instructions with before/after code"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/changelog"},"children":["Changelog"]}," - all release notes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v0.0.15"},"children":["Flutter SDK v0.0.15 (Deprecated)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v0.0.13"},"children":["Flutter SDK v0.0.13 (Deprecated)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v0.0.3"},"children":["Flutter SDK v0.0.3 (Deprecated)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/react-native-sdk"},"children":["React Native SDK"]}," - GlomoPay SDK for React Native apps"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/unified-sdk"},"children":["Unified SDK (Web)"]}," - GlomoPay SDK for web apps"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payin/checkout"},"children":["Checkout overview"]}," - server-side checkout integration and signature verification"]}]}]},"headings":[{"value":"GlomoPay Flutter SDK v1 (Archived)","id":"glomopay-flutter-sdk-v1-archived","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"System Requirements","id":"system-requirements","depth":2},{"value":"Installation","id":"installation","depth":2},{"value":"Platform Setup","id":"platform-setup","depth":2},{"value":"Android","id":"android","depth":3},{"value":"iOS","id":"ios","depth":3},{"value":"Quick Start","id":"quick-start","depth":2},{"value":"Subscriptions Checkout","id":"subscriptions-checkout","depth":2},{"value":"Features","id":"features","depth":2},{"value":"API Reference","id":"api-reference","depth":2},{"value":"GlomoPayCheckout Widget","id":"glomopaycheckout-widget","depth":3},{"value":"Props","id":"props","depth":4},{"value":"GlomoPayConfig","id":"glomopayconfig","depth":3},{"value":"GlomoPayPayload","id":"glomopaypayload","depth":3},{"value":"SdkError","id":"sdkerror","depth":3},{"value":"SdkErrorType","id":"sdkerrortype","depth":4},{"value":"ConnectionError","id":"connectionerror","depth":3},{"value":"ConnectionErrorType","id":"connectionerrortype","depth":4},{"value":"TerminationSource","id":"terminationsource","depth":3},{"value":"Checkout Status","id":"checkout-status","depth":3},{"value":"Platform-Specific Behavior","id":"platform-specific-behavior","depth":2},{"value":"Mock Mode","id":"mock-mode","depth":2},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"Invalid Order ID format","id":"invalid-order-id-format","depth":3},{"value":"Invalid Subscription ID format","id":"invalid-subscription-id-format","depth":3},{"value":"Mutually exclusive identifiers","id":"mutually-exclusive-identifiers","depth":3},{"value":"SDK crashes immediately on open","id":"sdk-crashes-immediately-on-open","depth":3},{"value":"File upload buttons do nothing","id":"file-upload-buttons-do-nothing","depth":3},{"value":"Device Forbidden Error","id":"device-forbidden-error","depth":3},{"value":"Security","id":"security","depth":2},{"value":"Exports","id":"exports","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Flutter SDK v1 (Archived)","seo":{"title":"GlomoPay Flutter SDK v1 (Archived)"}},"lastModified":"2026-09-22T05:15:29.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/platform/sdk/flutter-sdk/v1","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}