# Get Mini iOS SDK Overview

The Get Mini mPOS SDK for iOS enables you to integrate secure, card-present payment capabilities into your native applications. By leveraging a Bluetooth-connected PIN pad device, you can transform an iOS device into a mobile point-of-sale (mPOS) terminal.

## Architecture

The SDK is provided as a static library accompanied by a set of Objective-C headers. It adopts a modular architecture designed to abstract the complexities of hardware communication and financial protocols.

The ecosystem consists of three main components:

**Your iOS Application**: Manages your business logic, product catalog, and user interface. It interacts with the SDK using the `RedsysPinpadManager` and `RedsysConfigurationManager` classes.

**The mPOS Framework**: Orchestrates the communication between your app and the hardware. It handles the low-level Bluetooth stack, encryption, and gateway communication.

**The Physical PIN pad**: A Bluetooth card reader (Ingenico, Itos, Spire, or Verifone) that securely captures card data (Chip, Contactless, or Magnetic Stripe) and customer PINs.

## The mPOS Lifecycle

Processing a transaction follows a strict sequence to ensure security and data integrity.

### 1. Initialization and Licensing

Before any operation, the SDK must be "unlocked" using a license key tied to your application's Bundle ID. You must also define the execution environment (Development, Integration, Certification, or Production) via the `CommonUtils` class.

### 2. Merchant Configuration (Login)

The SDK requires valid merchant credentials (FUC and Terminal ID). These are typically retrieved through a login process using `RedsysConfigurationManager`, which synchronizes the terminal's configuration with the Get Mini gateway.

### 3. Device Discovery and Connection

Because iOS restricts Bluetooth communication with external hardware, the SDK uses the External Accessory Framework. The `RedsysPinpadManager` handles the discovery of paired PIN pads that match the protocols declared in your project's `Info.plist`.

### 4. Transaction Execution

Once a device is selected, your app sends a payment request (`PagoDTO`) containing the amount, currency code, and order reference. The SDK manages the entire interaction:

- Waking up the PIN pad
- Prompting for card insertion/tap
- Handling PIN entry on the hardware keypad
- Sending encrypted data to the gateway

### 5. Result Handling

The result is delivered asynchronously via delegate protocols (`RedsysBTPinpadPaymentDelegate`, `RedsysDelegateGeneric`). If approved, the app receives an authorization code in the `onPaymentFinished` callback; if denied, it receives a specific error code for troubleshooting.

## Key Features

**Multi-Vendor Support**: A single integration supports hardware from Ingenico, Itos, Spire, and Verifone.

**Hardware-Side Capture**: Card reading and PIN entry happen on the certified PIN pad, not on the iOS device.

**Signature Management**: Automated flow for digital signature capture when required by the card type (Offline/No-PIN transactions).

**Modular UI**: Use the `RedsysPinpadManager` built-in payment flow for a streamlined experience or implement custom UI by directly handling the delegate callbacks for complete control over the user interface.

## Integration Approaches

Depending on your business needs, you can integrate Get Mini payments in two ways:

**Native SDK (Direct)**: As documented here, you embed the library directly into your app. This offers the most seamless user experience.

**App2App**: You invoke the standalone "Get Mini" application installed on the device. This requires minimal coding, but involves switching between two apps during the sale.

## Next Steps

* [Install the SDK](/en/get-mini/ios-sdk/first-steps/install-the-sdk) - Configure your Xcode project with the necessary libraries and linker flags
* [Configure Info.plist](/en/get-mini/ios-sdk/first-steps/configure-ios-permissions) - Add the mandatory Bluetooth and External Accessory protocol strings
* [Quickstart: Your First Sale](/en/get-mini/ios-sdk/first-steps/ios-sdk-quickstart) - Run your first test transaction in the "des" (Development) environment