![](https://i.imgur.com/ULmPUgP.jpg) :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`. ![](https://i.imgur.com/17gAyWb.png) :arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw) <details> <summary>Служба підтримки XPAY</summary> </br> Телефон: +38 093 891 92 00 Email: info@xpay.com.ua Telegram: @xpaysupportbot </details>