
:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)
# SDK IOS
:::info
[TOC]
:::
## Інтеграція
### Менеджер пакетів Swift
Це рекомендований підхід для інтеграції SDK із вашим додатком. Щоб отримати детальну інструкцію, можете слідувати посібнику Apple щодо [додавання пакета залежності](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app) до свого додатка.
### CocoaPods
1. Додайте наступний рядок до `podfile`:
```
pod 'XPayGatewaySDK', :git => 'https://gitlab.com/xpaygroup/xpay-payment-sdk.git'
```
2. Запустіть:
```
pod install
```
3. Імпортуйте модуль SDK:
```
swift
import XPayGatewaySDK
```
### Інсталяція динамічного фреймворку
1. Завантажте `XPayGatewaySDK.xcframework` із репозиторію.
2. Перетягніть `XPayGatewaySDK.xcframework` у проект вашої програми.
3. Встановіть залежність `SwiftCentrifuge`:
```
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "SwiftCentrifuge",
products: [
.library(name: "SwiftCentrifuge", targets: ["SwiftCentrifuge"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-protobuf", from:"1.7.0")
],
targets: [
.target(
name: "SwiftCentrifuge",
dependencies: ["SwiftProtobuf"]
),
.testTarget(
name: "SwiftCentrifugeTests",
dependencies: ["SwiftCentrifuge"]
)
]
)
```
4. Додайте XPayGatewaySDK.xcframework target як залежність:
* Перейдіть до `Build Phases` > `Target Dependencies`.
* Додайте `XPayGatewaySDK.xcframework`.
5. Переконайтесь, що фреймворк скопійований у пакет:
* Перейдіть до `Build Phases` > `New Copy Files Phase`.
* У розгорнутому меню `Destination` оберіть `Frameworks`.
* Додайте `XPayGatewaySDK.xcframework`.
6. Імпортуйте модуль SDK:
```
import XPayGatewaySDK
```
**Приклад:**
Функція **presentPaymentSheet** застосовується для відображення сторінки оплати.
**Параметри:**
* **configuration** **(XPayGatewaySDK.Configuration)**: об’єкт конфігурації, що надає необхідні деталі для сторінки оплати, такі як облікові дані API, налаштування користувача.
* **paymentInfo (XPayGatewaySDK.PaymentInfo)**: платіжна інформація, необхідна для обробки платежу, включаючи суму та деталі методу оплати.
* **startingScreen (XPayGatewaySDK.StartingScreen)**: стартова сторінка оплати.
* **viewController (UIViewController)**: шаблон, за яким формується сторінка оплати.
* **presentationStyle (UIModalPresentationStyle**, необов’язковий): стиль сторінки оплати. Значення за замовчуванням: `.automatic`.
* **appearance (XPayGatewaySDK.Appearance**, необов’язковий): конфігурація для налаштування зовнішнього вигляду сторінки оплати. Значення за замовчуванням: `nil`.
* **overrideTranslation ((TranslationOverrideUtil) -> Void**, необов’язковий): замикання, що дозволяє замінювати переклади локалізації. Для цього використовується параметр `TranslationOverrideUtil`. Значення за замовчуванням: `nil`.
* **isDebug (Bool**, необов’язковий): булева величина, що вказує, чи платіжна сторінка перебуває в режимі відлагодження. Значення за замовчуванням: `false`.
## Застосування
```
XPayGatewaySDK.presentPaymentSheet(
with: configuration,
paymentInfo: paymentInfo,
startingScreen: startingScreen,
in: viewController,
presentationStyle: presentationStyle,
appearance: appearance,
overrideTranslation: overrideTranslation,
isDebug: isDebug
)
```
## Зовнішній вигляд
Структура **Appearance** — це блок, що містить властивості зовнішнього вигляду різних частин фреймворку, включаючи меню навігації, checkout, форму оплати, квитанцію та вікна помилок.
```
let appearance = XPayGatewaySDK.Appearance(
navigationBarAppearance: .init(
titleTextAttributes: [
.foregroundColor: UIColor.green,
.font: UIFont.systemFont(ofSize: 16.0, weight: .regular)
],
backIndicatorImage: **nil**,
tintColor: UIColor.red
)
)
```
## Локалізація
**XPayGatewaySDK** визначає спосіб заміни перекладу локалізації. Це дозволяє налаштувати текст, що відображається на сторінці оплати в залежності від конкретної мови чи вимог програми. Функція **presentPaymentSheet** приймає необов’язковий параметр **overrideTranslation**, що дозволяє замінювати переклади за допомогою замикання, використовуючи параметр **TranslationOverrideUtil**.
1. Визначте замикання `overrideTranslation`:
```
let overrideTranslation: (TranslationOverrideUtil) -> Void = { translationUtil in
// Виконати заміну перекладу.
}
```
2. Всередині замикання ви маєте доступ до параметра `TranslationOverrideUtil` під назвою `translationUtil`, що визначає методи заміни перекладів.
3. Використовуйте метод `override` для заміни перекладу `translationUtil`. Цей метод використовує ключ `LocalizableKey`, мову `XPayGatewaySDK.Configuration.Language` та значення `String`.
4. Приклад використання замикання `overrideTranslation`:
```
let overrideTranslation: (TranslationOverrideUtil) -> Void = { translationUtil in
translationUtil.override(with: .orderTitle, for: .en, with: "Hello")
translationUtil.override(with: .orderAmount, for: .en, with: "World")
// За потреби додайте більше змін перекладу.
}
```
5. Передайте замикання `overrideTranslation` у функцію `presentPaymentSheet`.

:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)
<details>
<summary>Служба підтримки XPAY</summary>
</br>
Телефон: +38 093 891 92 00
Email: info@xpay.com.ua
Telegram: @xpaysupportbot
</details>