{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-platform/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"GlomoPay Android SDK v1","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-android-sdk-v1","__idx":0},"children":["GlomoPay Android SDK v1"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Official Android SDK for integrating GlomoPay payment checkout flows into your native Android applications."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/android-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":["Android SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["minSdk 24 (Android 7.0+)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kotlin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 2.0"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gradle"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 8.0"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"installation","__idx":3},"children":["Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK is published to Maven Central."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Gradle (Kotlin DSL):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"dependencies {\n    implementation(\"com.glomopay:glomo-android-sdk:1.0.0\")\n}\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Gradle (Groovy DSL):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"groovy","header":{"controls":{"copy":{}}},"source":"dependencies {\n    implementation 'com.glomopay:glomo-android-sdk:1.0.0'\n}\n","lang":"groovy"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"quick-start","__idx":4},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"import android.app.Activity\nimport android.util.Log\nimport com.glomopay.sdk.android.*\n\nclass CheckoutActivity : Activity(), GlomoPayListener {\n\n    fun startPayment() {\n        val config = GlomoPayConfig(\n            publicKey = \"live_your_public_key\",\n            orderId = \"order_your_order_id\",\n        )\n        GlomoPaySdk.startCheckout(this, config, this)\n    }\n\n    override fun onPaymentSuccess(payload: GlomoPayPayload) {\n        // Verify signature server-side before fulfilling the order\n        val orderId = payload.orderId\n        val paymentId = payload.paymentId\n        val signature = payload.signature\n    }\n\n    override fun onPaymentFailure(payload: GlomoPayPayload) {\n        // Handle payment failure\n    }\n\n    override fun onSdkError(errors: List<SdkError>) {\n        // Handle validation or device compliance errors\n        errors.forEach { error ->\n            Log.e(\"GlomoPay\", \"${error.type}: ${error.message}\")\n        }\n    }\n\n    override fun onConnectionError(error: ConnectionError) {\n        // Handle network / WebView errors\n        if (error.isRecoverable) {\n            // Retry or show retry UI\n        }\n    }\n\n    override fun onPaymentTerminate(source: TerminationSource) {\n        // User dismissed checkout\n    }\n\n    override fun onEvent(name: String, payload: Map<String, Any?>) {\n        // Diagnostic / analytics events (optional)\n    }\n}\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AndroidManifest.xml"]}," declares ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INTERNET"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ACCESS_NETWORK_STATE"]},", and the checkout activity automatically. These merge into your app's manifest — no additional manifest configuration is required."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"subscriptions-checkout","__idx":5},"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"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"val config = GlomoPayConfig(\n    publicKey = \"live_your_public_key\",\n    subscriptionId = \"sub_your_subscription_id\",\n)\nGlomoPaySdk.startCheckout(this, config, this)\n","lang":"kotlin"},"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 type detection"]},{"$$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":["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":"Heading","attributes":{"level":2,"id":"features","__idx":6},"children":["Features"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Standard, LRS, and Subscriptions"]}," checkout flows"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Automatic order type detection"]}," based on API response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WebView-based secure checkout"]}," - payment data never passes through merchant code"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Payment callbacks"]}," with signature verification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Device security compliance"]}," - root and debugger detection for live keys"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mock mode"]}," for testing with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}," key prefixes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connection error handling"]}," with recovery hints (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isRecoverable"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["File upload support"]}," via system document picker"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ProGuard/R8 compatible"]}," - consumer rules included automatically"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-reference","__idx":7},"children":["API Reference"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaysdk","__idx":8},"children":["GlomoPaySdk"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"object GlomoPaySdk {\n    fun startCheckout(\n        context: Context,\n        config: GlomoPayConfig,\n        listener: GlomoPayListener,\n        orderType: String = \"auto\"\n    )\n}\n","lang":"kotlin"},"children":[]},{"$$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":"Parameter"},"children":["Parameter"]},{"$$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":["context"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Context"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Android Activity or application context"]}]},{"$$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":["Checkout configuration"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["listener"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GlomoPayListener"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Callback listener for payment events"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"auto\""]}," (default, recommended), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"standard\""]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"lrs\""]},". Auto-detects from API response."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopayconfig","__idx":9},"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":"Parameter"},"children":["Parameter"]},{"$$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":["publicKey"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$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":["test_"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]},"."]}]},{"$$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":["Conditional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Order ID (starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order_"]},"). Required unless using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]},"."]}]},{"$$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":["Conditional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Subscription ID (starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_"]},"). Mutually exclusive with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]},"."]}]}]}]}]},{"$$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":"glomopaylistener","__idx":10},"children":["GlomoPayListener"]},{"$$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":"Callback"},"children":["Callback"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameters"},"children":["Parameters"]},{"$$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":["onPaymentSuccess"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload: GlomoPayPayload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment completed successfully. Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signature"]}," server-side before fulfilling."]}]},{"$$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":["payload: GlomoPayPayload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment failed."]}]},{"$$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":["errors: List<SdkError>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validation errors (invalid config) or device compliance failures. Called instead of opening checkout."]}]},{"$$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":["error: ConnectionError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network, DNS, SSL, or HTTP errors during checkout. Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isRecoverable"]}," for retry hint."]}]},{"$$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":["source: TerminationSource"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User dismissed checkout (close button, back button) or SDK closed it. Default no-op."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onEvent"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name: String, payload: Map<String, Any?>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Diagnostic lifecycle events. Default no-op."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"glomopaypayload","__idx":11},"children":["GlomoPayPayload"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"data class GlomoPayPayload(\n    val orderId: String,\n    val paymentId: String? = null,\n    val signature: String? = null,\n)\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Merchant responsibility:"]}," Always verify the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signature"]}," on your server using your secret key before fulfilling an order. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payin/checkout#steps-to-integrate-checkout"},"children":["Checkout overview"]}," for verification instructions."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sdkerror","__idx":12},"children":["SdkError"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"enum class SdkErrorType {\n    VALIDATION_ERROR,\n    DEVICE_FORBIDDEN,\n    NETWORK_ERROR,\n    UNKNOWN,\n}\n\ndata class SdkError(\n    val type: SdkErrorType,\n    val message: String,\n    val field: String? = null,\n)\n","lang":"kotlin"},"children":[]},{"$$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":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When"},"children":["When"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATION_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid public key, order ID, or subscription ID format. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," indicates which failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEVICE_FORBIDDEN"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Root or debugger detected on a device using a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]}," key."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NETWORK_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failed to fetch order details before opening checkout."]}]},{"$$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":["Unexpected error."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"connectionerror","__idx":13},"children":["ConnectionError"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"enum class ConnectionErrorType {\n    NO_INTERNET,\n    DNS_FAILURE,\n    TIMEOUT,\n    SSL_ERROR,\n    HTTP_CLIENT_ERROR,\n    HTTP_SERVER_ERROR,\n    WEB_RESOURCE_ERROR,\n    UNKNOWN,\n}\n\ndata class ConnectionError(\n    val type: ConnectionErrorType,\n    val message: String,\n    val statusCode: Int? = null,\n    val failedUrl: String? = null,\n    val isRecoverable: Boolean,\n)\n","lang":"kotlin"},"children":[]},{"$$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":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Recoverable"},"children":["Recoverable"]},{"$$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":["NO_INTERNET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$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":["DNS_FAILURE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$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":["TIMEOUT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$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":["SSL_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SSL/TLS handshake failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTP_CLIENT_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$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":["HTTP_SERVER_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$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":["WEB_RESOURCE_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["WebView resource loading failed"]}]},{"$$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":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unexpected error"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"terminationsource","__idx":14},"children":["TerminationSource"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"enum class TerminationSource {\n    USER_DISMISS,\n    BACK_BUTTON,\n    PROGRAMMATIC,\n    CONNECTION_ERROR,\n}\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"platform-behavior","__idx":15},"children":["Platform Behavior"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Checkout launches as a new Activity (fullscreen, portrait)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Back button dismisses the checkout and fires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentTerminate(BACK_BUTTON)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Close button fires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPaymentTerminate(USER_DISMISS)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The checkout Activity is declared in the SDK's manifest and merges automatically — merchants do not need to declare it"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"device-security-compliance","__idx":16},"children":["Device Security Compliance"]},{"$$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":"Scenario"},"children":["Scenario"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Behavior"},"children":["Behavior"]}]}]},{"$$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_"]}," key + rooted/debuggable device"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEVICE_FORBIDDEN"]},". Checkout does not open."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]}," key + clean device"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Checkout proceeds normally"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}," key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Compliance checks skipped entirely"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"mock-mode","__idx":17},"children":["Mock Mode"]},{"$$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":"Key prefix"},"children":["Key prefix"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Mode"},"children":["Mode"]},{"$$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":["live_"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Real payments. Device compliance enforced."]}]},{"$$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":["Test"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mock checkout. No real transactions. Compliance skipped."]}]},{"$$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":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"input-validation","__idx":18},"children":["Input Validation"]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Rule"},"children":["Rule"]}]}]},{"$$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":["Length > 5. Must start with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]},"."]}]},{"$$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":["Length > 6. Must start with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order_"]},"."]}]},{"$$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":["Length > 4. Must start with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," must be provided."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validation errors fire ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATION_ERROR"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," that failed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"proguard--r8","__idx":19},"children":["ProGuard / R8"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK includes consumer ProGuard rules that are applied automatically. Merchants do not need to add any ProGuard configuration. R8 full mode is safe."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":20},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"onsdkerror-fires-immediately","__idx":21},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSdkError"]}," fires immediately"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["publicKey"]}," format is valid and exactly one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriptionId"]}," is provided."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"device_forbidden-in-development","__idx":22},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEVICE_FORBIDDEN"]}," in development"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test_"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mock_"]}," key prefix during development."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout-opens-but-shows-blankloading-screen","__idx":23},"children":["Checkout opens but shows blank/loading screen"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check network connectivity. Verify the order exists and is in a valid state."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"onconnectionerror-with-ssl_error","__idx":24},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onConnectionError"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SSL_ERROR"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ensure the device's system time is correct. Check for corporate proxy or certificate pinning issues."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security","__idx":25},"children":["Security"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payment data is handled within a secure, isolated WebView — it never passes through the merchant's application code"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["JavaScript bridge communication is limited to payment lifecycle events; no PAN, CVV, or sensitive payment data crosses the bridge"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Root and debugger detection blocks checkout on compromised devices (live keys only)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["File access is disabled in the WebView; only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["content://"]}," URIs from the system document picker are allowed"]}]},{"$$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":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":26},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/android-sdk/changelog"},"children":["Changelog"]}," - all release notes"]},{"$$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/flutter-sdk"},"children":["Flutter SDK"]}," - GlomoPay SDK for Flutter 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 Android SDK v1","id":"glomopay-android-sdk-v1","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"System Requirements","id":"system-requirements","depth":2},{"value":"Installation","id":"installation","depth":2},{"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":"GlomoPaySdk","id":"glomopaysdk","depth":3},{"value":"GlomoPayConfig","id":"glomopayconfig","depth":3},{"value":"GlomoPayListener","id":"glomopaylistener","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":"Platform Behavior","id":"platform-behavior","depth":2},{"value":"Device Security Compliance","id":"device-security-compliance","depth":2},{"value":"Mock Mode","id":"mock-mode","depth":2},{"value":"Input Validation","id":"input-validation","depth":2},{"value":"ProGuard / R8","id":"proguard--r8","depth":2},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"onSdkError fires immediately","id":"onsdkerror-fires-immediately","depth":3},{"value":"DEVICE_FORBIDDEN in development","id":"device_forbidden-in-development","depth":3},{"value":"Checkout opens but shows blank/loading screen","id":"checkout-opens-but-shows-blankloading-screen","depth":3},{"value":"onConnectionError with SSL_ERROR","id":"onconnectionerror-with-ssl_error","depth":3},{"value":"Security","id":"security","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Android SDK v1","seo":{"title":"GlomoPay Android SDK v1"}},"lastModified":"2026-09-22T05:15:29.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/platform/sdk/android-sdk/v1","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}