---
page_title: Process
product: UPI TPAP SDK
platform: Android
page_source: https://juspay.io/in/docs/upi-tpap-sdk/android/interaction-with-sdk/process
llms_txt: https://juspay.io/in/docs/llms.txt
product_llms_txt: https://juspay.io/in/docs/upi-tpap-sdk/llms.txt
---


## Process




###   Call Process


This API should be triggered for all operations required from the HyperSDK. This API can be triggered any number of times based on requirements or app flow structure.

> **Warning**
> It should not be called on an HyperSDK instance which has not been initiated. To verify if an instance is initiated, kindly refer to check SDK initiated in code





#### Code Snippets: -

#### Java Code Snippet:

```java
JSONObject processPayload = new JSONObject();
    JSONObject innerPayload = new JSONObject();

    try {
        // generating inner payload
        innerPayload.put("action", "upiCheckPermission");

        processPayload.put("requestId",  ""+ UUID.randomUUID());
        processPayload.put("service", "in.juspay.hyperapi");
        processPayload.put("payload", innerPayload);

    } catch (Exception e) {
        e.printStackTrace();
    }

    if (hyperServicesHolder.isInitialised()) {
      hyperServicesHolder.process(processPayload);
    }
```

#### Kotlin Code Snippet:

```kotlin
fun callProcess(sdk_payload: JSONObject?) {
        val sdkPayload = JSONObject()
        val innerPayload = JSONObject()
        try {
            // generating inner payload
            innerPayload.put("action", "upiCheckPermission")

            sdkPayload.put("requestId",  ""+ UUID.randomUUID())
            sdkPayload.put("service", "in.juspay.hyperapi")
            sdkPayload.put("payload", innerPayload)

        } catch (e: Exception) {
            e.printStackTrace()
        }
        if(hyperServicesHolder!!.isInitiated)
        hyperServicesHolder?.process(sdk_payload)
    }
```


The process operation can be related to:

* [Get Session token](https://docs.juspay.in/upi-tpap-sdk/android/ui-process-payloads/inapp-ui#1.-Get-Session-Token)
* [UPI Onboarding and Payment flow](https://docs.juspay.in/upi-tpap-sdk/android/ui-process-payloads/inapp-ui#3.-UPI-Onboarding-and-Payment)
* [UPI Profile management section](https://docs.juspay.in/upi-tpap-sdk/android/ui-process-payloads/management#1.-UPI-Profile-Management)
* [Incoming UPI Intent (from other apps)](https://docs.juspay.in/upi-tpap-sdk/android/ui-process-payloads/management#2.-UPI-Incoming-Intent-for-Collect)
* [Approve Incoming UPI Collect (for notification trigger)](https://docs.juspay.in/upi-tpap-sdk/android/ui-process-payloads/management#3.-Approve-UPI-Collect)

---

## Complete Code Reference

The following code files are referenced in the steps above:

### IntegrationReferenceActivity.java

```
package in.juspay.devtools;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.EditText;

import org.json.JSONException;
import org.json.JSONObject;

//HyperServices imports
import in.juspay.hypersdk.data.JuspayResponseHandler;
import in.juspay.hypersdk.ui.HyperPaymentsCallbackAdapter;
import in.juspay.hyperinteg.HyperServiceHolder;

public class IntegrationReferenceActivity extends AppCompatActivity {
	public Helpers helper;
	private JSONObject processData;
	private JSONObject initiateData;
	private JSONObject merchantData;
	private boolean hasProcessInQueue;
	private HyperServiceHolder hyperServicesHolder;

	/*******************Integration reference start*****************************/
	//HyperSDK instance used for all operation on the sdk.
	//code-copy-marker

    @Override
    protected void onStart() {
        super.onStart();
        //block:start:create-hyper-services-instance

        hyperServicesHolder = new HyperServiceHolder(this);

        //block:end:create-hyper-services-instance
        initiateUpiSDK();
        hyperServicesHolder.setCallback(createHyperPaymentsCallbackAdapter());
    }

    //block:start:initiate-sdk
    //This function initiate the Juspay SDK
    private void initiateUpiSDK() {
        if(!hyperServicesHolder.isInitialised()){
            initiatePayload = createInitiatePayload();
            hyperServicesHolder.initiate(initiatePayload);
        }
    }
    //block:end:initiate-sdk

    //block:start:create-initiate-payload
    // This function creates intiate payload.
    private JSONObject createInitiatePayload() {
        JSONObject sdkPayload = new JSONObject();
        JSONObject innerPayload = new JSONObject();
        JSONObject signaturePayload = new JSONObject();
        try {
            signaturePayload.put("merchant_id", "<MERCHANT_ID>");     // Put your Merchant ID here
            signaturePayload.put("customer_id", "<CUSTOMER_ID>");     // Put Customer ID here
            signaturePayload.put("timestamp", "<timestamp>");         // Time when request is created in milliseconds.
            // generating inner payload
            innerPayload.put("action", "initiate");
            innerPayload.put("merchantKeyId", "<MERCHANT_KEY_ID>");   // Put your Merchant ID here
            innerPayload.put("clientId", "CLIENT_ID");                // Put your Client ID here
            innerPayload.put("environment", "production");
            innerPayload.put("issuingPsp", "YES_BIZ");
            innerPayload.put("signature", "....");                    // Generated signature for signature payload
            String stringifiedSignaturePayload = signaturePayload.toString();
            innerPayload.put("signaturePayload", stringifiedSignaturePayload);

            // block:start:generatingRequestId
            sdkPayload.put("requestId",  ""+ UUID.randomUUID());
            // block:end:generatingRequestId
            sdkPayload.put("service", "in.juspay.hyperapi");
            sdkPayload.put("payload", innerPayload);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sdkPayload;
    }
  //block:end:create-initiate-payload

  //block:start:create-initiate-payload-clientAuthToken
    // This function creates intiate payload for ClientAuthToken Support
    private JSONObject createInitiatePayload() {
        JSONObject sdkPayload = new JSONObject();
        JSONObject innerPayload = new JSONObject();
        try {
            // generating inner payload
            innerPayload.put("action", "initiate");
            innerPayload.put("clientId", "CLIENT_ID");                // Put your Client ID here
            innerPayload.put("environment", "production");
            innerPayload.put("issuingPsp", "YES_BIZ");
            innerPayload.put("clientAuthToken", "token");

            // block:start:generatingRequestId
            sdkPayload.put("requestId",  ""+ UUID.randomUUID());
            // block:end:generatingRequestId
            sdkPayload.put("service", "in.juspay.hyperapi");
            sdkPayload.put("payload", innerPayload);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return sdkPayload;
    }
  //block:end:create-initiate-payload-clientAuthToken

  // block:start:create-hyper-callback
    private HyperPaymentsCallbackAdapter createHyperPaymentsCallbackAdapter() {
        return new HyperPaymentsCallbackAdapter() {
            @Override
            public void onEvent(JSONObject data, JuspayResponseHandler handler) {
                try {
                  // block:start:handle-sdk-response
                  String event = data.getString("event");
    
                  // block:start:show-loader
                  if (event.equals("show_loader")) {
                    // Show some loader here
                  }
                  // block:end:show-loader
    
                  // block:start:hide-loader
                  else if (event.equals("hide_loader")) {
                    // Hide Loader
                  }
                  // block:end:hide-loader
    
                  // block:start:initiate-result
                  else if (event.equals("initiate_result")) {
                    // Get the response
                    JSONObject response = data.optJSONObject("payload");
                  }
                  // block:end:initiate-result
    
                  // block:start:process-result
                  else if (event.equals("process_result")) {
                    // Get the response
                    JSONObject response = data.optJSONObject("payload");
                    //Merchant handling
                  }
                  // block:end:process-result
    
                  // block:start:log-stream
                  else if (event.equals("log_stream")){
                    Log.i("=>Clickstream", data.toString());
                  }
                  // block:end:log-stream
    
                  // block:start:session-expiry
                  else if (event.equals("session_expired")){
                    // Handle Session Expiry
                  }
                  // block:end:session-expiry
    
                } catch (Exception e) {
                  // merchant code...
                }
                // block:end:handle-sdk-response
            }
        };
    }
    // block:end:create-hyper-callback

  public void callProcess() {
    // block:start:process-sdk

    JSONObject processPayload = new JSONObject();
    JSONObject innerPayload = new JSONObject();

    try {
        // generating inner payload
        innerPayload.put("action", "upiCheckPermission");

        processPayload.put("requestId",  ""+ UUID.randomUUID());
        processPayload.put("service", "in.juspay.hyperapi");
        processPayload.put("payload", innerPayload);

    } catch (Exception e) {
        e.printStackTrace();
    }

    if (hyperServicesHolder.isInitialised()) {
      hyperServicesHolder.process(processPayload);
    }
    // block:end:process-sdk
  
  }  
  // block:start:terminate
  public void callTerminate() {
    hyperServicesHolder.terminate();
  }
  // block:start:terminate

  //block:start:onBackPressed
  @Override
  public void onBackPressed() {
      boolean handleBackpress = hyperServicesHolder.onBackPressed();
      if(!handleBackpress) {
          super.onBackPressed();
      }
  }
  //block:end:onBackPressed

  // block:start:onActivityResult
  @Override
  public void onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

    // If super.onActivityResult is available use following:
    super.onActivityResult(requestCode, resultCode, data);

    // In case super.onActivityResult is NOT available please use following:
    if (data != null) {
        hyperServices.onActivityResult(requestCode, resultCode, data);
    }
  }

  // block:end:onActivityResult

  //block:start:onRequestPermissionsResult
  @Override
  public void onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {

      // If super.onRequestPermissionsResult is available use following:
      super.onRequestPermissionsResult(requestCode, permissions, grantResults);

      // In case super.onActivityResult is NOT available please use following:
      hyperServicesHolder.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }
  //block:end:onRequestPermissionsResult
}
```

### IntegrationReferenceActivity.kt

```
package `in`.juspay.devtools

import `in`.juspay.hypersdk.data.JuspayResponseHandler;
import `in`.juspay.hypersdk.ui.HyperPaymentsCallbackAdapter;
import `in`.juspay.hyperinteg.HyperServiceHolder;
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.coordinatorlayout.widget.CoordinatorLayout
import com.google.android.material.snackbar.Snackbar
import org.json.JSONObject
import java.util.*

class IntegrationReferenceActivity : AppCompatActivity() {

    var hyperServicesHolder: HyperServiceHolder? = null
    var initiatePayload: JSONObject? = null

    override fun onStart() {
        super.onStart()
        //block:start:create-hyper-services-instance

        hyperServicesHolder = HyperServiceHolder(this)

        //block:end:create-hyper-services-instance

        initiatePaymentsSDK()
        hyperServicesHolder!!.setCallback(createHyperPaymentsCallbackAdapter())
    }
    //block:start:create-initiate-payload
    private fun createInitiatePayload(): JSONObject {
        val sdkPayload = JSONObject()
        val innerPayload = JSONObject()
        try {
            // generating inner payload
            innerPayload.put("action", "initiate")
            innerPayload.put("merchantKeyId", "<MERCHANT_KEY_ID>")   // Put your Merchant ID here
            innerPayload.put("clientId", "CLIENT_ID")                // Put your Client ID here
            innerPayload.put("environment", "production")
            innerPayload.put("issuingPsp", "YES_BIZ")
            innerPayload.put("signature", "....")                    // Generated signature for signature payload
            innerPayload.put("signaturePayload", signaturePayload)

            // block:start:generatingRequestId
            sdkPayload.put("requestId",  ""+ UUID.randomUUID())
            // block:end:generatingRequestId
            sdkPayload.put("service", "in.juspay.hyperapi")
            sdkPayload.put("payload", innerPayload)

            signaturePayload.put("merchant_id", "<MERCHANT_ID>")     // Put your Merchant ID here
            signaturePayload.put("customer_id", "<CUSTOMER_ID>")     // Put Customer ID here
            signaturePayload.put("timestamp", "<timestamp>")         // Time when request is created in milliseconds.
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return sdkPayload
    }
    //block:end:create-initiate-payload


    //block:start:create-initiate-payload-clientAuthToken
    private fun createInitiatePayload(): JSONObject {
        val sdkPayload = JSONObject()
        val innerPayload = JSONObject()
        try {
            // generating inner payload
            innerPayload.put("action", "initiate")
            innerPayload.put("clientId", "CLIENT_ID")                // Put your Client ID here
            innerPayload.put("environment", "production")
            innerPayload.put("issuingPsp", "YES_BIZ")
            innerPayload.put("clientAuthToken", "token")                 

            // block:start:generatingRequestId
            sdkPayload.put("requestId",  ""+ UUID.randomUUID())
            // block:end:generatingRequestId
            sdkPayload.put("service", "in.juspay.hyperapi")
            sdkPayload.put("payload", innerPayload)

        } catch (e: Exception) {
            e.printStackTrace()
        }
        return sdkPayload
    }
    //block:end:create-initiate-payload-clientAuthToken


    //block:start:initiate-sdk
    private fun initiatePaymentsSDK() {
        if (!hyperServicesHolder!!.isInitiated) {
            initiatePayload = createInitiatePayload()
            hyperServicesHolder!!.initiate(createInitiatePayload())
        }
    }
    //block:end:initiate-sdk

    //block:start:create-hyper-callback
    private fun createHyperPaymentsCallbackAdapter(): HyperPaymentsCallbackAdapter {
        return object : HyperPaymentsCallbackAdapter() {
            override fun onEvent(jsonObject: JSONObject, responseHandler: JuspayResponseHandler?) {
                try {
                  // block:start:handle-sdk-response
                    val event = jsonObject.getString("event")

                    // block:start:hide-loader
                    if (event == "hide_loader") {
                        // Hide Loader
                    }
                    // block:end:hide-loader

                    // block:start:show-loader
                    else if (event == "show_loader") {
                        // Show some loader
                    }
                    // block:end:show-loader

                    // block:start:initiate-result
                    else if (event == "initiate_result") {
                        val innerPayload = jsonObject.optJSONObject("payload")
                    }
                    // block:end:initiate-result

                    // block:start:process-result
                    else if (event == "process_result") {
                        val innerPayload = jsonObject.optJSONObject("payload")
                    }
                    // block:end:process-result

                    // block:start:log-stream
                    else if (event == "log_stream") {
                        val innerPayload = jsonObject.optJSONObject("payload")
                    }
                    // block:end:log-stream

                    // block:start:session-expiry
                    else if (event == "session_expired") {
                        // Handle Session Expiry
                    }
                    // block:end:session-expiry

                } catch (e: Exception) {
                    // merchant code...
                }
                // block:end:handle-sdk-response
            }
        }
    }
    //block:end:create-hyper-callback

    // block:start:process-sdk
    fun callProcess(sdk_payload: JSONObject?) {
        val sdkPayload = JSONObject()
        val innerPayload = JSONObject()
        try {
            // generating inner payload
            innerPayload.put("action", "upiCheckPermission")

            sdkPayload.put("requestId",  ""+ UUID.randomUUID())
            sdkPayload.put("service", "in.juspay.hyperapi")
            sdkPayload.put("payload", innerPayload)

        } catch (e: Exception) {
            e.printStackTrace()
        }
        if(hyperServicesHolder!!.isInitiated)
        hyperServicesHolder?.process(sdk_payload)
    }
    // block:end:process-sdk

  // block:start:terminate
  fun callTerminate() {
    hyperServicesHolder?.terminate()
  }
  // block:start:terminate

  //block:start:onBackPressed
    override fun onBackPressed() {
        val handleBackpress: Boolean = hyperServicesHolder?.handleBackPress() == true
        if (handleBackpress) {
            super.onBackPressed()
        }
    }
   //block:end:onBackPressed

    @Override
    public void onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        // block:start:onActivityResult

        // If super.onActivityResult is available use following:
        super.onActivityResult(requestCode, resultCode, data);

        // In case super.onActivityResult is NOT available please use following:
        if (data != null) {
            hyperServices.onActivityResult(requestCode, resultCode, data);
        }

        // block:end:onActivityResult

        // Rest of your code.
    }

    @Override
    public void onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        // block:start:onRequestPermissionsResult

        //  If super.onRequestPermissionsResult is available use following:
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // In case super.onActivityResult is NOT available please use following:
        hyperServices.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // block:end:onRequestPermissionsResult
    }

}
```


---

## See Also

- [Initiating the SDK](https://juspay.io/in/docs/upi-tpap-sdk/android/interaction-with-sdk/initiating-the-sdk)
- [Handle SDK Response](https://juspay.io/in/docs/upi-tpap-sdk/android/interaction-with-sdk/handle-sdk-response)
