# Проведение платежа через 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
```