diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e75772..cf5d937 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ ### NEXT_VERSION_DESCRIPTION_BEGIN ### NEXT_VERSION_DESCRIPTION_END +## [1.7.1] (13-01-2025) + +* Up android native version to 7.0.2 +* Update SberPay documentation + ## [1.7.0] (14-10-2024) * Update mSDK version diff --git a/README.md b/README.md index 2722dcb..aaf7006 100644 --- a/README.md +++ b/README.md @@ -283,15 +283,31 @@ func application( 2. Получите токен. 3. [Создайте платеж](https://yookassa.ru/developers/api#create_payment) с токеном по API ЮKassa. -### SberPay +### SberPay (iOS) + +С помощью SDK можно провести и подтвердить платеж через актуальное приложение Сбера, если оно установленно. + +#### Обратите внимание +Для работы SberPay требуется уникальная URL-scheme зарегистрированная в системе Сбера. Запросите такую схему у нашего менеджера поддержки по адресу b2b_support@yoomoney.ru. + +Полученную от поддержки схему нужно зарегистрировать в файле вашего проекта, как показано ниже: + + +А также передайте ее в `TokenizationModuleInputData` в параметре `applicationScheme`. + +```dart +var tokenizationModuleInputData = TokenizationModuleInputData( + ... + applicationScheme: "sdkvzcyfyexmpl://" +``` Чтобы провести платёж: -1. При создании `TokenizationModuleInputData` в `TokenizationSettings` передайте значение `PaymentMethodTypes.sberbank`. +1. При создании `TokenizationModuleInputData` передайте значение `.sberbank` в `paymentMethodTypes`. 2. Получите токен. 3. [Создайте платеж](https://yookassa.ru/developers/api#create_payment) с токеном по API ЮKassa. -Для подтверждения платежа через приложение СберБанк Онлайн: +Для подтверждения платежа через приложение Сбербанка: 1. В `AppDelegate` импортируйте зависимость `YooKassaPayments`: @@ -305,7 +321,7 @@ func application( func application( _ application: UIApplication, open url: URL, - sourceApplication: String?, + sourceApplication: String?, annotation: Any ) -> Bool { return YKSdk.shared.handleOpen( @@ -313,14 +329,11 @@ func application( sourceApplication: sourceApplication ) } +``` 3. В `Info.plist` добавьте следующие строки: ```plistbase -LSApplicationQueriesSchemes - - sberpay - CFBundleURLTypes @@ -336,7 +349,91 @@ func application( ``` -где `examplescheme` - схема для открытия вашего приложения, которую вы указали в `applicationScheme` при создании `TokenizationModuleInputData`. Через эту схему будет открываться ваше приложение после успешной оплаты с помощью `SberPay`. +где `examplescheme` - схема для открытия вашего приложения, которую вы указали в `applicationScheme` при создании `TokenizationModuleInputData`. Через эту схему будет открываться ваше приложение после успешной авторизации с помощью `SberPay`. + +4. Добавить в `Info.plist` расширенные настройки для https-соединений к сервисам Сбера + +``` +NSAppTransportSecurity + + NSExceptionDomains + + gate1.spaymentsplus.ru + + NSExceptionAllowsInsecureHTTPLoads + + + ift.gate2.spaymentsplus.ru + + NSExceptionAllowsInsecureHTTPLoads + + + cms-res.online.sberbank.ru + + NSExceptionAllowsInsecureHTTPLoads + + + + +``` + +также, возникает требование расширить доступ приложения к данным пользователя для обеспечения безопасности проведения платежей + +``` +NSFaceIDUsageDescription +Так вы подтвердите, что именно вы выполняете вход +NSLocationWhenInUseUsageDescription +Данные о местонахождении собираются и отправляются на сервер для безопасного проведения оплаты +``` + +5. Обработайте результат выполнения `await YookassaPaymentsFlutter.confirmation`. Если в результате нет ошибки, значит процесс подтверждения будет пройден или пропущен пользователем. На следующем шаге для проверки статуса платежа (прошел ли пользователь подтверждение успешно или нет) используйте [YooKassa API](https://yookassa.ru/developers/api#get_payment) +(см. [Настройка подтверждения платежа](#настройка-подтверждения-платежа)). + +### SberPay (Android) + +Для подтверждения платежа при оплате через SberPay необходимо: +1. вызвать метод `await YookassaPaymentsFlutter.confirmation`; +2. обработать полученный результат; + +Входные параметры для `await YookassaPaymentsFlutter.confirmation`: + +Обязательные параметры метода: +- url (String) - URL для перехода на экран подтверждения платежа через SberPay; +- paymentMethod (PaymentMethodType) - выбранный тип платежного метода (тот, что был получен в методе `createTokenizationResult()`, (см. [Получить результат токенизации](#получить-результат-токенизации)) . +- clientApplicationKey - ключ для клиентских приложений из личного кабинета ЮKassa ([раздел Настройки — Ключи API](https://yookassa.ru/my/api-keys-settings)) +- shopId - идентификатор магазина ЮKassa ([раздел Организации](https://yookassa.ru/my/company/organization) + +Возможные типы результата проведения подтверждения через SberPay: + +- Activity.RESULT_OK - сообщает о том, что процесс подтверждения через SberPay завершён, но не несет информацию о том, что процесс завершился успешно. После получения результата рекомендуется запросить статус платежа; +- Activity.RESULT_CANCELED - прохождение подтверждения через SberPay было отменено (например, пользователь нажал на кнопку "назад" во время процесса); +- Checkout.RESULT_ERROR - не удалось пройти подтверждение через SberPay. + +**Запуск SberPay и получение результата** + +
+ +```dart +var res = await YookassaPaymentsFlutter.confirmation( + controller.text, + result.paymentMethodType, + config.clientApplicationKey, + config.shopId +); +showDialog( + context: context, + builder: (context) => const AlertDialog(content: Text("Confirmation process is done")) +); +``` +**Запрос разрешений** + +Для работы SberPaySDK также запрашивает определенные разрешения, которые **не являются обязательными**, но повышают шанс успешной оплаты. Актуальный список разрешений [по ссылке](https://developers.sber.ru/docs/ru/sberpay-sdk/androidsdk/start-sdk#zapros-razresheniy) + +```xml + + + +``` ### SBP diff --git a/android/build.gradle b/android/build.gradle index cf320fe..aa8e62e 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -52,7 +52,7 @@ android { } dependencies { - implementation 'ru.yoomoney.sdk.kassa.payments:yookassa-android-sdk:7.0.1' + implementation 'ru.yoomoney.sdk.kassa.payments:yookassa-android-sdk:7.0.2' } configurations.implementation { diff --git a/assets/images/sberpay-reg-url-scheme.png b/assets/images/sberpay-reg-url-scheme.png new file mode 100644 index 0000000..df1e41a Binary files /dev/null and b/assets/images/sberpay-reg-url-scheme.png differ diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 1d58e96..b1971b1 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -31,8 +31,38 @@ LSApplicationQueriesSchemes yoomoneyauth - sberpay + sbolpay + sbolidexternallogin + sberbankidexternallogin + NSAppTransportSecurity + + NSExceptionDomains + + cms-res.online.sberbank.ru + + NSExceptionAllowsInsecureHTTPLoads + + + gate1.spaymentsplus.ru + + NSExceptionAllowsInsecureHTTPLoads + + + ift.gate2.spaymentsplus.ru + + NSExceptionAllowsInsecureHTTPLoads + + + sberbank.ru + + NSExceptionAllowsInsecureHTTPLoads + + NSIncludesSubdomains + + + + UISupportedInterfaceOrientations UIInterfaceOrientationPortrait @@ -48,5 +78,9 @@ UIViewControllerBasedStatusBarAppearance + NSBluetoothAlwaysUsageDescription + Данные Bluetooth собираются и отправляются на сервер для безопасного проведения оплаты + NSBluetoothPeripheralUsageDescription + Данные Bluetooth собираются и отправляются на сервер для безопасного проведения оплаты diff --git a/pubspec.yaml b/pubspec.yaml index e56fce1..c7a83fe 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: yookassa_payments_flutter description: This Flutter SDK allows processing payments using a payment token. It works as an addition to the YooMoney API. -version: 1.7.0 +version: 1.7.1 homepage: https://git.yoomoney.ru/projects/SDK/repos/yookassa-payments-flutter-sdk/browse repository: https://git.yoomoney.ru/projects/SDK/repos/yookassa-payments-flutter-sdk/browse environment: