Как подключить Юкасса в 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)
// Показать экран успеха
}
}
}
Помогите, пожалуйста.