Skip to content
logo
  • Products
    • Amwal Checkout
    • Merchant App
    • Merchant Control Panel
  • Pricing
  • Developers
  • About us
  • Contact Us
Sign In
BA Booking

BA Booking

2
  • BA Booking overview
  • BA Booking Installation
amwalpay woocommerce

Woocommerce

2
  • Overview
  • Woocommerce Installation
CS-Cart

CS Cart

2
  • CS-Cart Overview
  • CS CART Installation
Shopify

Shopify

2
  • Shopify Overview
  • Shopify Installation
odoo

Odoo

2
  • Odoo Overview
  • Odoo Installation
whmcs

WHMCS

2
  • WHMCS Overview
  • WHMCS Installation
Magento

Magento

2
  • Magento 2 Overview
  • Magento Installation
Opencart

Opencart

2
  • OpenCart Overview
  • Opencart Installtion
ZenCart

ZenCart

2
  • ZenCart Overview
  • Zencart Installation
Drupal

Drupal

2
  • Drupal Overview
  • Drupal Installation
PrestaShop

PrestaShop

2
  • PrestaShop Overview
  • PrestaShop Installation
Contact Form 7

Contact Form 7

2
  • Contact Form 7 Overview
  • Contact Form 7 Installation
Joomla

Joomla

2
  • Joomla Overview
  • Joomla Installation
AMWAL INTEGRATED PAYMENT LINK

Amwal Integrated Payment Link

3
  • Introduction
  • Example Code
  • Response and Hash Generation
Android SDk

Native Android SDK

3
  • Pre Requisites
  • Implementation
  • SecureHash Calculation
ios SDk

Native iOS SDK

3
  • Pre Requisites
  • Implementation
  • SecureHash Calculation
React SDk

React Native SDK

2
  • Installation
  • Configuration

AmwalPay Laravel Package

2
  • Installation
  • Configuration

SMARTBOX

3
  • Pre Requisites
  • Implementation
  • SecureHash Calculation
View Categories
  • Home
  • Developer | Amwalpay
  • AmwalPay Mobile SDKs
  • Native Android SDK
  • Implementation

Implementation

1. Session Token Generation #

First, you need to generate a session token using the following code:

val sessionToken = networkClient.fetchSessionToken(
    env = AmwalSDK.Config.Environment.UAT, // or SIT, PROD
    merchantId = "YOUR_MERCHANT_ID",
    customerId = null, // Optional
    secureHashValue = "YOUR_SECURE_HASH"
)

2. SDK Configuration #

Configure the SDK with the required parameters:

val config = AmwalSDK.Config(
    environment = AmwalSDK.Config.Environment.UAT, // or SIT, PROD
    sessionToken = sessionToken,
    currency = AmwalSDK.Config.Currency.OMR, // or other supported currencies
    amount = "1.00",
    merchantId = "YOUR_MERCHANT_ID",
    terminalId = "YOUR_TERMINAL_ID",
    locale = Locale("en"), // or "ar" for Arabic
    customerId = customerId, // Optional
    transactionType = AmwalSDK.Config.TransactionType.NFC // For NFC transactions
)

3. Starting the Payment Flow #

amwalSDK.start(
    activity = this,
    config = config,
    onResponse = { response ->
        // Handle the payment response
        when (response) {
            is AmwalSDK.Response.Success -> {
                Log.d("Payment", "Transaction successful: ${response.transactionId}")
            }
            is AmwalSDK.Response.Error -> {
                Log.e("Payment", "Transaction failed: ${response.message}")
            }
            is AmwalSDK.Response.Cancelled -> {
                Log.d("Payment", "Transaction cancelled by user")
            }
        }
    },
    onCustomerId = { customerId ->
        // Handle the customer ID
        StorageClient.saveCustomerId(context, customerId)
    }
)

3. Starting the Payment Flow #

Supported Currencies #
  • OMR (Omani Rial)

Transaction Types #

  • NFC (Near Field Communication)
    • Use TransactionType.NFC for NFC transactions
    • Requires NFC hardware support
    • Requires NFC permission in manifest
  • CARD_WALLET
    • Use TransactionType.CARD_WALLET for digital wallet transactions
    • Card-based payments
  • GOOGLE_PAY
    • Use TransactionType.GOOGLE_PAY for Google Pay transactions
    • Requires Google Pay setup

Environment Support #

  • SIT (System Integration Testing)
    • Use for initial development and testing
    • Test environment with mock data
  • UAT (User Acceptance Testing)
    • Use for pre-production testing
    • Real environment with test data
  • PROD (Production)
    • Use for live transactions
    • Real environment with real data

Security #

The SDK implements secure hash generation for API requests. Use the SecureHashUtil class to generate secure hashes:

val secureHash = SecureHashUtil.clearSecureHash(
    secretKey = "YOUR_SECRET_KEY",
    data = mutableMapOf(
        "merchantId" to merchantId,
        "customerId" to customerId
    )
)

Error Handling #

The SDK provides comprehensive error handling through callbacks. Always implement proper error handling in your application:

try {
    // SDK operations
} catch (e: AmwalSDKException) {
    when (e) {
        is AmwalSDKException.NetworkError -> {
            // Handle network-related errors
            showErrorDialog("Network connection error")
        }
        is AmwalSDKException.InvalidConfiguration -> {
            // Handle configuration errors
            showErrorDialog("Invalid configuration")
        }
        is AmwalSDKException.NFCNotAvailable -> {
            // Handle NFC-related errors
            showErrorDialog("NFC is not available")
        }
        else -> {
            // Handle other errors
            showErrorDialog("An unexpected error occurred")
        }
    }
}

Getting the SDK Session Token and Calculation of Secure Hash to call the API #

Getting the SDK Session Token and Calculation of Secure Hash to call the API #

Environment URLs #

Stage #

  • Base URL: https://test.amwalpg.com:14443
  • Endpoint: Membership/GetSDKSessionToken

Production #

  • Base URL: https://webhook.amwalpg.com
  • Endpoint: Membership/GetSDKSessionToken

Description #

This endpoint retrieves the SDK session token.

Headers #

Header Value

Content Typeapplication/json

Sample Request #

{
  "merchantId": 22914,
  "customerId": "ed520b67-80b2-4e1a-9b86-34208da10e53",
  "requestDateTime": "2025-02-16T12:43:51Z",
  "secureHashValue": "AFCEA6D0D29909E6ED5900F543739975B17AABA66CF2C89BBCCD9382A0BC6DD7"
}   

Sample Response #

{
  "success": true,
  "message": "Success",
  "data": {
    "sessionToken": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..3yAPVR3evEwvIdq808M2uQ..."
  }
}
Updated on August 25, 2025

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest
Pre RequisitesSecureHash Calculation
Table of Contents
  • 1. Session Token Generation
  • 2. SDK Configuration
  • 3. Starting the Payment Flow
  • 3. Starting the Payment Flow
    • Supported Currencies
  • Transaction Types
  • Environment Support
  • Security
  • Error Handling
  • Getting the SDK Session Token and Calculation of Secure Hash to call the API
  • Getting the SDK Session Token and Calculation of Secure Hash to call the API
  • Environment URLs
    • Stage
    • Production
  • Description
    • Headers
  • Sample Request
  • Sample Response

Secure. Seamless – Powering Payments for Every Business.

Sign Up
Support

4th Floor, Majan Tower Building
North Al Ghubrah, P.O. Box 233, P.C 118
Muscat, Sultanate of Oman

: support@amwal-pay.com

📞 : +96824121845

Resources
  • Developers
  • Careers
Company
  • About us
  • Contact Us
  • Contact Sales
  • Partners

2025 © AmwalPay. All Rights Reserved.

  • Terms & Conditions
  • Privacy Policy