search

Android to Android ECR

Overview

This SDK serves as an interface between the merchant’s Android Billing POS (BPOS) system and the Paytm EDC terminal. If the merchant’s BPOS needs to establish a wired connection with the Paytm EDC device, the SDK must be integrated into the BPOS application. Once integrated, the BPOS can invoke SDK methods to perform actions such as initiating a payment request, checking payment status, initiating a void transaction, and printing receipts.

The SDK handles the complete communication workflow with the EDC terminal — including sending payment requests, receiving status responses, and relaying the final response back to the BPOS application.

Download SDK & Sample app

Follow this link to download the sample android app source code which contains the ecr sdk as well as sample code for usage of all the api's provided in the sdk.

System Requirements

 

 


S. No. 

POS Operating System(s)

EDC Device(s) Supported

Language

Bpos Supported

Connection Type

1. Android

PAX A910, Pax A50, Pax IM30, Pax IM25
Ingenico DX8000 (Android)

Java / Kotlin

Sunmi K2_Mini,

Android Computer

USB

2.  Android 

Pax IM25, Pax IM30

Java / Kotlin

Android Computer

RS232

 

Other requirements

  1. Some Android devices have a setting named OTG which is kept OFF by default. The OTG settings is not an standard Android setting and not found in all the Android devices. If the POS device has such a setting, it should first manually be turned ON for this SDK to be able to connect to the DQR device.

System Overview

Connection Flow overview

For merchants using a USB wired connection:

The BPOS application must manage the necessary USB permissions required to control the EDC terminal. This permission must be re-acquired each time the Paytm device is disconnected (due to cable removal, device reboot, etc.).

When the billing POS application invokes the connect method, the SDK checks whether an EDC device is connected. If it is, the SDK verifies whether the user has already granted permission to manage the device.

  • If permission has been granted, the SDK attempts to open a communication channel with the EDC device and updates the listener with the connection status.

  • If the device is detected but permission hasn’t been granted yet, the SDK prompts the user for permission. Upon approval, the SDK proceeds to establish the connection. If the user denies the request, the listener is notified accordingly.

  • If the EDC device is not connected at the time the connect method is called but gets connected later, the system notifies the SDK via a broadcast receiver. The SDK will then initiate the same connection process.

Once the SDK successfully establishes the connection with the EDC device, it can be used to facilitate communication with the device.

For USB-based wired connections, the BPOS application must manage the necessary USB permissions required to control the EDC terminal. This permission must be re-acquired each time the Paytm device is disconnected (due to cable removal, device reboot, etc.).

 

For merchants using a RS232 wired connection:

The BPOS must specify the port number when initializing the SDK. If the port number is not provided, the SDK will attempt to auto-detect and connect to an available port, but this process may take additional time.

How to use the SDK

SDK setup :- 

Add the AndroidECRSdk-release@x.y.z.aar file in your app module's lib folder and add the following dependencies in your app's gradle file.

dependencies {
    implementation fileTree(dir: "libs", include: ["*.aar"])
    implementation 'com.google.code.gson:gson:2.9.1'
}

Proguard Entry :- 

-keep class com.paytm.androidecrsdk.** { *; }
-keep interface com.paytm.androidecrsdk.*{*;}
-keep enum com.paytm.androidecrsdk.*{*;}
 

SDK Initialisation :- 

Initialise the SDK object(preferably in onCreate() method of your Application class, so that it's accessible to all the components in your app)

@Override
public void onCreate() {
    super.onCreate();
    payments = PaytmPayments.with(this);
    payments.init(new Config.Builder()
            .setStatusCheckOnSaleRequestEnabled(true).build());
}

If connection type is RS232 then add below method in payments object above
payments.setConnectionParams(portName, ConnectionType.RS232);
 e.g. portName value is "/dev/ttyS2"

Config is used for library to configure how sales status is received. Please refer to Config Params.

Config Params :
 

/**
 * If the statusCheckOnSaleRequestEnabled flag is true then the sdk will keep checking the status of the SALE
 * transaction at regular interval(statusCheckIntervalSeconds) after initial delay of statusCheckStartSeconds and
 * till saleRequestTimeoutSeconds.
 * default value is false
 */
private final boolean statusCheckOnSaleRequestEnabled;
/**
 * Timeout for the SALE request in case {@link #statusCheckOnSaleRequestEnabled} is true
 * default value is default value is
 * {@link com.paytm.androidecrsdk.constants.ConfigConstants#DEFAULT_SALE_REQUEST_TIMEOUT_IN_SECONDS}
 * the minimum value acceptable is {@link com.paytm.androidecrsdk.constants.ConfigConstants#MIN_SALE_REQUEST_TIMEOUT_IN_SECONDS}
 */
private final int saleRequestTimeoutSeconds;
/**
 * The initial delay after which the sdk will start checking the status of the SALE response , in case
 * {@link #statusCheckOnSaleRequestEnabled} is true
 * default value is {@link com.paytm.androidecrsdk.constants.ConfigConstants#DEFAULT_STATUS_CHECK_START_SECONDS}
 * the minimum value acceptable is {@link com.paytm.androidecrsdk.constants.ConfigConstants#MIN_STATUS_CHECK_START_SECONDS}
 */
private final int statusCheckStartSeconds;
/**
 * The interval at which the SDK will keep checking the status of the SALE transaction, in case
 * {@link #statusCheckOnSaleRequestEnabled} is true
 * default value is {@link com.paytm.androidecrsdk.constants.ConfigConstants#DEFAULT_STATUS_CHECK_INTERVAL_SECONDS}
 * the minimum value acceptable is {@link com.paytm.androidecrsdk.constants.ConfigConstants#MIN_STATUS_CHECK_INTERVAL_SECONDS}
 */
private final int statusCheckIntervalSeconds;

Handling the connection state (Only for USB Connection) :- 

Once the openConnection() method of the SDK has been called and the connection process between EDC device and BPOS device has been started,
the SDK will call the onStatusChange() method of the Merchant's BPOS app to inform the Merchant's POS app about the updated connection
state(as it changes). The BPOS can keep track of the connection state using this callback.

*****************************************************************************************
payments.setDeviceStateListener(this);

*****************************************************************************************
@Override
public void onStatusChange(DeviceStateCode deviceStateCode) {
    Toast.makeText(this, deviceStateCode.name(), Toast.LENGTH_SHORT).show();
}

*****************************************************************************************

To connect manually :-
 

*****************************************************************************************
payments.connect();

*****************************************************************************************

To disconnect :-
 

*****************************************************************************************
payments.disconnect();

*****************************************************************************************

To check if the device is connected :-
 

*****************************************************************************************
payments.isConnected();

*****************************************************************************************

Sending Request :- 

Passing a unique requestId with every new API call is mandatory, otherwise abnormal behaviour can be observed, as the SDK uses this requestId to 
manage the lifecycle of the request.

PrintRequest.Builder builder = new PrintRequest.Builder()
        .setMerchantId(merchantId)
        .setOrderId(orderId);
PrintRequest printRequest = builder.build();
printRequestId = String.valueOf(System.currentTimeMillis());
Request<PrintRequest> request = Request.of(printRequest, printRequestId);
payments.doPrint(request, this);

Handling Response :- 

@Override
public void onResponse(Response<? extends BaseResponse> response) {
    if (saleRequestId.equals(response.getRequestId())) {
        handleSaleResponse(response);
    } else if (statusCheckRequestId.equals(response.getRequestId())) {
        handleStatusCheckResponse(response);
    } else if (cancelRequestId.equals(response.getRequestId())) {
        handleCancelResponse(response);
    } else if (connectionCheckRequestId.equals(response.getRequestId())) {
        handleConnectionCheckResponse(response);
    } else if (printRequestId.equals(response.getRequestId())) {
        handlePrintResponse(response);
    } else if (voidRequestId.equals(response.getRequestId())) {
        handleVoidResponse(response);
    }
}

private void handleConnectionCheckResponse(Response<? extends BaseResponse> response) {
    if (response.getStatus() == Response.Status.ERROR) {
        // Check errorType and take action
        Log.d(TAG, String.format("Error occurred in Connection Check request with requestId : %s, error : %s",
                response.getRequestId(),
                response.getError().getMsg()));
    } else {
        Log.d(TAG, "EDC device is connected and ready to communicate");
    }
}

API's

Following are the available APIs with requests and response params.

Sale API:

/**
 * Start a new Sale transaction on the connected EDC device. If the EDC device is not connected
 * a Timeout error will be thrown. If the request parameters are valid and the device is not
 * busy with another transaction then a SALE transaction will be initiated on the device.
 *
 * @param request          Sale Request
 * @param responseListener A listener which will listen for the response
 * @see Config#isStatusCheckOnSaleRequestEnabled()
 * @see Config#getStatusCheckStartSeconds()
 * @see Config#getStatusCheckIntervalSeconds()
 * @see Config#getSaleRequestTimeoutSeconds()
 * If the statusCheckOnSaleRequestEnabled flag is true then the sdk will keep checking the
 * status of the SALE transaction at regular interval(statusCheckIntervalSeconds) after initial
 * delay of statusCheckStartSeconds and till saleRequestTimeoutSeconds. And in this case the
 * response returned will be of the type
 * {@link com.paytm.androidecrsdk.model.response.StatusCheckResponse}
 * <p>
 * If the statusCheckOnSaleRequestEnabled is false, then sdk will immediately return
 * the response of the type {@link com.paytm.androidecrsdk.model.response.SaleResponse} ,
 * this response will only give information whether the SALE transaction was initiated on the
 * device or not. And in this case the calling app needs to call the
 * @see #doStatusCheck(Request, ResponseListener) API to know the final status of the SALE
 * transaction on the device
 * <p>
 * If the device does not initiate the SALE transaction due to any reason, then the response
 * of the type {@link com.paytm.androidecrsdk.model.response.SaleResponse} will immediately
 * be returned to the calling App
 * @see SaleRequest
 * @see com.paytm.androidecrsdk.model.response.SaleResponse
 * @see com.paytm.androidecrsdk.model.response.StatusCheckResponse
 */
@Keep
void doSale(@NonNull Request<SaleRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Request Params :-
/**[Optional]
 * Paytm MID
 */
private final String merchantId;
/**[Mandatory]
 * Unique order Id for every new SALE order 
 */
private final String orderId;
/**[Mandatory]
 * PayMode,'ALL', 'CARD' or 'QR'
 *
 * @see RequestPayMode
 */
private final String paymentMode;
/**[Optional]
 * CardReadMode,'ALL', 'SWIPE', 'TAP' or 'INSERT'
 *
 */
private final String cardReadMode;
/**[Mandatory]
 * Amount in Paise for the SALE transaction
 * eg for Rs. 1 transaction the amount will be : 100
 */
private final String amount;
/**[Optional]
 * Sub wallet param, so that user can pay through different sub-wallets associated with his/her Paytm account
 * The format should be : "FOOD:2000|GIFT:1000"
 * All the amounts are in paise
 *
 * @see com.paytm.androidecrsdk.model.SubWalletType for the types of Sub-wallets supported
 */
private final String subWalletInfo;
/**[Optional]
 * Any number of extra key value pair that needs to be passed in the SALE request form the EDC device to the Paytm
 * server can be passed in {@link android.net.Uri} uri format in this parameter
 * If this parameter is not in a valid uri form, then it might be ignored by the device
 * Now you can pass EMI fields in extendInfo to initiate sale e.g. brandId, modelId, ean, phoneNumber, invoiceNumber, imei, emiTenures[optional]
 * eg :- "extendInfo"= "extendInfo://values?productValidationValue=12764874894894898&
 * merchantTxnId=82938938983&caNumber=34567777&brandId=1707&modelId=43LF513A&ean=6666abCD&phoneNumber=9824871264&invoiceNumber=12347877&imei=199888#887&emiTenures=3,6"
 * To complete the NTB EMI transaction, you can pass transactionSourceType=NTB_QR_VERIFICATION in extendInfo and paymentMode must be CARDLESS.
 * eg :- "extendInfo://values?transactionSourceType=NTB_QR_VERIFICATION" and "paymentMode":"CARDLESS"
 */
private final String extendInfo;
/**[Optional]
 * Any number of extra key value pair that needs to be printed in the generated SALE receipt 
 * can be passed in {@link android.net.Uri} uri format in this parameter
 * If this parameter is not in a valid uri form, then it might be ignored by the device
 * eg :- "printInfo"= "printInfo://values?merchantTxnId=82938938983&caNumber=34567777&billNumber=xyz123"
 */
private final String printInfo;
/**[Optional]
 * gstInformation parameter can be used by merchants to pass gst Info in SALE request.
 * The gstInformation parameter should be in a valid {@link android.net.Uri} uri form
 * and merchants need to pass all gst Info params(gstIn, gstBrkUp, invoiceNo, invoiceDate) as given below:
 * The format of gstBrkUp should be as in the example and invoiceDate should be in yyyyMMddHHmmss format
 * <p>
 * eg :- "gstInformation" = "gstInformation://values?gstIn=08TESTF0078P1ZP&gstBrkUp=CGST:10|SGST:10|IGST:10|CESS:10|GSTIncentive:10|GSTPCT:10&invoiceNo=Invoice34234321&invoiceDate=20210512142919"
 */
private final String gstInformation;
/**[Optional]
 * Tip Amount in paise for the SALE transaction.
 * Tip Amount should not be more than the maximum allowed amount for the Merchant.
*/
private final String tipAmount;
/**[Optional]
 * Total Amount in paise for the SALE transaction.
 * Total Amount is required if the SALE has tipAmount in it's request.
 * Sum of tipAmount and amount in the request should be equal to totalAmount.
 */
private final String totalAmount;
*****************************************************************************************

Response Params:-

/**
 * Paytm MID
 */
private String merchantId;
/**
 * Order Id of the SALE transaction
 */
private String orderId;
/**
 * Amount(in Paise) of the SALE transaction
 */
private String amount;
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;

/**
 * ExtendInfo as passed in the SALE request
 */
private String extendInfo;

/**
 * PrintInfo as passed in the SALE request
 */
private String printInfo;

*****************************************************************************************

Status Check API:

/**
 * Check status of a particular transaction on EDC device.
 * Please note that EDC devices store only the transactions
 * done on the current day, therefore status of older transactions could not be
 * checked through this API
 *
 * @param request          Status check request
 * @param responseListener A listener which will listen for the response
 * @see StatusCheckRequest
 * @see com.paytm.androidecrsdk.model.response.StatusCheckResponse
 */
@Keep
void doStatusCheck(@NonNull Request<StatusCheckRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Request Params :-
/**[Optional]
 * Paytm MID
 */
private final String merchantId;
/**[Mandatory]
 * Order Id of the transaction
 */
private final String orderId;

*****************************************************************************************

Response Params :-
/**
 * Paytm MID
 */
private String merchantId;
/**
 * Order Id of the transaction
 */
private String orderId;
/**
 * Paytm Transaction Id, returned by the Paytm server
 */
private String txnId;
/**
 * Authorization code returned by the Bank
 */
private String authCode;
/**
 * SALE Transaction Date time in the format "dd MMM yyyy, hh:mm:ss a"
 */
private String txnDate;
/**
 * Retrieval reference number returned by the bank
 */
private String rrn;
/**
 * Masked card no, in case of Card Payment
 */
private String cardNo;
/**
 * Issuing Bank of the Customer
 */
private String issuingBank;
/**
 * Issuing Bank code of the Customer
 */
private String issuingBankId;
/**
 * Amount in Paise of the SALE transaction
 */
private String amount;
/**
 * QR or CARD
 *
 * @see com.paytm.androidecrsdk.model.TxnType
 */
private String txnType;
/**
 * Invoice number of the SALE transaction
 */
private String invoiceNumber;
/**
 * extendInfo object as provided in the SALE request
 */
private String extendInfo;
/**
 * printInfo object as provided in the SALE request
 */
private String printInfo;
/**
 * TID of the EDC device
 */
private String tid;
/**
 * AID of the CARD used for the transaction
 */
private String aid;
/**
 * PayMethod used for this SALE transaction
 * eg : CREDIT_CARD, DEBIT_CARD
 *
 * @see com.paytm.androidecrsdk.model.PayMethod
 */
private String payMethod;
/**
 * Credit or Debit card
 */
private String cardType;
/**
 * Card scheme of the card
 * eg : VISA, MASTER, RUPAY
 *
 * @see com.paytm.androidecrsdk.model.CardScheme
 */
private String cardScheme;
/**
 * response code returned by the bank
 */
private String bankResponseCode;
/**
 * Bank MID
 */
private String bankMid;
/**
 * Bank TID
 */
private String bankTid;
/**
 * Product manufacturer in case of Brand EMI SALE
 */
private String productManufacturer;
/**
 * Product category in case of Brand EMI SALE
 */
private String productCategory;
/**
 * Product validation key (IMEI / SN) in case of Brand EMI SALE
 */
private String productSerialNoType;
/**
 * Product validation value in case of Brand EMI SALE
 */
private String productSerialNoValue;
/**
 * Product name in case of Brand EMI SALE
 */
private String productName;
/**
 * Bank or Brand (EMI)
 */
private String emiTxnType;
/**
 * EMI tenure in months
 */
private String emiTenure;
/**
 * EMI interest rate
 */
private String emiInterestRate;
/**
 * Monthly EMI amount
 */
private String emiMonthlyAmount;
/**
 * Total EMI amount
 */
private String emiTotalAmount;
/**
 * "true" or "false"
 * Whether Bank offer was applied on the EMI or not
 */
private String bankOfferApplied;
/**
 * Bank offer type
 * Cashback or Discount
 */
private String bankOfferType;
/**
 * Bank Offer amount
 */
private String bankOfferAmount;
/**
 * Bank Offer id
 */
private String bankOfferCampaignId;

/**
 * Bank Offer contributor type of EMI offer
 */
private String bankOfferCampaignType;

/**
 * Bank Offer contribution amount of EMI offer for example : bankOfferContributorInfo=offerContribution: //values?bank=95000&brand=5000&merchant=0&platform=0&insurer=0
 */
private String bankOfferContributorInfo;
/**
 * Multiple Bank Offer amount and type and offer ids
 * Now in EMI is supporting multiple bank offers upto 4
 * bankofferCampaignType and bankofferContributorInfo also support in multiple offer like bankOfferContributorInfo2=offerContribution: //values?bank=95000&brand=5000&merchant=0&platform=0&insurer=0
 * and so on.
 */
private String bankOfferType2;
private String bankOfferAmount2;
private String bankOfferCampaignId2;
private String bankOfferCampaignType2;
private String bankOfferContributorInfo2;
private String bankOfferType3;
private String bankOfferAmount3;
private String bankOfferCampaignId3;
private String bankOfferCampaignType3;
private String bankOfferContributorInfo3;
private String bankOfferType4;
private String bankOfferAmount4;
private String bankOfferCampaignId4;
private String bankOfferCampaignType4;
private String bankOfferContributorInfo4;
/**
 * "true" if EMI Cashback was applied for the EMI transaction, false otherwise
 */
private String subventionCreated;
/**
 * Subvention type of the EMI offer
 */
private String subventionType;
/**
 * Subvention Offer amount of the EMI
 */
private String subventionOfferAmount;
/**
 * Subvention Offer id of the EMI
 */
private String subventionCampaignId;

/**
 * Subvention Offer type of the EMI offer
 */
private String subventionOfferType;

/**
 * Subvention campaign type of the EMI offer
 */
private String subventionCampaignType;

/**
 * Subvention contribution info of the EMI offer for example : subventionContributorInfo=offerContribution: //values?bank=0&brand=95000&merchant=0&platform=0&insurer=0
 */
private String subventionContributorInfo;
/**
 * Acquiring bank name of the merchant for the SALE transaction
 */
private String acquiringBank;
/**
 * Masked Virtual Payment Address in case of UPI payment
 */
private String virtualPaymentAddress;
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;
/**
 * This is in URI format {@link android.net.Uri}
 * It can contains any number of params that needs to be passed to billing POS from EDC device
 * eg :- "responseExtendInfo"= "responseExtendInfo://values?productPrice=800000&originalAmount=1000000&protectionPlanAmount=120000
         &protectionPlanDuration=1%20YEAR&protectionPlanProvider=OneAssist&protectionPlanName=ADLD&protectionPlanMembershipId=45342551"
 */
private String responseExtendInfo;
*****************************************************************************************

Cancel API :

/**
 * Cancel the currently ongoing SALE or VOID transaction (initiated by the POS device)
 * on the EDC device
 *
 * @param request          Cancel request
 * @param responseListener A listener which will listen for the response
 * @see CancelRequest
 * @see com.paytm.androidecrsdk.model.response.CancelResponse
 */
@Keep
void doCancel(@NonNull Request<CancelRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Request Params :-
/**[Mandatory]
 * Paytm MID
 */
private final String merchantId;
/**[Optional]
 * Order Id of the transaction
 */
private final String orderId;

*****************************************************************************************

Response Params :-
/**
 * Paytm MID
 */
private String merchantId;
/**
 * Order Id of the transaction
 */
private String orderId;
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;

*****************************************************************************************

Print API:

/**
 * Generate receipt for a SALE/VOID transaction through the EDC device
 * Please note that EDC devices store only the transactions
 * done on the current day, therefore Receipt of older transactions could not be
 * Printed through this API
 *
 * @param request          Print request
 * @param responseListener A listener which will listen for the response
 * @see PrintRequest
 * @see com.paytm.androidecrsdk.model.response.PrintResponse
 */
@Keep
void doPrint(@NonNull Request<PrintRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Request Params :-
/**[Optional]
 * Paymt MID
 */
private final String merchantId;
/**[Mandatory]
 * Order Id of the transaction
 */
private final String orderId;

*****************************************************************************************

Response Params :-
/**
 * Paytm MID
 */
private String merchantId;
/**
 * Order Id of the transaction
 */
private String orderId;
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;

*****************************************************************************************

Void API:

/**
 * Initiate VOID for a successful SALE transaction.
 * Please note that EDC devices store only the transactions
 * done on the current day, therefore VOID of older transactions could not be
 * initiated through this API
 *
 * @param request          Void request
 * @param responseListener A listener which will listen for the response
 * @see VoidRequest
 * @see com.paytm.androidecrsdk.model.response.VoidResponse
 */
@Keep
void doVoid(@NonNull Request<VoidRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Request Params :-
/**[Optional]
 * Paytm MID
 */
private final String merchantId;
/**[Mandatory]
 * Order Id of the transaction
 */
private final String orderId;
/**[Optional - available in and after version 2.1.0]
 * extendInfo map for additional optional params
 * autoAccept is a parameter which can be set to true in extendInfo for accepting void without user confirmation in unattended mode.
 */
private final String orderId;
*****************************************************************************************

Response Params :-
/**
 * Paytm MID
 */
private String merchantId;
/**
 * Order Id of the transaction
 */
private String orderId;
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;

*****************************************************************************************

Connection Check API:

/**
 * Check if the POS device and EDC devices are ready to communicate over Bluetooth or via RS232
 * If this method returns timeout or any other error, then it may mean that the POS device
 * is connected to any other Bluetooth device and not the Paytm EDC device or when connected via RS232 it 
 * may return timeout or any other error if no valid ports are found 
 * @param request          Connection Check request
 * @param responseListener A listener which will listen for the response
 * @see ConnectionCheckRequest
 * @see com.paytm.androidecrsdk.model.response.ConnectionCheckResponse
 */
@Keep
void doConnectionCheck(@NonNull Request<ConnectionCheckRequest> request, @NonNull ResponseListener responseListener);

*****************************************************************************************

Response Params :-
 
/**
 * Status code returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusCode;
/**
 * Status message returned by the device
 *
 * @see com.paytm.androidecrsdk.constants.ECRCode
 */
private String statusMessage;

/**
 * Show library version
 */
private String version;