---
page_title: Handle SDK Response
product: UPI Plugin SDK
platform: iOS
page_source: https://juspay.io/in/docs/upi-plugin-sdk/ios/interaction-with-sdk/handle-sdk-response
llms_txt: https://juspay.io/in/docs/llms.txt
product_llms_txt: https://juspay.io/in/docs/upi-plugin-sdk/llms.txt
---


## Handle SDK Response




###   Handle Events from SDK


**HyperPaymentsCallbackAdapter** is an interface method to handle callbacks/outputs from sdk. HyperSDK uses a single point of communication(HyperPaymentsCallbackAdapter) with continuous events triggered during a payment lifecycle. Implement the highlighted code snippet in your app for proper handling of all events and status.



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
// Importing Hyper SDK
// block:start:import-hyper-sdk
#import <HyperSDK/HyperSDK.h>
// block:end:import-hyper-sdk

@interface ViewController ()

// Declaring HyperServices property
@property (nonatomic, strong) HyperServices *hyperInstance;
@property (nonatomic, copy) HyperSDKCallback hyperCallbackHandler;

@end

@implementation ViewController


// Creating initiate payload JSON object
// block:start:create-initiate-payload
- (NSDictionary *)createInitiatePayload {

    NSDictionary *innerPayload = @{
        @"action": @"initiate",
        @"merchantKeyId": @"<MERCHANT_KEY_ID>",
        @"clientId": @"<CLIENT_ID>",
        @"environment": @"production",
        @"issuingPsp": @"YES_BIZ",
        @"signature": @"....",
        @"signaturePayload": signaturePayload
    };

    // block:start:generatingRequestId
    NSUUID *uuid = [NSUUID UUID];
    NSString *requestId = [uuid UUIDString];
    // block:end:generatingRequestId

    NSDictionary *sdkPayload = @{
        @"requestId": requestId,
        @"service": @"in.juspay.hyperapi",
        @"payload": innerPayload
    };

    NSDictionary *ignaturePayload = @{
        @"merchant_id": @"<MERCHANT_ID>",
        @"customer_id": @"<CUSTOMER_ID>",
        @"timestamp": @"<timestamp>"
    };

    return sdkPayload;
}
// block:end:create-initiate-payload


// Creating initiate payload JSON object (clientAuthToken)
// block:start:create-initiate-payload-clientAuthToken
- (NSDictionary *)createInitiatePayload {

    NSDictionary *innerPayload = @{
        @"action": @"initiate",
        @"clientId": @"<CLIENT_ID>",
        @"environment": @"production",
        @"issuingPsp": @"YES_BIZ",
        @"clientAuthToken": @"token",
    };

    // block:start:generatingRequestId
    NSUUID *uuid = [NSUUID UUID];
    NSString *requestId = [uuid UUIDString];
    // block:end:generatingRequestId

    NSDictionary *sdkPayload = @{
        @"requestId": requestId,
        @"service": @"in.juspay.hyperapi",
        @"payload": innerPayload
    };

    return sdkPayload;
}
// block:end:create-initiate-payload-clientAuthToken

- (void)viewDidLoad {

    [super viewDidLoad];

    //block:start:create-hyper-services-instance
    self.hyperInstance = [[HyperServices alloc] init];
    //block:end:create-hyper-services-instance

    //block:start:create-hyper-callback
    self.hyperCallbackHandler = ^(NSDictionary<NSString *,id> * _Nullable response) {
        NSDictionary *data = response;
        NSString *event = data[@"event"];

        // block:start:show-loader
        if ([event isEqualToString:@"show_loader"]) {
            // Show some loader here
        }
        // block:end:show-loader

        // block:start:hide-loader
        else if ([event isEqualToString:@"hide_loader"]) {
            // Hide Loader
        }
        // block:end:hide-loader

        // block:start:initiate-result
        else if ([event isEqualToString:@"initiate_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
        // block:end:initiate-result

        // block:start:process-result
        else if ([event isEqualToString:@"process_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
        // block:end:process-result

        // block:start:log-stream
        else if ([event isEqualToString:@"log_stream"]) {
            NSString *dataString = [[NSString alloc] initWithData:data
                                             encoding:NSUTF8StringEncoding];
            NSLog(@"Log stream response :- %@", dataString);
        }
        // block:end:log-stream

        // block:start:session-expiry
        else if ([event isEqualToString:@"session_expiry"]) {
            // Handle Session Expiry
        }
        // block:end:session-expiry
    };
    //block:end:create-hyper-callback

}


- (IBAction)initiateHyperSDK:(id)sender {
    // block:start:initiate-sdk
    NSDictionary *initPayload = [self createInitiatePayload];
    [self.hyperInstance initiate:self payload:initPayload callback:self.hyperCallbackHandler];
    // block:end:initiate-sdk
}
- (IBAction)callProcess:(id)sender {
    // block:start:process-sdk
    NSDictionary *innerPayload = @{
        @"action": @"upiCheckPermission"
    };

    NSDictionary *processPayload = @{
        @"requestId": NSUUID.UUID.UUIDString,
        @"service": @"in.juspay.hyperpay",
        @"payload": innerPayload
    };

    if([self.hyperInstance isInitialised]) {
        [self.hyperInstance process:processPayload];
    }
    // block:end:process-sdk
}

// block:start:terminate
- (IBAction)callTerminate:(id)sender {
    [self.hyperInstance terminate]
}
// block:end:terminate

@end
```

#### Swift Code Snippet:

```swift
import UIKit

// Importing Hyper SDK
// block:start:import-hyper-sdk
import HyperSDK
// block:end:import-hyper-sdk


class ViewController: UIViewController {

    // Creating an object of HyperServices class.
    // block:start:create-hyper-services-instance
    let hyperInstance = HyperServices();
    // block:end:create-hyper-services-instance


    override func viewDidLoad() {
        super.viewDidLoad()
    }


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "merchantKeyId": "<MERCHANT_KEY_ID>",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "signature": "....",
            "signaturePayload": signaturePayload
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        let signaturePayload : [String: Any] = [
            "merchant_id": "<MERCHANT_ID>",
            "customer_id": "<CUSTOMER_ID>",
            "timestamp": "<timestamp>"
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload-clientAuthToken
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "clientAuthToken": "token",
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload-clientAuthToken


    // Creating HyperPaymentsCallbackAdapter
    // This callback will get all events from hyperService instance
    // block:start:create-hyper-callback
    func hyperCallbackHandler(response : (Optional<Dictionary<String, Any>>)) {
        if let data = response, let event = data["event"] as? String {
          // block:start:handle-sdk-response

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

            // block:start:hide-loader
            else if (event == "hide_loader") {
                // Hide Loader
            }
            // block:end:hide-loader
            
            // block:start:initiate-result
            else if (event == "initiate_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:initiate-result

            // block:start:process-result
            else if (event == "process_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:process-result

            // block:start:log-stream
            else if (event == "log_stream") {
                // Get the response
                NSLog("Log stream response :- %@", HelperShared.JSONToString(data: response as Any))
            }
            // block:end:log-stream

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

          // block:start:handle-sdk-response
        }

    }
    // block:end:create-hyper-callback

    @IBAction func initiateHyperSDK(_ sender: Any) {
        // block:start:initiate-sdk
        hyperInstance.initiate(
            self,
            payload: createInitiatePayload(),
            callback: hyperCallbackHandler
        )
        // block:end:initiate-sdk
    }

    @IBAction func callProcess(_ sender: Any) {

        let innerPayload : [String: Any] = [
            "action": "upiCheckPermission"
        ];

        let processPayload : [String: Any] = [
            "requestId": UUID().uuidString,
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        // block:start:process-sdk
        if (self.hyperInstance.isInitialised()) {
            hyperInstance.baseViewController = self
            self.hyperInstance.process(processPayload)
        }
        // block:end:process-sdk
    }

    // block:start:terminate
    @IBAction func callTerminate(_ sender: Any) {
        self.hyperInstance.terminate()
    }
    // block:end:terminate

}
```



###   Event: show_loader


This event implies merchant has triggered sdk and needs to show loader until UI is loaded.



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
if ([event isEqualToString:@"show_loader"]) {
            // Show some loader here
        }
```

#### Swift Code Snippet:

```swift
if (event == "show_loader") {
                // Show some loader here
            }
```



###   Event: hide_loader


This event implies that UI is loaded and loader can be stopped or hidden.



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
else if ([event isEqualToString:@"hide_loader"]) {
            // Hide Loader
        }
```

#### Swift Code Snippet:

```swift
else if (event == "hide_loader") {
                // Hide Loader
            }
```



###   Event: initiate_result


This event contains the response of `initiate` action.



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
else if ([event isEqualToString:@"initiate_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
```

#### Swift Code Snippet:

```swift
else if (event == "initiate_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
```



###   Event: process_result


This event contains the response of different `process` actions called. For process operations [Click Here](../ui-process-payloads/inapp-ui).



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
else if ([event isEqualToString:@"process_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
```

#### Swift Code Snippet:

```swift
else if (event == "process_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
```



###   Event: log_stream


This event contains the various Clickstream events that SDK provides to know the user actions in the application.

> **Warning**
> For enabling Clickstream events, logLevel key is mandatory in [intiate payload](../miscellaneous/additional-parameters). The value of this key should be 1.





#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
else if ([event isEqualToString:@"log_stream"]) {
            NSString *dataString = [[NSString alloc] initWithData:data
                                             encoding:NSUTF8StringEncoding];
            NSLog(@"Log stream response :- %@", dataString);
        }
```

#### Swift Code Snippet:

```swift
else if (event == "log_stream") {
                // Get the response
                NSLog("Log stream response :- %@", HelperShared.JSONToString(data: response as Any))
            }
```



###   Event: session_expired


This event is given when signature or clientAuthToken expires. For more details [Click Here](../miscellaneous/session-expiry).



#### Code Snippets: -

#### Objective-C Code Snippet:

```objective-c
else if ([event isEqualToString:@"session_expiry"]) {
            // Handle Session Expiry
        }
```

#### Swift Code Snippet:

```swift
import UIKit

// Importing Hyper SDK
// block:start:import-hyper-sdk
import HyperSDK
// block:end:import-hyper-sdk


class ViewController: UIViewController {

    // Creating an object of HyperServices class.
    // block:start:create-hyper-services-instance
    let hyperInstance = HyperServices();
    // block:end:create-hyper-services-instance


    override func viewDidLoad() {
        super.viewDidLoad()
    }


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "merchantKeyId": "<MERCHANT_KEY_ID>",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "signature": "....",
            "signaturePayload": signaturePayload
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        let signaturePayload : [String: Any] = [
            "merchant_id": "<MERCHANT_ID>",
            "customer_id": "<CUSTOMER_ID>",
            "timestamp": "<timestamp>"
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload-clientAuthToken
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "clientAuthToken": "token",
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload-clientAuthToken


    // Creating HyperPaymentsCallbackAdapter
    // This callback will get all events from hyperService instance
    // block:start:create-hyper-callback
    func hyperCallbackHandler(response : (Optional<Dictionary<String, Any>>)) {
        if let data = response, let event = data["event"] as? String {
          // block:start:handle-sdk-response

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

            // block:start:hide-loader
            else if (event == "hide_loader") {
                // Hide Loader
            }
            // block:end:hide-loader
            
            // block:start:initiate-result
            else if (event == "initiate_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:initiate-result

            // block:start:process-result
            else if (event == "process_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:process-result

            // block:start:log-stream
            else if (event == "log_stream") {
                // Get the response
                NSLog("Log stream response :- %@", HelperShared.JSONToString(data: response as Any))
            }
            // block:end:log-stream

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

          // block:start:handle-sdk-response
        }

    }
    // block:end:create-hyper-callback

    @IBAction func initiateHyperSDK(_ sender: Any) {
        // block:start:initiate-sdk
        hyperInstance.initiate(
            self,
            payload: createInitiatePayload(),
            callback: hyperCallbackHandler
        )
        // block:end:initiate-sdk
    }

    @IBAction func callProcess(_ sender: Any) {

        let innerPayload : [String: Any] = [
            "action": "upiCheckPermission"
        ];

        let processPayload : [String: Any] = [
            "requestId": UUID().uuidString,
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        // block:start:process-sdk
        if (self.hyperInstance.isInitialised()) {
            hyperInstance.baseViewController = self
            self.hyperInstance.process(processPayload)
        }
        // block:end:process-sdk
    }

    // block:start:terminate
    @IBAction func callTerminate(_ sender: Any) {
        self.hyperInstance.terminate()
    }
    // block:end:terminate

}
```


---

## Complete Code Reference

The following code files are referenced in the steps above:

### ViewController.m

```
// Importing Hyper SDK
// block:start:import-hyper-sdk
#import <HyperSDK/HyperSDK.h>
// block:end:import-hyper-sdk

@interface ViewController ()

// Declaring HyperServices property
@property (nonatomic, strong) HyperServices *hyperInstance;
@property (nonatomic, copy) HyperSDKCallback hyperCallbackHandler;

@end

@implementation ViewController


// Creating initiate payload JSON object
// block:start:create-initiate-payload
- (NSDictionary *)createInitiatePayload {

    NSDictionary *innerPayload = @{
        @"action": @"initiate",
        @"merchantKeyId": @"<MERCHANT_KEY_ID>",
        @"clientId": @"<CLIENT_ID>",
        @"environment": @"production",
        @"issuingPsp": @"YES_BIZ",
        @"signature": @"....",
        @"signaturePayload": signaturePayload
    };

    // block:start:generatingRequestId
    NSUUID *uuid = [NSUUID UUID];
    NSString *requestId = [uuid UUIDString];
    // block:end:generatingRequestId

    NSDictionary *sdkPayload = @{
        @"requestId": requestId,
        @"service": @"in.juspay.hyperapi",
        @"payload": innerPayload
    };

    NSDictionary *ignaturePayload = @{
        @"merchant_id": @"<MERCHANT_ID>",
        @"customer_id": @"<CUSTOMER_ID>",
        @"timestamp": @"<timestamp>"
    };

    return sdkPayload;
}
// block:end:create-initiate-payload


// Creating initiate payload JSON object (clientAuthToken)
// block:start:create-initiate-payload-clientAuthToken
- (NSDictionary *)createInitiatePayload {

    NSDictionary *innerPayload = @{
        @"action": @"initiate",
        @"clientId": @"<CLIENT_ID>",
        @"environment": @"production",
        @"issuingPsp": @"YES_BIZ",
        @"clientAuthToken": @"token",
    };

    // block:start:generatingRequestId
    NSUUID *uuid = [NSUUID UUID];
    NSString *requestId = [uuid UUIDString];
    // block:end:generatingRequestId

    NSDictionary *sdkPayload = @{
        @"requestId": requestId,
        @"service": @"in.juspay.hyperapi",
        @"payload": innerPayload
    };

    return sdkPayload;
}
// block:end:create-initiate-payload-clientAuthToken

- (void)viewDidLoad {

    [super viewDidLoad];

    //block:start:create-hyper-services-instance
    self.hyperInstance = [[HyperServices alloc] init];
    //block:end:create-hyper-services-instance

    //block:start:create-hyper-callback
    self.hyperCallbackHandler = ^(NSDictionary<NSString *,id> * _Nullable response) {
        NSDictionary *data = response;
        NSString *event = data[@"event"];

        // block:start:show-loader
        if ([event isEqualToString:@"show_loader"]) {
            // Show some loader here
        }
        // block:end:show-loader

        // block:start:hide-loader
        else if ([event isEqualToString:@"hide_loader"]) {
            // Hide Loader
        }
        // block:end:hide-loader

        // block:start:initiate-result
        else if ([event isEqualToString:@"initiate_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
        // block:end:initiate-result

        // block:start:process-result
        else if ([event isEqualToString:@"process_result"]) {
            // Get the response
            NSDictionary *innerPayload = data[@"payload"]
        }
        // block:end:process-result

        // block:start:log-stream
        else if ([event isEqualToString:@"log_stream"]) {
            NSString *dataString = [[NSString alloc] initWithData:data
                                             encoding:NSUTF8StringEncoding];
            NSLog(@"Log stream response :- %@", dataString);
        }
        // block:end:log-stream

        // block:start:session-expiry
        else if ([event isEqualToString:@"session_expiry"]) {
            // Handle Session Expiry
        }
        // block:end:session-expiry
    };
    //block:end:create-hyper-callback

}


- (IBAction)initiateHyperSDK:(id)sender {
    // block:start:initiate-sdk
    NSDictionary *initPayload = [self createInitiatePayload];
    [self.hyperInstance initiate:self payload:initPayload callback:self.hyperCallbackHandler];
    // block:end:initiate-sdk
}
- (IBAction)callProcess:(id)sender {
    // block:start:process-sdk
    NSDictionary *innerPayload = @{
        @"action": @"upiCheckPermission"
    };

    NSDictionary *processPayload = @{
        @"requestId": NSUUID.UUID.UUIDString,
        @"service": @"in.juspay.hyperpay",
        @"payload": innerPayload
    };

    if([self.hyperInstance isInitialised]) {
        [self.hyperInstance process:processPayload];
    }
    // block:end:process-sdk
}

// block:start:terminate
- (IBAction)callTerminate:(id)sender {
    [self.hyperInstance terminate]
}
// block:end:terminate

@end
```

### ViewController.swift

```
import UIKit

// Importing Hyper SDK
// block:start:import-hyper-sdk
import HyperSDK
// block:end:import-hyper-sdk


class ViewController: UIViewController {

    // Creating an object of HyperServices class.
    // block:start:create-hyper-services-instance
    let hyperInstance = HyperServices();
    // block:end:create-hyper-services-instance


    override func viewDidLoad() {
        super.viewDidLoad()
    }


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "merchantKeyId": "<MERCHANT_KEY_ID>",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "signature": "....",
            "signaturePayload": signaturePayload
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        let signaturePayload : [String: Any] = [
            "merchant_id": "<MERCHANT_ID>",
            "customer_id": "<CUSTOMER_ID>",
            "timestamp": "<timestamp>"
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload


    // Creating initiate payload JSON object
    // block:start:create-initiate-payload-clientAuthToken
    func createInitiatePayload() -> [String: Any] {
        let innerPayload : [String: Any] = [
            "action": "initiate",
            "clientId": "<CLIENT_ID>",
            "environment": "production",
            "issuingPsp": "YES_BIZ",
            "clientAuthToken": "token",
        ];

        let sdkPayload : [String: Any] = [
            // block:start:generatingRequestId
            "requestId": UUID().uuidString,
            // block:start:generatingRequestId
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        return sdkPayload
    }
    // block:end:create-initiate-payload-clientAuthToken


    // Creating HyperPaymentsCallbackAdapter
    // This callback will get all events from hyperService instance
    // block:start:create-hyper-callback
    func hyperCallbackHandler(response : (Optional<Dictionary<String, Any>>)) {
        if let data = response, let event = data["event"] as? String {
          // block:start:handle-sdk-response

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

            // block:start:hide-loader
            else if (event == "hide_loader") {
                // Hide Loader
            }
            // block:end:hide-loader
            
            // block:start:initiate-result
            else if (event == "initiate_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:initiate-result

            // block:start:process-result
            else if (event == "process_result") {
                // Get the response
                HelperShared.showResponseOnResponseLabel(sself.view, false, response)
            }
            // block:end:process-result

            // block:start:log-stream
            else if (event == "log_stream") {
                // Get the response
                NSLog("Log stream response :- %@", HelperShared.JSONToString(data: response as Any))
            }
            // block:end:log-stream

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

          // block:start:handle-sdk-response
        }

    }
    // block:end:create-hyper-callback

    @IBAction func initiateHyperSDK(_ sender: Any) {
        // block:start:initiate-sdk
        hyperInstance.initiate(
            self,
            payload: createInitiatePayload(),
            callback: hyperCallbackHandler
        )
        // block:end:initiate-sdk
    }

    @IBAction func callProcess(_ sender: Any) {

        let innerPayload : [String: Any] = [
            "action": "upiCheckPermission"
        ];

        let processPayload : [String: Any] = [
            "requestId": UUID().uuidString,
            "service": "in.juspay.hyperapi",
            "payload": innerPayload
        ]

        // block:start:process-sdk
        if (self.hyperInstance.isInitialised()) {
            hyperInstance.baseViewController = self
            self.hyperInstance.process(processPayload)
        }
        // block:end:process-sdk
    }

    // block:start:terminate
    @IBAction func callTerminate(_ sender: Any) {
        self.hyperInstance.terminate()
    }
    // block:end:terminate

}
```


---

## See Also

- [Process](https://juspay.io/in/docs/upi-plugin-sdk/ios/interaction-with-sdk/process)
- [UPI Onboarding and Pay](https://juspay.io/in/docs/upi-plugin-sdk/ios/process-payloads/upi-onboarding)
