- Migration guide
Для корректной работы сценария Sberpay
и авторизации в ЮMoney
через мобильное приложение, необходимо изменить некоторые парамтеры.
- В
TokenizationModuleInputData
необходимо передаватьapplicationScheme
- схема для возврата в приложение после успешной оплаты с помощьюSberpay
в приложении СберБанк Онлайн или после успешной авторизации вЮMoney
через мобильное приложение.
Пример applicationScheme
:
let moduleData = TokenizationModuleInputData(
...
applicationScheme: "examplescheme://"
-
В
AppDelegate
импортировать зависимостьYooKassaPayments
:import YooKassaPayments
-
Добавить обработку ссылок через
YKSdk
вAppDelegate
:
func application(
_ application: UIApplication,
open url: URL,
sourceApplication: String?,
annotation: Any
) -> Bool {
return YKSdk.shared.handleOpen(
url: url,
sourceApplication: sourceApplication
)
}
@available(iOS 9.0, *)
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
) -> Bool {
return YKSdk.shared.handleOpen(
url: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String
)
}
- Реализовать метод
didSuccessfullyConfirmation(paymentMethodType:)
протоколаTokenizationModuleOutput
, который будет вызван после успешного подтверждения платежа.
В Info.plist
добавить следующие строки:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>${BUNDLE_ID}</string>
<key>CFBundleURLSchemes</key>
<array>
<string>examplescheme</string>
</array>
</dict>
</array>
где examplescheme
- схема для открытия вашего приложения, которую вы указали в applicationScheme
при создании TokenizationModuleInputData
.
Для подтверждения платежа необходимо вызвать метод startConfirmationProcess(confirmationUrl:paymentMethodType:)
.
После успешного прохождения подтверждения будет вызван метод didSuccessfullyConfirmation(paymentMethodType:)
протокола TokenizationModuleOutput
.
Обратите внимание, что методы
start3dsProcess(requestUrl:)
иdidSuccessfullyPassedCardSec(on module:)
помечены какdeprecated
- используйтеstartConfirmationProcess(confirmationUrl:paymentMethodType:)
иdidSuccessfullyConfirmation(paymentMethodType:)
вместо них.
В Info.plist
добавить следующие строки:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>sberpay</string>
</array>
В Info.plist
добавить следующие строки:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>yoomoneyauth</string>
</array>
В версии 5.3.0 зависимости TMXProfiling
и TMXProfilingConnections
используются в виде .xcframework
.
Для корректной работы необходимо:
- Запросить у менеджера по подключению зависимости
TMXProfiling.xcframework
иTMXProfilingConnections.xcframework
- В разделе
General
у основного таргета проекта добавитьTMXProfiling.xcframework
иTMXProfilingConnections.xcframework
вFrameworks, Libraries, and Embedded Content
. - Удалить в
Build Phases
скрипт из файлаstrip_framework.sh
.
В версии 5.*.* был переименован модуль SDK и некоторые зависимости.
Для корректной интеграции SDK, нужно изменить некоторые параметры.
- pod
'YandexCheckoutPayments'
-> pod'YooKassaPayments'
- :git => 'https://github.com/yoomoney/yookassa-payments-swift.git'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/yoomoney-tech/cocoa-pod-specs.git'
platform :ios, '10.0'
use_frameworks!
target 'Your Target Name' do
pod 'YooKassaPayments',
:git => 'https://github.com/yoomoney/yookassa-payments-swift.git',
:tag => 'tag'
end
Поменять названия библиотек при импорте:
YandexCheckoutPayments
->YooKassaPayments
YandexCheckoutPaymentsApi
->YooKassaPaymentsApi
В методе didFinish(on module:error:)
протокола TokenizationModuleOutput
изменить тип ошибки:
YandexCheckoutPaymentsError
->YooKassaPaymentsError
Если вы передаете TokenizationSettings
в TokenizationModuleInputData
, необходимо изменить:
- элемент
PaymentMethodTypes
-yandexMoney
->yooMoney
- название параметра
showYandexCheckoutLogo
->showYooKassaLogo
В версии 4.*.* удалена зависимость YandexLoginSDK
.
Если вы используете эту библиотеку для своих целей, то нужно удалить только:
- из
Info.plist
по ключуCFBundleURLSchemes
ID из Яндекс.OAuth который передавался вYandexLoginService
- из файлов
Entitlements
ID из Яндекс.OAuth который передавался вYandexLoginService
- код связанный с
YandexLoginService
из AppDelegate
Если вы не использовали платежный метод "Яндекс.Деньги", и не подключали
YandexLoginSDK
, то этот блок можно пропустить.
Необходимо удалить интеграцию YandexLoginSDK
из вашего проекта.
- Удалить из
Info.plist
:
по ключу LSApplicationQueriesSchemes
параметры:
<array>
<string>yandexauth</string>
<string>yandexauth2</string>
</array>
по ключу CFBundleURLTypes
параметры:
<array>
<dict>
<key>CFBundleURLName</key>
<string>YandexLoginSDK</string>
<key>CFBundleURLSchemes</key>
<array>
<string>yx<ID из Яндекс.OAuth></string>
</array>
</dict>
</array>
- Удалить из файлов
Entitlements
:
applinks:yx<ID из Яндекс.OAuth>.oauth.yandex.ru
- Удалить код из AppDelegate:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
do {
try YandexLoginService.activate(withAppId: /* ID из Яндекс.OAuth */)
} catch {
// process error
}
return true
}
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
YandexLoginService.processUserActivity(userActivity)
return true
}
func application(_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
return YandexLoginService.handleOpen(url, sourceApplication: options[.sourceApplication] as? String)
}
В версии 4.*.* мы добавили зависимости из своего CocoaPods pod repo.
Чтобы они корректно работали, необходимо:
- В
Podfile
вашего проекто добавить ссылку вида:
source 'https://github.com/yoomoney-tech/cocoa-pod-specs.git'
или
source '[email protected]:yoomoney-tech/cocoa-pod-specs.git'
в зависимости от вашего подключения к github.com через CLI.
- Зависимость
MoneyAuth
подключается в виде.xcframework
, и к сожалению версия CocoaPods 1.9.3 не умеет корректно с ними работать.
Необходимо обновить версиюCocoaPods
выше 1.9.3
Для этого в консоли в директории с проектом выполните команду:
gem install cocoapods
Официальная документация по установке CocoaPods.
Какие версии CocoaPods есть.
Если вы используете
Bundler
для контроля зависимостейRubyGems
, то необходимо внести изменения вGemfile
.
В модели TokenizationModuleInputData
появился новый необязательный параметр, moneyAuthClientId
, который необходимо передавать.
Подробнее тут.
В TokenizationModuleInputData
появился новый обязательный параметр - savePaymentMethod
Если способ оплаты сохранен, магазин может совершать регулярные платежи с помощью токена.
Для этой настройки существует три варианта:
SavePaymentMethod.on
- Сохранить платёжный метод для проведения рекуррентных платежей.
Пользователю будут доступны только способы оплаты, поддерживающие сохранение.
На экране контракта будет отображено сообщение о том, что платёжный метод будет сохранён.
SavePaymentMethod.off
- Не дает пользователю выбрать, сохранять способ оплаты или нет.
SavePaymentMethod.userSelects
- Пользователь выбирает, сохранять платёжный метод или нет. Если метод можно сохранить, на экране контракта появится переключатель.
TokenizationAssembly.makeModule
now takesTokenizationFlow
model.
So, all what you need that's change:
let inputData = TokenizationModuleInputData( ... )
let viewController = TokenizationAssembly.makeModule(
inputData: inputData,
moduleOutput: self
)
to
let tokenizationModuleInputData = TokenizationModuleInputData( ... )
let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)
let viewController = TokenizationAssembly.makeModule(
inputData: inputData,
moduleOutput: self
)
TokenizationModuleOutput
was changed.
A method signature
func didFinish(on module: TokenizationModuleInput)
was changed to
func didFinish(on module: TokenizationModuleInput,
with error: YandexCheckoutPaymentsError?)
Подробнее про проведения рекуррентных платежей можно прочитать тут.