ym88659208ym87991671
Начало работы с SDK | Документация для разработчиков

Начало работы с SDK

Обновлено 27 ноября 2024

Требования

Для использования SDK нужно соблюдать следующие требования:

  • Xcode 13+;

  • Версия iOS 13.0 и более поздние.

Демо-приложение

Демо-приложение с примером интеграции SDK находится по ссылке. Код приложения можно использовать как референс при интеграции.

Реализация сценария

Для корректной работы SDK в файле info.plist приложения должны быть добавлены следующие параметры:

    <key>DTXAutoStart</key>
<string>false</string>
<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>
</dict>
</dict>
<key>NSFaceIDUsageDescription</key>
<string>Так вы подтвердите, что именно вы выполняете вход</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Данные о местонахождении собираются и отправляются на сервер для безопасного проведения оплаты</string>

NSLocationWhenInUseUsageDescription - Если у вас уже используется этот параметр, то дублировать его не нужно.

Подключение SDK к проекту

Подключите SDK одним из удобных Вам способов:

Перейдите в файл вашего проекта, во вкладке Package dependancies нажмите + и в строке поиска введите ссылку на репозиторий, переданную вам с договором, и добавьте пакет SDK в свое приложение.

Схема оплаты

Регистрация deeplink

Для успешной авторизации в среде банка необходим диплинк, переданный вам с приветственным письмом. Если вы выпускаете еще одно приложение и публикуете его отдельно - необходимо запросить и получить отдельный диплинк. Если вы используете для нового приложения тот же самый диплинк, при оплате сбол не сможет выбрать нужное приложение для завершения сценария. При добавлении зарегистрированного {{диплинка }}в info.plist пожалуйста убедитесь, что в его составе отсутствует подстрока ://spay

Выданный Вам диплинк нужно зарегистрировать в файле вашего проекта, как показано ниже:

Схема оплаты

Начало работы

Импортируйте модуль SPaySdk в проект

import SPaySdk

В AppDelegate вашего проекта в методе didFinishLaunchingWithOptions необходимо реализовать функцию setup. Параметры функции преставлены ниже.

ПараметрТипДефолтное значениеОписание
bnplPlanBooltrueФункционал Оплата частями
helpersBooltrueФункционал helpers.
resultViewNeededBooltrueОтображение экранов со статусом.
needLogsBooltrueВыведение логов в консоль в режиме песочницы.
helperConfigSBHelperConfigнетНастройки функционала helpers.
environmentSEnvironmentprodВыбор окружения sdk для тестирования
completion((SPError?) -> Void)?нетБлок, отрабатыващий после инициализации SDK

Если вы подключили сервис Плати частями и пользователь выбрал этот способ для оплаты заказа, то выполняя через back расширенный запрос состояния заказа getOderStatusExtended.do, в ответе вы получите значение параметра paymentWay равное BNPL.
Подключить параметр paymentWay в callback-уведомлениях возможно в личном кабинете партнера интернет-эквайринга. Это можно сделать в настройках->основные настройки->callback-уведомления. При заполнении доп. параметров выйдет список всех возможных. Для того, чтобы передавался способ оплаты заказа необходимо выбрать paymentWay.

Оплаченные частями заказы в личном кабинете партнера интернет-эквайринга будут отмечаться признаком BNPL в поле «Платежное средство».

При этом денежные средства по заказам, оплаченным частями, поступят от ООО «ЦНФС» («Центр новых финансовых сервисов»), предоставляющей сервис.

Helpers - функционал, позволяющий клиенту с недостаточным количеством средств быстро пополнить счет или выпустить новые продукты для оплаты.

Настройки SBHelperConfig

ПараметрТипДефолтное значениеОписание
sbpBooltrueРазрешить пополнение карты через СБП
creditCardBooltrueРазрешить выпуск кредитной карты
debitCardBooltrueРазрешить выпуск дебетовой карты
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: \[UIApplication.LaunchOptionsKey: Any]?) -> Bool {

let window = UIWindow(frame: UIScreen.main.bounds)

self.window = window

SPay.setup(bnplPlan: true,
resultViewNeeded: true,
helpers: true,
needLogs: true,
helperConfig: SBHelperConfig(sbp: true,
creditCard:true),
environment: .prod) { error in
if let error {
// Ошибка инициализации SDK
}
}

return true

}

После чего необходимо реализовать в AppDelegate вашего проекта метод getAuthURL как показано ниже. Вместо sberPayExampleapp используйте свой диплинк, переданный вам вместе с приветсвенным письмом.

func application(_ app: UIApplication,

open url: URL,

options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {

if url.scheme == "sberPayExampleapp" && url.host == "spay" {

SPay.getAuthURL(url)

}

return true

}

Если в Вашем проекте используется SceneDelegate, то вы должны использовать вместо func application(_ app: UIApplication, open url: URL,.. метод

    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url, url.scheme == "sberPayExample.app" && url.host == "spay" {
SPay.getAuthURL(url)
}
}

в классе SceneDelegate.

Проверка готовности оплаты

Для проверки готовности сервисов SberPay к оплате необходимо вызывать метод isReadyForSPay.

SPay.isReadyForSPay

Если сервисы готовы, то метод вернет ответ true, и можно будет отрисовать кнопку оплаты.

Отзыв рефреш-токена

Для отзыва токена необходимо воспользоватся методом logout. Метод logout удаляет локально сохраненный рефреш-токен если он присутствует.

Необходимо вызвать этот метод при разлогине пользователя в своем приложении.

SPay.logout()

Отрисовка кнопки оплаты

Для вызова метода оплаты можно использовать готовый класс кнопки SBPButton или отрисовать кнопку самостоятельно в соответсвии с гайдланами.

Процесс инициализации кнопки оплаты SBPButton:

let button = SBPButton() 
button.tapAction = { ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣

// обработка нажатия ⁣

}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.