Вспомним структуру. Обычная ссылка для оплаты отправляет пользователя на сайт СБП, где из нее формируется QR-код, который нужно сканировать. Это не очень удобно, потому что код нужно сканировать в приложении банка. После этого открывается окно оплаты и появляются данные о приемщике платежа.
Если мы возьмем поле schema из этой ссылки со списком банков и вставим его в ссылку оплаты вместо https, то получим диплинк, который сразу будет открывать приложение нужного банка.
Переходим к созданию приложения:
Шаг 1
Получаем список банков.
Шаг 2
Формируем список банков. Для этого достаточно трех полей: bankName, logoURL и schema.
Шаг 3
Вставляем эти поля в объект. Создаем список, в котором отображаются все банки на экране.
Шаг 4
Меняем в ссылках оплаты https на schema соответствующего банка и открываем через url_launcher.
Шаг 5
Прослушиваем жизненный цикл приложения с помощью AppLifecycleListener. Используем коллбек onRestart, в нем ставим флаг. Второй флаг ставим после перехода в приложение банка.
Шаг 6
После возвращения из приложения банка отправляем запрос на проверку статуса оплаты.
В проекте нам понадобится всего два пакета. В pubspec.yaml указываем:
dependencies:
http: any
url_launcher: any
В следующих постах расскажем о каждом из шагов подобнее.
