Card91 SERVICES Android Library
This Library is used to access the bunch of Card91 fintech services from login with auth token to card setting and transferring money
Features
Library directly communicate with Card91 services.
Getting started
Add Card91 SERVICES library into your application and call the required functions.
Installation (Gradle and Manifest Configuration)
Android Minimum Requirements :
Gradle Version - 7.3.3
minSdkVersion - 21
compileSdkVersion - 33
targetSdkVersion - 33
Android Permission on Manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
Update gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
Gradle dependencies
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
//Add the CARD91 sdk
implementation files('../app/libs/card91Sdk.aar')
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
implementation 'com.squareup.okhttp3:okhttp:4.5.0'
implementation 'com.github.bastiaanjansen:jwt-java:1.2.0'
implementation 'com.auth0:java-jwt:4.0.0'
implementation 'com.auth0.android:jwtdecode:2.0.1'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
implementation 'com.google.code.gson:gson:2.10.1' // Add this for Gson
}
Also enable the binding on the same app gradle file under android tag if the binding has been used
buildFeatures {
viewBinding true
}
}
Usage
Below steps is defined to followed to integrate the Library
Add AAR (Android Library Files)
Add the .aar file provided by card91 team at the libs folder on the project eg. card91Sdk.aar
Keep the aar file at location {Client project location}/app/src/main/libs
Add below line on the app gradle
implementation files('../app/libs/card91Sdk.aar')
or
implementation(name: 'card91Sdk', ext: 'aar' )
Note
Clean and Build the android app to get the dependencies added on to the application
SUPPORTED SERVICE METHOD
Name | Description |
---|---|
loginWithAuthToken | Service return the card holder details with its card information. |
getCardFlags | Service return the card holder a particular card flags informations. Eg ATM transaction is enabled or not |
updateCardFlags | Service update the card holder a particular card flags informations.Eg ATM transaction is enabled or disable |
lockCard | Service freeze a particular card activity |
blockCardOTP | Service initiate the card permanent block with OTP generation . |
blockCardConfirmation | Service completes the card permanent block with OTP validation. |
getCardLimit | Service return the card holder a particular card setting limit information. |
setCardLimit | Service update the card holder a particular card setting limit information. |
getWalletDetail | Service to get the wallet detail for the customer. |
setWalletStatus | Use this method to make the wallet lock or unlock |
addBeneficiary | Service to add beneficiary at the card holder level. |
getAllBeneficiary | Service to add beneficiary get all beneficiary |
getBeneficiaryDetails | Service to get beneficiary details |
updateBeneficiaryLimit | Service to update the beneficiary limits |
updateBeneficiaryLimitVerify | Service to update the beneficiary limit with OTP verification. |
getBeneficiaryTransactions | Service to get beneficiary transaction list |
transferMoneyToBeneficiary | Service to transfer money to beneficiary |
IMPLEMENTATION
Create a KOTLIN activity from where the service functions will be called.
Remember to implement "Card91EventListener" interface to listen the call back event response.
Implemented method of Card91EventListener are onEvent and onEventException, Card91RemoteResponse is the response data model class which contains response body, header and response code which is directly passed on to overridden methods (call backs)
import com.card91.common.Card91RemoteServices
import com.card91.common.interfaces.Card91EventListener
import com.card91.common.models.Card91RemoteResponse
class MainActivity : AppCompatActivity(), Card91EventListener {
/// Sample response
override fun onEvent(response: Card91RemoteResponse?) {
Log.e("onEvent Response --",response?.responseCode.toString() +response?.responseBody.toString()+response?.responseHeader.toString() )
/// response?.responseCode will return the service reponse code
/// response?.responseBody will return the service response body
//// response?.responseHeader will return the service okhhtp Headers
}
override fun onEventException(type: String?, responseBody: String?, code: String?) {
Log.e("onEventException --",responseBody +type+code )
/// Any Exception from the service need to handled here
}
}
For call different service function, first instantiate the instance of Card91RemoteServices by passing the environment ("PROD" for production and "PROD_SANDBOX" for sandbox production) , card holder auth token into the constructor.
Initiating the customer service
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XXXXXXXXXXJFVsPPg5fCfcUh4=",this)
After invoking the constructor call individual function and get the response in overridden functions.
Example request for loginWithAuthToken
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , this)
val jsonString = "{" +
" \"mobile\": \"917096482153\",\n" +
" \"sdkAuthToken\": \"1\",\n" +
" \"primaryOrgId\": \"230705103219705ID1OID1317188\"\n" + // primary org id
"}"
val jsonObject = JSONObject(jsonString)
card91service.loginWithAuthToken(jsonObject);
Response:
Response header will contain will contain the "jwt_token" which is the card holder token which will be used to call rest of the api from request authentication as bearer token as card holder token.
responseBody=
{
"customer": {
"createdTime": "2024-06-13T06:40:59.000+0000",
"createdBy": "230331054237284ID1UID5326707",
"modifiedTime": "2024-06-13T06:43:32.000+0000",
"modifiedBy": null,
"id": "240613064059382ID1CUSTID7848474",
"dob": "1992-01-02",
"gender": "F",
"mobile": "917557608589",
"email": "[email protected]",
"name": "Dallas",
"nameOnCard": "Cullen",
"invited": true,
"firstTimeSignUp": true,
"firstTimeLogin": true,
"saltHash": 0,
"wrongMpinCount": 0,
"mpinResetCount": 0,
"cardHolderPaymentSideId": null,
"locale": null,
"status": "ACTIVE",
"extCustomerRefNo": null
},
"cards": [
{
"id": "240613064059432ID1CARD6428800",
"status": "ACTIVE",
"customerId": "240613064059382ID1CUSTID7848474",
"lastFourDigits": "7512",
"cardMode": "PHYSICAL_NAMED_CARD",
"orgName": "YESAutomationTest 5791",
"orgId": "240613060403353ID1OID1413045",
"cardImage": null,
"network": "RUPAY",
"programName": "YES Bank - Rupay",
"issuer": "YES",
"van": null,
"rootCardId": "240613064059432ID1CARD6428800",
"kitNumber": "240000214716",
"cardType": "GPR",
"primaryCard": true,
"addOnCard": false
}
],
"mpinResetRequired": false
}
responseCode=200
responseHeader =
date: Thu, 13 Jun 2024 06:47:21 GMT
content-type: application/json
cache-control: no-cache, no-store, max-age=0, must-revalidate
expires: 0
jwt_token: C91IP_ZVCgSUB4+hdKaBWSM+FjMHoyvrsRoFVhPyO2Bj2Yps8= /// Card holder token
login_token: C91IP_ZVCgSUB4+hdKaBWSM+FjMHoyvrsRoFVhPyO2Bj2Yps8=
pragma: no-cache
scheme_id: 240613064059382ID1CUSTID7848474
strict-transport-security: max-age=31536000 ; includeSubDomains
vary: Origin
vary: Access-Control-Request-Method
vary: Access-Control-Request-Headers
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
//Use below code to get the JWT token
println("JWT Token: ${response?.responseHeader!!["jwt_token"]}")
Example request for getCardFlags
val card91service: Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX", "C91CHk6uZV+HZ/InkHb8hZQzlS6EhKB0naYrMgn3ZPKpGnrw=", this)
card91service.getCardFlags("230705103521821ID1CARD0150896");// Card holder cardId
Response
responseBody ={"cardFlags":{"CL_ENABLED":false,"ATM_ENABLED":false,"ECOM_ENABLED":false,"POS_ENABLED":false}}
responseCode = 200
Example request for updateCardFlags
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestBody = JSONObject()
try {
requestBody.put("cardId", "230705103521821ID1CARD0150896")// Card holder cardId
val requestBodyInside = JSONObject()
requestBodyInside.put("ATM_ENABLED", false) // ATM Flag
requestBodyInside.put("POS_ENABLED", false)// POS Flag
requestBodyInside.put("ECOM_ENABLED", false)// ECOM Flag
requestBodyInside.put("CL_ENABLED", false)// CL Flag
requestBody.put("cardFlags", requestBodyInside)
} catch (e: JSONException) {
e.printStackTrace()
}
card91service.updateCardFlags(requestBody);
Response:
responseBody=
{
"cardFlags": {
"CL_ENABLED": false,
"ATM_ENABLED": false,
"ECOM_ENABLED": false,
"POS_ENABLED": false
}
}
responseCode =200
Example request for lockCard
val card91service: Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX", "C91CHk6uZV+HZ/InkHb8hZQzlS6EhKB0naYrMgn3ZPKpGnrw=", this)
val requestBody = JSONObject()
try {
requestBody.put("cardId", "230705103521821ID1CARD0150896")// Card Holder Card ID
requestBody.put("lock", true)
} catch (e: JSONException) {
e.printStackTrace()
}
card91service.lockCard(requestBody);
Response:
responseBody
{"message":"Card is already unlocked"}
responseCode =200
Example request for blockCardOTP
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestObject = JSONObject();
requestObject.put("cardId","230530100608159ID1CARD5790474")//Card holder card ID
card91service.blockCardOTP(requestObject);
Response:
responseBody={"mobile":"918016703737","sessionId":"DUMMY-ID"}
responseCode = 200
Example request for blockCardConfirmation
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestObject = JSONObject();
requestObject.put("cardId","230530100608159ID1CARD5790474")
requestObject.put("reason","LOST") // Reasons for blocking the card possible four value can be passed -- Lost, Stolen, Damaged, Not Required
requestObject.put("sessionId","DUMMY-ID")// Session id which while generating the OTP
requestObject.put("otp","121212") /// Real otp
card91service.blockCardConfirmation(requestObject);
Response:
responseBody=
{
"message": "Card ending with 3068 is BLOCKED",
"id": "220202094138773ID1CARD6090768",
"status": "BLOCKED",
"customerId": "220131151639396ID1CUSTID7491716",
"lastFourDigits": "3068",
"cardMode": "DIGITAL_ONLY_CARD",
"orgName": "Prakhar Businsess",
"cardImage": ""
}
responseCode=200
Example request for getCardLimit
Request:
try {
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
card91service.getCardLimit("230705103521821ID1CARD0150896");// card holder card Id
} catch (e: JSONException) {
e.printStackTrace()
}
Response:
responseBody=
{
"cardRules": [
{
"txnType": "ECOM",
"period": "M",
"maxLimit": "500000",
"userLimit": "200",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ECOM",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ECOM",
"period": "T",
"maxLimit": "200000",
"userLimit": "200000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "M",
"maxLimit": "500000",
"userLimit": "5000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "D",
"maxLimit": "50000",
"userLimit": "50000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "T",
"maxLimit": "50000",
"userLimit": "50000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "M",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "T",
"maxLimit": "200000",
"userLimit": "200000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "M",
"maxLimit": "5000",
"userLimit": "5000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "T",
"maxLimit": "5000",
"userLimit": "5000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
}
],
"kitNumber": "240000109978"
}
responseCode=200
Example request for setCardLimit
Request:
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestBody = JSONArray()
val requestObjectATM = JSONObject()
requestObjectATM.put("txnType", "ATM")// Type of Transaction eg , ATM, CL, ECOM, POS
requestObjectATM.put("maxLimit", "10000") // Max limit given by bank
requestObjectATM.put("userLimit", "5000")// User limit which he/she wants to set
requestObjectATM.put("period", "M")/// M stands for monthly limit
requestBody.put(requestObjectATM);
val requestObjectCL = JSONObject()
requestObjectCL.put("txnType", "ECOM") // Type of Transaction eg , ATM, CL, ECOM, POS
requestObjectCL.put("maxLimit", "10000") // Max limit given by bank
requestObjectCL.put("userLimit", "7000") // User limit which he/she wants to set
requestObjectCL.put("period", "M") /// M stands for monthly limit
requestBody.put(requestObjectCL);
card91service.setCardLimit(requestBody, "230705103521821ID1CARD0150896");// card holder card Id
Response
responseBody= {
"cardRules": [
{
"txnType": "ECOM",
"period": "M",
"maxLimit": "500000",
"userLimit": "200",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ECOM",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ECOM",
"period": "T",
"maxLimit": "200000",
"userLimit": "200000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "M",
"maxLimit": "500000",
"userLimit": "10000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "D",
"maxLimit": "50000",
"userLimit": "50000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "ATM",
"period": "T",
"maxLimit": "50000",
"userLimit": "50000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "M",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "POS",
"period": "T",
"maxLimit": "200000",
"userLimit": "200000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "M",
"maxLimit": "5000",
"userLimit": "5000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "D",
"maxLimit": "500000",
"userLimit": "500000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
},
{
"txnType": "CL",
"period": "T",
"maxLimit": "5000",
"userLimit": "5000",
"maxLimitPerTxn": "0",
"consumedLimit": "0",
"userLimitPerTxn": "0",
"enabled": false
}
],
"kitNumber": null
}
responseCode =200
Example request for getWalletDetail
Request:
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91IP_IgI+CAM%%%%%%%%%%%7ViQIudPLyI9U=",this)
card91service.getCardWalletDetails(this, "230704125202564ID1CARD6454936"); // Customer card detail
Response:
responseBody={
"wallets": [
{
"cardId": "230704125202564ID1CARD6454936",
"appId": "98d7faf5-432b-454f-b786-c37f761fa6bc",
"orgId": "230217024240504ID1OID6864550",
"ledgerOrgId": "230217024240504ID1OID6864550",
"groupId": "230630074826303ID1CP6003872",
"name": "Wallet",
"status": "ACTIVE",
"description": "Wallet",
"balanceType": "PREPAID",
"allowCustomerMoneyLoad": false,
"createdAt": "2023-07-04T12:52:02.000+00:00",
"createdBy": null,
"updatedAt": "2024-07-03T07:17:45.000+00:00",
"priority": 1,
"splitTxn": "DISALLOW",
"closedLoop": false,
"balance": "90.0000",
"rulesJson": {
"version": "1",
"zeroFilterMatchBehaviour": "allow",
"balanceType": "PREPAID",
"rules": [],
"cashbackRules": []
},
"ncmcVerified": 0,
"allowWalletToLink": false
}
],
"ncmcWallets": [
{
"cardId": "230704125202564ID1CARD6454936",
"appId": "ncmc_fd79c176-293b-48ba-8911-14adb767ee11",
"orgId": "230217024240504ID1OID6864550",
"ledgerOrgId": "230217024240504ID1OID6864550",
"groupId": "230630074826303ID1CP6003872",
"name": "NCMC Wallet",
"status": "ACTIVE",
"description": "For NCMC transactions",
"balanceType": "PREPAID",
"allowCustomerMoneyLoad": null,
"createdAt": "2023-09-23T01:44:35.000+00:00",
"createdBy": null,
"updatedAt": "2023-09-23T01:44:35.000+00:00",
"priority": 0,
"splitTxn": "DISALLOW",
"closedLoop": false,
"balance": "0.0000",
"rulesJson": null,
"ncmcVerified": 1,
"allowWalletToLink": false
}
]
}
Response Code: 200
Example request for setWalletStatus
Request:
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val requestObjectCL = JSONObject()
requestObjectCL.put("c0fb702b-d705-4fb5-99f6-70ec5d27bda6", "ACTIVE") /// Put wallet id as key and value as status /// ACTIVE/INACTIVE
val requestJsonParent = JSONObject()
requestJsonParent.put("walletStatusMap", requestObjectCL)
card91service.setWalletStatus(requestJsonParent, "230714120729338ID1CARD4168209");// // card holder card Id
Response
responseBody= {“message”:“Wallet statuses updated successfully”}
responseCode =200
Example request for addBeneficiary
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val addBeneficiarydata = JSONObject()
addBeneficiarydata.put("issuerCode", "NSDL") // NSDL in case of NSDL bank
addBeneficiarydata.put("accountNumber", "BBB1916624") // Bene account number
addBeneficiarydata.put("ifscCode", "NSDL0006184")
addBeneficiarydata.put("name", "Niket Rawat")
card91service.addBeneficiary(this , addBeneficiarydata, "918016703737");
Response:
responseBody=
{“beneficiaryId”:“240613111923133ID1BENF5433060”}
responseCode=200
Example request for getAllBeneficiary
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val getAllBeneficiarydata = JSONObject()
getAllBeneficiarydata.put("page", "1") // page number
getAllBeneficiarydata.put("mobileNo", "918016703737") // Card holder mobile
getAllBeneficiarydata.put("perPage", "10") // item per page
getAllBeneficiarydata.put("issuerCode", "") /// NSDL in case of NSDL bank
card91service.getAllBeneficiary(this , getAllBeneficiarydata);
Response:
responseBody=
{
"recordsCurrentPage": 1,
"currentPage": 1,
"totalPages": 1,
"totalRecords": 1,
"beneficiaries": [
{
"id": "240613111923133ID1BENF5433060",
"name": "Niket Rawat",
"accountNumber": "BBB1916624",
"ifscCode": "NSDL0006184",
"associatedIssuer": "NSDL",
"createdTime": "2024-06-13T11:19:23.000+00:00",
"lastModifiedTime": "2024-06-13T11:19:23.000+00:00",
"dailyRequestLimit": null,
"dailyTransferRequestAllowed": "5",
"maxMonthlyLimit": null,
"kycLimit": null
}
]
}
responseCode=200
Example request for getBeneficiaryDetails
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
card91service.getBeneficiaryDetail(this , "240611095120679ID1BENF9316464");// Beneficiary Id
Response:
responseBody=
{
"id": "240613111923133ID1BENF5433060",
"name": "Niket Rawat",
"accountNumber": "BBB1916624",
"ifscCode": "NSDL0006184",
"associatedIssuer": "NSDL",
"maxPermissibleLimit": "200000.0000",
"createdTime": "2024-06-13T11:19:23.000+00:00",
"lastModifiedTime": "2024-06-13T11:19:23.000+00:00",
"dailyRequestLimit": null,
"dailyTransferRequestAllowed": "5",
"maxMonthlyLimit": "200000.0000",
"kycLimit": "200000"
}
responseCode=200
Example request for updateBeneficiaryLimit
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val updateBeneficiaryLimitdata = JSONObject()
updateBeneficiaryLimitdata.put("maxMonthlyLimit", 45001.0) //monthly limit
updateBeneficiaryLimitdata.put("dailyTransferRequestAllowed", 5) // Transfer limit allowed per day
card91service.updateBeneficiaryLimit(this , updateBeneficiaryLimitdata, "240611095120679ID1BENF9316464"); /// Beneficiary id
Response:
responseBody=
{"sessionId":"sfr23423"} // Session id used to pass on OTP confirmation on beneficiary limit change
responseCode=200
Example request for updateBeneficiaryLimitVerify
Note
updateBeneficiaryLimitVerify only used for YES bank issuer.
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val updateBeneficiaryLimitVerifydata = JSONObject()
updateBeneficiaryLimitVerifydata.put("sessionId", "DUMMY-ID")
updateBeneficiaryLimitVerifydata.put("otp", "123456") // received otp to customer
updateBeneficiaryLimitVerifydata.put("maxMonthlyLimit", 45001)
updateBeneficiaryLimitVerifydata.put("dailyRequestLimit", 5)
card91service.updateBeneficiaryLimitVerify(this , updateBeneficiaryLimitVerifydata, "240611100532661ID1BENF4442164");
Response:
responseBody=
{}
responseCode=200
Example request for getBeneficiaryTransactions
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val getBeneficiaryTransactionsdata = JSONObject()
getBeneficiaryTransactionsdata.put("transferStatus", "") //
getBeneficiaryTransactionsdata.put("txnMethod", "")
getBeneficiaryTransactionsdata.put("page", "1")
getBeneficiaryTransactionsdata.put("perPage", "2")
getBeneficiaryTransactionsdata.put("from", "")
getBeneficiaryTransactionsdata.put("to", "")
card91service.getBeneficiaryTransactions(this , getBeneficiaryTransactionsdata, "240611095120679ID1BENF9316464");
Response:
responseBody=
{}
responseCode=200
Example request for transferMoneyToBeneficiary
val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val transferMoneyToBeneficiarydata = JSONObject()
transferMoneyToBeneficiarydata.put(
"beneficiaryId",
"240611095120679ID1BENF9316464"
)
transferMoneyToBeneficiarydata.put("amount", "5")
transferMoneyToBeneficiarydata.put("transferMethod", "IMPS")
card91service.transferMoneyToBeneficiary(this , transferMoneyToBeneficiarydata, "230714120729338ID1CARD4168209");
Response:
responseBody=
{
"status": "SUCCESS",
"txnPartnerReferenceId": "C91315744932",
"txnReferenceId": "C91315744932"
}
responseCode=200
SERVICE RESPONSE CODE DESCRIPTION
Response can be traced on the call back event object Card91RemoteResponse
Response code | Description |
---|---|
200-299 | Between 200-299 is considered as success response. |
400-499 | 401 Invalid auth token, 403 Forbidden, 400 Request structure is malformed or incorrect 415 Missing header request etc |
500-599 | Server Error |