---
page_source: https://docs.juspay.io/upi-inapp/android/miscellaneous/terminate
page_title: Terminate SDK
---


## Terminate SDK




###   Call Terminate


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.



#### Code Snippets: -

#### Java Code Snippet:

```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.services.HyperServices;

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

	/*******************Integration reference start*****************************/
	//HyperSDK instance used for all operation on the sdk.
	//code-copy-marker
	
  // block:start:create-hyper-services-instance
  HyperServices hyperInstance  = new HyperServices(fragmentActivity, viewgroup);
  // block:end:create-hyper-services-instance

  initiateData = createInitiatePayload();
  initiateHyperSDK(initiateData);

  //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 {
            // 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 (Exception e) {
            e.printStackTrace();
        }
        return sdkPayload;
    }
  //block:end:create-initiate-payload

  public void initiateHyperSDK(JSONObject initiateData) {
		//Setting up a common callback adapter
		helper.showLoader();
    // block:start:create-hyper-callback
		final HyperPaymentsCallbackAdapter callbackAdapter = 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_expiry")){
                // Handle Session Expiry
              }
              // block:end:session-expiry

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

    // block:start:initiate-sdk
    hyperInstance.initiate(initiateData, callbackAdapter);
    // block:end:initiate-sdk
  }

  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 (hyperInstance.isInitialised()) {
      hyperInstance.process(processPayload);
    }
    // block:end:process-sdk
  }

  // block:start:terminate
  public void callTerminate() {
    hyperInstance.terminate();
  }
  // block:start:terminate

  //block:start:onBackPressed
  @Override
  public void onBackPressed() {
      boolean handleBackpress = hyperInstance.handleBackPress();
      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:
      hyperInstance.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }
  //block:end:onRequestPermissionsResult

```

#### Kotlin Code Snippet:

```kotlin
package `in`.juspay.devtools

import `in`.juspay.hypersdk.data.JuspayResponseHandler;
import `in`.juspay.hypersdk.ui.HyperPaymentsCallbackAdapter;
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()
    }
    //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: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_expiry") {
                        // 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
    }

}
```
