230 lines
9.9 KiB
Markdown
230 lines
9.9 KiB
Markdown
|
# Проведение платежа через SberSDK
|
|||
|
|
|||
|
Функциональность доступна ограниченному кругу наших клиентов, так как находится в тестировании. Чтобы попасть в число ранних пользователей необходимо связаться со своим менеджером и запросить доступ.
|
|||
|
|
|||
|
- [Настройка оплаты через SberPay с нуля](#чистая-настройка)
|
|||
|
- [Переход со старой версии SberPay](#переход-на-новую-версию)
|
|||
|
|
|||
|
С помощью SDK можно провести и подтвердить платеж через актуальное приложение Сбербанка, если оно установленно, иначе с подтверждением по смс.
|
|||
|
|
|||
|
## <a name="чистая-настройка"></a> Настройка оплаты через 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
|
|||
|
<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>
|
|||
|
```
|
|||
|
|
|||
|
Для **android** в ваш файл build.gradle в блок android.defaultConfig добавьте строку
|
|||
|
|
|||
|
```
|
|||
|
android {
|
|||
|
defaultConfig {
|
|||
|
resValue "string", "ym_app_scheme", "exampleapp"
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
или добавить в ваш strings.xml строку вида:
|
|||
|
```
|
|||
|
<resources>
|
|||
|
<string name="ym_app_scheme" translatable="false">exampleapp</string>
|
|||
|
</resources>
|
|||
|
```
|
|||
|
|
|||
|
где `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` новые схемы для обращения в сервисам Сбера
|
|||
|
|
|||
|
```
|
|||
|
<key>LSApplicationQueriesSchemes</key>
|
|||
|
<array>
|
|||
|
<string>sbolidexternallogin</string>
|
|||
|
<string>sberbankidexternallogin</string>
|
|||
|
</array>
|
|||
|
```
|
|||
|
|
|||
|
и расширенные настройки для http-соединений к сервисам Сбера
|
|||
|
|
|||
|
```
|
|||
|
<key>NSAppTransportSecurity</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionDomains</key>
|
|||
|
<dict>
|
|||
|
<key>gate1.spaymentsplus.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
<key>ift.gate2.spaymentsplus.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
<key>cms-res.online.sberbank.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
</dict>
|
|||
|
</dict>
|
|||
|
```
|
|||
|
|
|||
|
### 4. Подтверждение платежа. При необходимости система может запросить процесс подтверждения платежа, при котором пользователь подтверждает транзакцию с помощью сервисов Сбера. Ссылку вы получаете от бекенда Кассы после проведения платежа на шаге 4.
|
|||
|
|
|||
|
```dart
|
|||
|
var clientApplicationKey = "<Ключ для клиентских приложений>";
|
|||
|
var shopId = "<Идентификатор магазина в ЮKassa)>";
|
|||
|
|
|||
|
await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId);
|
|||
|
// обработайте результат подтверждения на следущей строке (после возврата управления)
|
|||
|
```
|
|||
|
Завершение процесса `YookassaPaymentsFlutter.confirmation` не несет информацию о том, что пользователь фактически подтвердил платеж (он мог его пропустить). После получения результата рекомендуем запросить статус платежа.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## <a name="переход-на-новую-версию"></a> Переход на новую версию 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` заменить схему для обращений в сервисам Сбера
|
|||
|
|
|||
|
```
|
|||
|
<key>LSApplicationQueriesSchemes</key>
|
|||
|
<array>
|
|||
|
<string>sberpay</string>
|
|||
|
</array>
|
|||
|
```
|
|||
|
на обновленную версию
|
|||
|
```
|
|||
|
<key>LSApplicationQueriesSchemes</key>
|
|||
|
<array>
|
|||
|
<string>sbolidexternallogin</string>
|
|||
|
<string>sberbankidexternallogin</string>
|
|||
|
</array>
|
|||
|
```
|
|||
|
|
|||
|
2. Добавить расширенные настройки для http-соединений к сервисам Сбера
|
|||
|
|
|||
|
```
|
|||
|
<key>NSAppTransportSecurity</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionDomains</key>
|
|||
|
<dict>
|
|||
|
<key>gate1.spaymentsplus.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
<key>ift.gate2.spaymentsplus.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
<key>cms-res.online.sberbank.ru</key>
|
|||
|
<dict>
|
|||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|||
|
<true/>
|
|||
|
</dict>
|
|||
|
</dict>
|
|||
|
</dict>
|
|||
|
```
|