Как подключить Юкасса в SwiftUI?

есть ли у кого нибудь опыт подключения Юкассы в проект на swiftUI? Пытаюсь разобраться с их мануалом на сайте https://git.yoomoney.ru/projects/SDK/repos/yookassa-payments-swift/browse Но он написан на UIKit. Вот что написал сам, но куча ошибок. А дальше не знаю, что делать.

import Foundation
import UIKit
import SwiftUI
import YooKassaPayments


struct ViewController: UIViewControllerRepresentable {
    
    func makeUIViewController(context: Context) -> ViewControllerUkassa {
        ViewControllerUkassa()
    }
    
    func updateUIViewController(_ uiViewController: ViewControllerUkassa, context: Context) {}
}

class ViewControllerUkassa: UIViewController {
    
    weak var tokenizationModuleInput: TokenizationModuleInput?
    
    var token: Tokens?
        var paymentMethodType: PaymentMethodType?
        lazy var settings: Settings = {
            if let settings = settingsService.loadSettingsFromStorage() {
                return settings
            } else {
                let settings = Settings()
                settingsService.saveSettingsToStorage(settings: settings)

                return settings
            }
        }()

    // Настройка параметраплатежа
    let tokenizationModuleInputData = TokenizationModuleInputData (clientApplicationKey: "Ключ для клиентских приложений",
                                                                   shopName: "Космические объекты",
                                                                   purchaseDescription: """
                                                                                         Комета повышенной яркости, период обращения — 112 лет
                                                                                         """,
                                                                   amount: Amount(value: 999.99, currency: .rub),
                                                                   tokenizationSettings: makeTokenizationSettings(),
                                                                   savePaymentMethod: .on)

    
    let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)
    
    let viewController = TokenizationAssembly.makeModule(inputData: inputData,
                                                           moduleOutput: self)

    // Создайте пустой OptionSet PaymentMethodTypes
    let tokenizationSettings = TokenizationSettings(paymentMethodTypes: paymentMethodTypes)
    
    private func makeTokenizationSettings() -> TokenizationSettings {
        var paymentTypes: PaymentMethodTypes = []

        if settings.isBankCardEnabled {
            paymentTypes.insert(.bankCard)
        }

        return TokenizationSettings(
            paymentMethodTypes: paymentTypes
        )
    }
    
    
}

extension ViewControllerUkassa: TokenizationModuleOutput {
    
    func tokenizationModule(
            _ module: TokenizationModuleInput,
            didTokenize token: Tokens,
            paymentMethodType: PaymentMethodType
        ) {
            DispatchQueue.main.async { [weak self] in
                guard let self = self else { return }
                self.dismiss(animated: true)
            }
            // Отправьте токен в вашу систему
        }

        func didFinish(
            on module: TokenizationModuleInput,
            with error: YooKassaPaymentsError?
        ) {
            DispatchQueue.main.async { [weak self] in
                guard let self = self else { return }
                self.dismiss(animated: true)
            }
        }

        func didFinishConfirmation(
            paymentMethodType: PaymentMethodType
        ) {
            DispatchQueue.main.async { [weak self] in
                guard let self = self else { return }

                // Создать экран успеха после прохождения подтверждения (3DS или Sberpay)
                self.dismiss(animated: true)
                // Показать экран успеха
            }
        }
}

Помогите, пожалуйста.


Ответы (0 шт):