AePS Gateway Integration (Android)

Prerequisites

  • Minimum Android SDK version of your app should be 21 (Android Lollipop 5.0) or later.

STEP 1: Add library in your Android project

Add jitpack in your root build.gradle at the end of repositories:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Add Eko AePS Gateway library to your app build.gradle file at the end of other dependencies:

Dependencies {
  ...
  implementation 'com.github.ekoindia:gateway-android-sdk:1.2.1'
}

STEP 2: Configure & Launch AePS Activity

int AEPS_REQUEST_CODE = 10923;
// Set a value to AEPS_REQUEST_CODE

Intent intent = new Intent(this, EkoPayActivity.class);
Bundle bundle = new Bundle();

//Initialize all unknown variables and replace all dummy values
bundle.putString("environment", "uat");
bundle.putString("product","aeps");
bundle.putString("secret_key_timestamp", secret_key_timestamp);
bundle.putString("secret_key", secret_key);
bundle.putString("developer_key", "becbbce45f79c6f5109f848acd540567");
bundle.putString("initiator_id", "9962981729");
bundle.putString("callback_url", callback_url);
bundle.putString("callback_url_custom_headers", callback_url_custom_headers); //optional
bundle.putString("callback_url_custom_params", callback_url_custom_params); //optional
bundle.putString("user_code", "20810200");
bundle.putString("initiator_logo_url", initiator_logo_url);
bundle.putString("partner_name" , "PARTNER Name INC");
bundle.putString("language" , "en");

intent.putExtras(bundle);
startActivityForResult(intent, AEPS_REQUEST_CODE);

For description on above parameters, check section Configuration Parameters

🚧

Callback custom Headers and Params:

callback_ul_custom_headers and callback_url_custom_params must be first converted into onject in JAVA and then convert this object into string and then pass along with other parameters

STEP 3: Handle Final Response

AePS library uses the callback URL to send the response of every transaction.

Read post-transaction confirmation section for understanding on how to handle response using callback URL

Capture response of every transaction from callback URL

When the user navigates from AePS Activity to partner’s Activity two cases can occur

Case 1: AePS transaction is performed by the user on AePS SDK
Lastest transaction details will be sent to partner’s Activity

Case 2: No AePS transaction is performed by the user on AePS SDK

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (requestCode == AEPS_REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) { //user taps CLOSE button after transaction -- case 1
            String response = data.getStringExtra("result");
            //--------- response is transaction data
        } else if(resultCode == Activity.RESULT_CANCELED) { // user presses back button
            if (data == null) {
                //------ If user pressed back without transaction -- case 2
            } else {
                String response = data.getStringExtra("result");
                if (response!=null && !response.equalsIgnoreCase("")) {
                    //------ If there is some error in partner parameters, response is that error
                    //------ when user performs the transaction, response is transaction data -- case 1
                } else {

                }
            }
        }
    }
}

📘

This SDK is tested and working fine till Android 11

❗️

Changes for Integration on Android 11 :

Project Updates

######################################################################################################## #

Updates :

SDK versions -
compileSdkVersion 30
minSdkVersion 21
targetSdkVersion 30

Gradle Versions -
distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip (on gradle.properties)
classpath 'com.android.tools.build:gradle:4.1.3' (on project level gradle)

######################################################################################################## #

Solution :

Add query parameter to enable rd services in android 11 devices

<intent>
    <action android:name="android.intent.action.SEND" />
    <data android:mimeType="image/jpeg" />
</intent>

🚧

For the android integration, we recommend you to integrate the above SDK mentioned as per document and do not create a webview wrapper for our website version in order to avoid any inconsitent issues.

We do not provide any support in case you integrate the webview instead of integrating the SDK

Production Migration

On migration to the production environment set environment parameter to "production" and make sure that all values used are relevant to production environment. Make sure to check AePS production checklist