{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-platform/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"GlomoPay Flutter SDK v0.0.13","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-v0013","__idx":0},"children":["GlomoPay Flutter SDK v0.0.13"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deprecated"]}," - This documentation is for Flutter SDK ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["v0.0.13"]},", which is past end of life and is no longer supported. Versions ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.3"]}," and below are deprecated."," ","For the latest version, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v2"},"children":["Flutter SDK v2"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The GlomoPay Flutter SDK provides a seamless, secure, and customizable payment checkout experience for your Flutter applications. Supports all Glomo payment flows (like 3DS auth or bank redirects), built-in security compliance checks, and error handling."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A GlomoPay account with API keys (public key starting with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An order ID generated from your server via the GlomoPay API"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"system-requirements","__idx":2},"children":["System Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Flutter 3.0 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dart 2.17 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Android: minSdkVersion 21 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["iOS: iOS 13.0 or higher"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"installation","__idx":3},"children":["Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["glomopay_sdk"]}," to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pubspec.yaml"]}," dependencies:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"dependencies:\n  flutter:\n    sdk: flutter\n  glomopay_sdk: ^0.0.13\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then run:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"flutter pub get\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Import it in your Dart code:"]},{"$$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 required permissions in your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["android/app/src/main/AndroidManifest.xml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <!-- Required for the checkout flow -->\n    <uses-permission android:name=\"android.permission.INTERNET\"/>\n\n    <!-- Required if you need users to upload images/documents during checkout -->\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</manifest>\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 keys to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ios/Runner/Info.plist"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<dict>\n    <!-- Required for camera/file uploads during the checkout process -->\n    <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</dict>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"quick-start","__idx":7},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Import the library and display the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayCheckout"]}," widget:"]},{"$$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":"features","__idx":8},"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) seamlessly."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Robust Security"]}," - Built-in jailbreak and root detection to ensure transactions happen on secure devices."]},{"$$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"]}," - Handles connection drops, DNS issues, HTTP errors, and validation mistakes gracefully."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Native Support"]}," - Full support for Android and iOS native features like the camera and file pickers required by certain payment methods."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mock Mode"]}," - Easy testing with test keys (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_..."]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_..."]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-reference","__idx":9},"children":["API Reference"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaycheckout-widget","__idx":10},"children":["GlomoPayCheckout Widget"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The main checkout widget. Embed it in your widget tree"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["to present the GlomoPay payment UI."," ","*/"]}]},{"$$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":["The 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 the payment is completed 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 the transaction gets declined 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 when an SDK-level error occurs (e.g., validation, or 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 if there is an internet drop, DNS failure, or severe 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 the user dismisses the modal or hits back."]}]},{"$$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":["Whether the widget should automatically call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentTerminate"]}," upon encountering a critical connection error. Defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopayconfig","__idx":11},"children":["GlomoPayConfig"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Configuration object passed to GlomoPayCheckout."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contains keys, order info, and environment settings."," ","*/"]}]},{"$$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 (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_..."]},", ",{"$$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":["The unique tracking ID generated for this transaction on your server."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaypayload","__idx":12},"children":["GlomoPayPayload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Returned via onPaymentSuccess and onPaymentFailure callbacks."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contains the order reference and optional verification data."," ","*/"]}]},{"$$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":"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":["orderId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The system ID of the order."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The transaction reference, if generated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signature"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The validation signature hash for backend verification."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sdkerror","__idx":13},"children":["SdkError"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Represents an SDK-level error such as validation failure"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["or a forbidden device condition."," ","*/"]}]},{"$$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":"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":["type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkErrorType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One of: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceForbidden"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["networkError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unknown"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A human-readable description of the constraint that failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The field name (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"orderId\""]},") that caused the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationError"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"connectionerror","__idx":14},"children":["ConnectionError"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Represents a network or connectivity error encountered"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["during 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":"Property"},"children":["Property"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$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":["type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConnectionErrorType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One of: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["noInternet"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeout"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dnsFailure"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sslError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpClientError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpServerError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webResourceError"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unknown"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Extracted error description or HTTP status phrase."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["errorCode"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["int?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The internal WebKit/Android error code."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["statusCode"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["int?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP status code, if applicable."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isRecoverable"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bool"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Suggests if it is safe to offer a \"Retry\" button."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"terminationsource","__idx":15},"children":["TerminationSource"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Indicates how the user exited the checkout flow"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["before completing payment."," ","*/"]}]},{"$$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":["The user swiped down or tapped a close button to dismiss the checkout."]}]},{"$$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":["The user pressed the Android back button to exit the checkout."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout-status","__idx":16},"children":["Checkout Status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["/**"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Internal lifecycle states of the checkout session."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Observable via the checkout lifecycle."," ","*/"]}]},{"$$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 are 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 the 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":["The user is currently entering 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 cleared."]}]},{"$$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":["The user exited before completing."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"platform-specific-behavior","__idx":17},"children":["Platform-Specific Behavior"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS Swiping"]}," - The SDK intercepts iOS downward swipe gestures 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 Back Button"]}," - Automatically overrides standard pop. First checks if the Flow WebView overlay (e.g., 3DS bank page) can go back. Does so accordingly until the modal is closed, returning ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TerminationSource.backButton"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"mock-mode","__idx":18},"children":["Mock Mode"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Using a public key that starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}," shifts the SDK into mock mode."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this mode:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Connection heuristics allow mock traffic."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You can simulate fake transactions without real money movement."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":19},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Invalid Order ID format"]}," - Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"order_\""]}," and has appropriate length."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SDK crashes immediately on open"]}," - Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.publicKey"]}," is correctly set and starts with the expected prefix (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["File upload buttons do nothing"]}," - Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flutter clean"]}," and ensure Camera/Storage permissions were explicitly granted in the native AndroidManifest and Info.plist layers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Device Forbidden (Error)"]}," - A root/jailbroken device will immediately trigger ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]},". Test within your emulator."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security","__idx":20},"children":["Security"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The SDK performs jailbreak/root detection at startup. Compromised devices trigger ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkErrorType.deviceForbidden"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["All checkout traffic is served over HTTPS. SSL errors are surfaced via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onConnectionError"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Public keys are validated before any network request is made."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payment credentials never pass through your application code - they are handled entirely within the secure WebView."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"exports","__idx":21},"children":["Exports"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK exports the following from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["package:glomopay_sdk/glomopay_sdk.dart"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayCheckout"]}," - The main checkout widget."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayConfig"]}," - Configuration model."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayPayload"]}," - Payment result payload."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkError"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkErrorType"]}," - SDK error model and type enum."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConnectionError"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConnectionErrorType"]}," - Connection error model and type enum."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TerminationSource"]}," - Enum for checkout exit source."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":22},"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)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/v1"},"children":["Flutter SDK v1 (Archived)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/flutter-sdk/changelog"},"children":["Changelog"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/react-native-sdk"},"children":["React Native SDK"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/unified-sdk"},"children":["Unified SDK (Web)"]}]}]}]},"headings":[{"value":"GlomoPay Flutter SDK v0.0.13","id":"glomopay-flutter-sdk-v0013","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":"Features","id":"features","depth":2},{"value":"API Reference","id":"api-reference","depth":2},{"value":"GlomoPayCheckout Widget","id":"glomopaycheckout-widget","depth":3},{"value":"GlomoPayConfig","id":"glomopayconfig","depth":3},{"value":"GlomoPayPayload","id":"glomopaypayload","depth":3},{"value":"SdkError","id":"sdkerror","depth":3},{"value":"ConnectionError","id":"connectionerror","depth":3},{"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":"Security","id":"security","depth":2},{"value":"Exports","id":"exports","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Flutter SDK v0.0.13 (Deprecated)","seo":{"title":"GlomoPay Flutter SDK v0.0.13"}},"lastModified":"2026-09-22T05:15:29.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/platform/sdk/flutter-sdk/v0.0.13","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}