Быстрый старт

Модуль «CP QR» для Flutter управляет авторизацией пользователя в виджете быстрой оплаты через Яндекс Пэй, созданием платежной сессии и обработкой статуса оплаты. SDK возвращает sessionId, на основе которого приложение генерирует и отображает QR-код для оплаты на кассе.

SDK доступен в репозитории yandex_quick_pay на pub.dev.

Требования

Параметр Минимальная версия
Flutter 3.0+
Dart 3.0+
Android API 24+ (Android 7.0)
iOS 15.0+

Перед началом интеграции получите:

Быстрый старт

Минимальный рабочий пример — от нуля до отображения QR-кода. Подробнее — в разделе Подключение.

Шаг 1. Добавьте зависимость

# pubspec.yaml
dependencies:
  yandex_quick_pay: ^1.1.0
flutter pub get

Шаг 2. Инициализируйте SDK в main()

import 'package:yandex_quick_pay/yandex_quick_pay.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await YandexQuickPay.initialize(
    config: const QuickPayConfig(
      merchantId: 'YOUR_MERCHANT_ID',
      environment: QuickPayEnvironment.sandbox,
    ),
    listener: QuickPaymentStateListener(
      onPaymentEnabledStateChanged: (isEnabled) {},
      onSessionExpired: () {},
      onPaymentResult: (result) {
        if (result is QuickPaySuccess) {}
        else if (result is QuickPayFailure) {}
      },
    ),
  );

  runApp(const MyApp());
}

Шаг 3. Вызовите initUi() перед оплатой

await YandexQuickPay.instance.initUi();

Шаг 4. Добавьте виджеты

// Список способов оплаты
YandexPaymentMethodsWidget()

// Бейдж активного способа оплаты
YandexActivePaymentMethodBadge()

Передайте полученный URL в YandexQuickPay.

YandexQuickPay.instance.handleUserActivity(uri);

// или

YandexQuickPay.instance.handleOpenURL(uri);

В AppDelegate:

YandexQuickPay.instance.handleOpenURL(url)

Жизненный цикл платежной сессии

Платежная сессия ограничена по времени (expires_at, задается сервером). Когда сессия истекает, SDK вызывает onSessionExpired(). В этом случае нужно:

  • запросить новый sessionId через getPaymentSessionId();
  • обновить QR-код на экране.

Когда обновлять QR: при первом отображении экрана, onSessionExpired(), onPaymentResult(), onPaymentEnabledStateChanged(true).

См. также

Предыдущая
Следующая