With the SDK ready, it’s time to create a transaction.

Initialize the SDK

To initialize the SDK, call the .init() method on the SDK.
import gr4vy_ios

let result = Gr4vy.init(
  gr4vyId: "mattilda",
  token: "[TOKEN]",
  amount: 1299,
  currency: "MXN",
  country: "MX",
  buyerId: nil,
  environment: Gr4vyEnvironment.sandbox
)
Replace the [TOKEN] with the JWT created in step 2. Additional options can be provided when launching the SDK.

Launch & handle events

Next, it’s time to open the payment sheet with the .launch() method. The launch method requires attaching an event handler that listens for transactions that have been created or failed, as well as more generic errors.
result?.launch(presentingViewController: self, onEvent: { event in
    switch event {
    case .transactionFailed(let transactionID, let status, let paymentMethodID, let responseCode):
        print("Handle a transaction failure, ID: \(transactionID), Status: \(status), PaymentMethodID: \(paymentMethodID ?? "Unknown"), ResponseCode: \(responseCode ?? "Unknown")")
    case .transactionCreated(let transactionID, let status, let paymentMethodID):
        print("Handle successful transaction, ID: \(transactionID), Status: \(status), PaymentMethodID: \(paymentMethodID ?? "Unknown")")
    case .generalError(let error):
        print("Error: \(error.description)")
    }
})
When calling .launch() the presentingViewController is the current view controller this SDK is launched from. The SDK will present the payment sheet on top of the current view controller, passing events back to the presenting view controller via the onEvent callback.
Learn more about the events triggered by the iOS SDK in our events guide.