React Native
Overview
The Geidea Payment SDK delivers a seamless and secure payment experience for mobile applications. Built with flexibility and ease of use in mind, our SDK empowers developers to integrate payment functionality with just a few lines of code and maximum UI customization with various presentation modes.
Key Features
GDPaymentSDK React Native Integration
A comprehensive guide for integrating the GDPaymentSDK into React Native applications for both iOS and Android platforms.
Geidea Payment SDK — React Native Integration Guide
Prerequisites
Before you start, install the required tools:
- Install Node.js 18 or later.
- Install the React Native CLI.
- Install Android Studio for Android builds.
- Install Xcode for iOS builds.
- Install Yarn or NPM.
1. Create a new React Native app
npx @react-native-community/cli init GeideaPaymentDemo
cd GeideaPaymentDemo2. Install the SDK
yarn add /path/to/geidea-payment-sdk-react-native-0.0.1.tgz3. Configure Android
3.1 Replace android/build.gradle
android/build.gradleReplace the file contents with:
buildscript {
ext {
buildToolsVersion = "35.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
ndkVersion = "27.1.12297006"
kotlinVersion = "1.9.24"
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:8.7.3")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
classpath("org.jetbrains.kotlin:compose-compiler-gradle-plugin:$kotlinVersion")
}
}
allprojects {
repositories {
google()
mavenCentral()
flatDir {
dirs "$rootDir/../node_modules/@geidea/payment-sdk-react-native/android/libs"
}
}
}
apply plugin: "com.facebook.react.rootproject"3.2 Update android/app/build.gradle
android/app/build.gradleAdd these dependencies:
dependencies {
implementation("com.facebook.react:react-android")
implementation("com.facebook.react:hermes-android")
implementation("androidx.activity:activity:1.8.0")
def composeBom = platform("androidx.compose:compose-bom:2025.08.00")
implementation(composeBom)
implementation("androidx.compose.material3:material3")
implementation("androidx.navigation:navigation-compose:2.8.5")
implementation("androidx.navigation:navigation-runtime-ktx:2.8.5")
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5")
}3.3 Create network_security_config.xml
network_security_config.xmlCreate android/app/src/main/res/xml/network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">10.0.2.2</domain>
<domain includeSubdomains="false">localhost</domain>
</domain-config>
</network-security-config>3.4 Update AndroidManifest.xml
AndroidManifest.xmlAdd android:networkSecurityConfig to the <application> tag in android/app/src/main/AndroidManifest.xml:
<application
android:networkSecurityConfig="@xml/network_security_config"
...>3.5 Add your logo resources
Add the logo that should appear in the SDK:
- Android: add the resource to
android/app/src/main/res/drawable - iOS: add the resource to your Xcode project’s Assets catalog
4. Use the SDK in App.tsx
App.tsximport { payWithGeidea } from '@geidea/payment-sdk-react-native';
import type { GeideaResult } from '@geidea/payment-sdk-react-native';
const primaryColor = '#fcba03';
const secondaryColor = '#03c6fc';
const merchantLogo = 'chalhoub';
async function startPayment() {
const result: GeideaResult = await payWithGeidea({
sessionId: 'YOUR_SESSION_ID',
merchantId: 'YOUR_APPLE_PAY_MERCHANT_ID',
language: 'en',
environment: 'prod',
region: 'egypt',
primaryColor,
secondaryColor,
merchantLogo,
});
if (result.status === 'completed') {
console.log('Payment successful:', result.result);
} else if (result.status === 'canceled') {
console.log('Payment canceled');
}
}5. Run the app on Android
Start Metro in one terminal:
npx react-native startRun the Android app in another terminal:
adb reverse tcp:8081 tcp:8081
npx react-native run-android6. Run the app on iOS
cd ios && pod install && cd ..
npx react-native run-iosCreate a Payment Session (Server-Side)
You can view the entire API reference here.
Before launching the SDK, you need to create a payment session by calling the Geidea API.
In order to create session, you’ll need to generate a signature as demonstrated below
Create Signature
- Concatenate the string of MerchantPublicKey, OrderAmount, OrderCurrency, MerchantReferenceId, timeStamp.
- Amount must be formatted with 2 decimals.
- Hash (SHA-256) the above concatenated string by Merchant API Password.
- Convert Hashed Value to Base64Str
- API Endpoint
POST https://api.merchant.geidea.net/payment-intent/api/v2/direct/sessionhttps://api.ksamerchant.geidea.net/payment-intent/api/v2/direct/sessionhttps://api.geidea.ae/payment-intent/api/v2/direct/sessionUpdated 4 days ago