# Проведение платежа через SberSDK Функциональность доступна ограниченному кругу наших клиентов, так как находится в тестировании. Чтобы попасть в число ранних пользователей необходимо связаться со своим менеджером и запросить доступ. - [Настройка оплаты через SberPay с нуля](#чистая-настройка) - [Переход со старой версии SberPay](#переход-на-новую-версию) С помощью SDK можно провести и подтвердить платеж через актуальное приложение Сбербанка, если оно установленно, иначе с подтверждением по смс. ## Настройка оплаты через SberPay с нуля (!) Далее описание настройки метода `SberPay`, если ранее вы его не использовали. В `TokenizationModuleInputData` необходимо передавать `applicationScheme` – схема для возврата в приложение после успешной оплаты с помощью `SberPay` в приложении Сбербанка. Пример `applicationScheme`: ```dart let tokenizationModuleInputData = TokenizationModuleInputData( ... applicationScheme: "examplescheme://" ``` ## Чтобы провести платёж: ### 1. При создании `TokenizationModuleInputData` передайте значение `PaymentMethod.sberbank` в `tokenizationSettings`. ```dart var tokenizationSettings = const TokenizationSettings(PaymentMethodTypes([ PaymentMethod.sberbank ])); var tokenizationModuleInputData = TokenizationModuleInputData(clientApplicationKey: "<Ключ для клиентских приложений>", title: "Космические объекты", subtitle: "Комета повышенной яркости, период обращения — 112 лет", amount: Amount(value: 999.9, currency: Currency.rub), shopId: "<Идентификатор магазина в ЮKassa)>", savePaymentMethod: SavePaymentMethod.on, tokenizationSettings: tokenizationSettings); ``` ### 2. Запустите процесс токенизации, передав TokenizationModuleInputData ```dart var result = await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData); ``` ### 3. Получите токен ```dart var result = await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData); if (result is SuccessTokenizationResult) { var token = result.token; var paymentMethodType = result.paymentMethodType; } else if (result is ErrorTokenizationResult) { // обработайте ошибку } ``` ### 4. [Создайте платеж](https://yookassa.ru/developers/api#create_payment) с токеном по API ЮKassa. ## Для подтверждения платежа через приложение Сбербанка: ### 1. Добавьте уникальную схему диплинка Для **iOS** в `Info.plist` добавьте следующие строки: ```plistbase CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLName ${BUNDLE_ID} CFBundleURLSchemes examplescheme ``` Для **android** в ваш файл build.gradle в блок android.defaultConfig добавьте строку ``` android { defaultConfig { resValue "string", "ym_app_scheme", "exampleapp" } } ``` или добавить в ваш strings.xml строку вида: ``` exampleapp ``` где `examplescheme` - схема для открытия вашего приложения, которую вы указали в `applicationScheme` при создании `TokenizationModuleInputData`. Через эту схему будет открываться ваше приложение после успешной оплаты с помощью `SberPay`. ### 2. Для android подключите библиотеку профилирования формата .aar Попросите у менеджера по подключению библиотеку профилирования формата .aar. Создайте папку libs в модуле где подключаете sdk и добавьте туда файл aar-файл. В build.gradle того же модуля в dependencies добавьте: ```groovy dependencies { implementation fileTree(dir: "libs", include: ["*.aar"]) } ``` ### 3. Добавить в `Info.plist` новые схемы для обращения в сервисам Сбера ``` LSApplicationQueriesSchemes sbolidexternallogin sberbankidexternallogin ``` и расширенные настройки для http-соединений к сервисам Сбера ``` NSAppTransportSecurity NSExceptionDomains gate1.spaymentsplus.ru NSExceptionAllowsInsecureHTTPLoads ift.gate2.spaymentsplus.ru NSExceptionAllowsInsecureHTTPLoads cms-res.online.sberbank.ru NSExceptionAllowsInsecureHTTPLoads ``` ### 4. Подтверждение платежа. При необходимости система может запросить процесс подтверждения платежа, при котором пользователь подтверждает транзакцию с помощью сервисов Сбера. Ссылку вы получаете от бекенда Кассы после проведения платежа на шаге 4. ```dart var clientApplicationKey = "<Ключ для клиентских приложений>"; var shopId = "<Идентификатор магазина в ЮKassa)>"; await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId); // обработайте результат подтверждения на следущей строке (после возврата управления) ``` Завершение процесса `YookassaPaymentsFlutter.confirmation` не несет информацию о том, что пользователь фактически подтвердил платеж (он мог его пропустить). После получения результата рекомендуем запросить статус платежа. ## Переход на новую версию SberPay (!) Далее описание настройки новой версии метода `SberPay`, если ранее вы его уже использовали. Сценарий оплаты через `Sberpay` теперь происходит не в мобильном приложения, а через встроенное Sber SDK. ### Список изменений для android: Попросите у менеджера по подключению библиотеку формата `.aar`. Создайте папку libs в модуле где подключаете sdk и добавьте туда файл `B.aar`. В build.gradle того же модуля в dependencies добавьте: ```groovy dependencies { implementation fileTree(dir: "libs", include: ["*.aar"]) } ``` Также необходимо в метод `YookassaPaymentsFlutter.confirmation` передать параметр `clientApplicationKey` - ключ для клиентских приложений из личного кабинета ЮKassa ([раздел Настройки — Ключи API](https://yookassa.ru/my/api-keys-settings)); ```dart var clientApplicationKey = "<Ключ для клиентских приложений>"; var shopId = "<Идентификатор магазина в ЮKassa)>"; await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId); ``` ### Список изменений для iOS: 1. В вашем файле `Info.plist` заменить схему для обращений в сервисам Сбера ``` LSApplicationQueriesSchemes sberpay ``` на обновленную версию ``` LSApplicationQueriesSchemes sbolidexternallogin sberbankidexternallogin ``` 2. Добавить расширенные настройки для http-соединений к сервисам Сбера ``` NSAppTransportSecurity NSExceptionDomains gate1.spaymentsplus.ru NSExceptionAllowsInsecureHTTPLoads ift.gate2.spaymentsplus.ru NSExceptionAllowsInsecureHTTPLoads cms-res.online.sberbank.ru NSExceptionAllowsInsecureHTTPLoads ```