Integration in Android

Merchant can integrate Virtual card using PayUPPIAndroidSDK in Android.

Steps to integrate:

1. Gradle changes:

Add below dependency in your app level gradle file.

implementation 'in.payu:payu-ppi-sdk:1.0.0'

2. SDK Initialisation:

First create OnePayUJSParams Object

OnePayUJSParams(
            environment = <Environment - Prod or Test>,
            merchantKey = <String - Merchant Key>,
            mobileNumber = <String - user mobile number>,
            walletIdentifier = <String - merchant wallet Identifier>,
            walletUrn = <String - User wallet urn linked with aboved mobile number>,
            referenceId = <String - Any unique reference id>
        )
        

Then call show Cards function

 OnePayUJSSDK.showCards(activity, onePayUJSParams, onePayUJSListener)
 Params:
 activity: Current Activity in which want to open cards fragment
 onePayUJSParams: OnePayUJSModel object with all parameters and hash
 OnePayUJSListener: This is a delegate class in which you will got below callbacks
  1. onCancel() - If user press back button on card page or verify otp page
  2. fun onError(code: Int, message: String) -  If any error occured
  3. fun generateHash(
        map: HashMap<String, String?>,
        hashGenerationOnePayUJKListener: OnePayUJSHashGenerationListener
    ) -  create and send dynamic hash. 
 

HASH

We will get hash string in map "hashString" key and hash name "hashName" in generateHash. We need to send this string to server and append salt there, after appending salt convert string to sha512 hash and return back to sdk in OnePayUJSHashGenerationListener onHashGenerated as ([:]).

  OnePayUJSHashGenerationListener -
     fun onHashGenerated(map: HashMap<String, String>)}

Sample Code for Hash

override fun generateHash(
        map: HashMap<String, String?>,
        hashGenerationOnePayUJKListener: OnePayUJSHashGenerationListener
    ) {
        if (map.containsKey("hashString") && map.containsKey("hashName")
        ) {
            val hashStringWithoutSalt = map["hashString"]
            val commandName = map["hashName"]
            // get hash for "commandName" from server
            // get hash for "hashStringWithoutSalt" from server
           // After fetching hash set its value in below variable "hashValue"
            val hash = <fetch hash from server, on server add salt in last of hashStringWithoutSalt and create sha512 Hash>


            if (!TextUtils.isEmpty(hash)) {
                val hashMap: HashMap<String, String> = HashMap()
                hashMap[hashName ?: ""] = hash ?: ""
                hashGenerationOnePayUJKListener.onHashGenerated(hashMap)
            }
        }
    }