---
page_title: Process
product: UPI Plugin SDK
platform: iOS
page_source: https://juspay.io/in/docs/upi-plugin-sdk/ios/interaction-with-sdk/process
llms_txt: https://juspay.io/in/docs/llms.txt
product_llms_txt: https://juspay.io/in/docs/upi-plugin-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: -

#### Objective-C Code Snippet:

```objective-c
NSDictionary *innerPayload = @{
        @"action": @"upiCheckPermission"
    };

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

    if([self.hyperInstance isInitialised]) {
        [self.hyperInstance process:processPayload];
    }
```

#### Swift Code Snippet:

```swift
if (self.hyperInstance.isInitialised()) {
            hyperInstance.baseViewController = self
            self.hyperInstance.process(processPayload)
        }
```


The process operation can be related to:

* [Get Session token](../miscellaneous/get-session-token)
* [UPI Onboarding and Payment flow](../process-payloads/upi-onboarding)
* [UPI Profile management section](../process-payloads/upi-management)

---

## 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

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