yandex_pay_pay_with_redirect 2.4.0 copy "yandex_pay_pay_with_redirect: ^2.4.0" to clipboard
yandex_pay_pay_with_redirect: ^2.4.0 copied to clipboard

Yandex Pay "pay with redirect" module for Flutter. Adds the redirect payment flow (Yandex Pay button + async payment-URL bridge) on top of yandex_pay_core.

Yandex Pay — Pay with Redirect for Flutter #

Flutter-плагин для интеграции сценария «оплата через редирект» Яндекс Пэй в мобильные приложения (Android и iOS). Модуль добавляется поверх yandex_pay_core и предоставляет кнопку Яндекс Пэй, а также асинхронный мост для получения платёжной ссылки по нажатию на кнопку.

Установка #

Добавьте зависимость в pubspec.yaml:

dependencies:
  yandex_pay_pay_with_redirect: ^2.3.0

Затем:

flutter pub get

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

  1. Инициализация в main() до runApp() через модульную архитектуру yandex_pay_core:
import 'package:yandex_pay_pay_with_redirect/yandex_pay_pay_with_redirect.dart';

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

  await YPay.initialize(
    modules: [
      payWithRedirectModule(
        merchantId: 'YOUR_MERCHANT_ID',
        environment: YPayEnvironment.sandbox,
      ),
    ],
  );

  YPayWithRedirect.instance.onPaymentResult = (result) {
    switch (result) {
      case PayWithRedirectSuccess(:final orderId):
        print('Оплата успешна: $orderId');
      case PayWithRedirectCancelled():
        print('Оплата отменена');
      case PayWithRedirectFailure(:final message):
        print('Ошибка оплаты: $message');
    }
  };

  runApp(const MyApp());
}
  1. Кнопка Яндекс Пэй. Платёжная ссылка запрашивается у приложения по нажатию (в течение ≤10 c) через paymentUrlProvider:
YandexPayButton(
  paymentUrlProvider: () async {
    // Запросите платёжную ссылку у вашего бэкенда.
    return backend.createPaymentUrl(cart);
  },
)

Асинхронный мост платёжной ссылки #

  1. По нажатию на нативную кнопку нативный слой генерирует requestId и отправляет событие requestPaymentUrl.
  2. Фасад находит PaymentUrlProvider, который кнопка зарегистрировала при монтировании (по внутреннему correlation-ключу), дожидается результата и вызывает providePaymentUrl с {requestId, url} при успехе или {requestId, error} при ошибке.
  3. Нативный слой запускает оплату с полученной ссылкой.

Требования #

  • Flutter 3.0+
  • Dart 3.0+
  • Android: API 24+ (Android 7.0)
  • iOS: 15.0+

Android: хост-Activity #

MainActivity приложения должна наследовать FlutterFragmentActivity, а не стандартную FlutterActivity. Кнопка регистрирует лончер через registerForActivityResult, который работает только на ComponentActivity (наследником которой является FlutterFragmentActivity); иначе нажатие на кнопку ни к чему не приведёт.

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity : FlutterFragmentActivity()

Не задавайте MainActivity пустой android:taskAffinity="". Возврат оплаты приходит по applink в системную RedirectPollingHostActivity (launchMode="singleTask" с task-affinity по имени пакета). Пустой affinity у MainActivity разводит их по разным таскам — applink не попадает в живой инстанс host-Activity, оплата завершается как Cancelled вместо Success. Оставьте affinity по умолчанию.

iOS: возврат оплаты (associated domains) #

Для возврата в приложение после оплаты в браузере добавьте entitlement com.apple.developer.associated-domains с applink-хостами мерчанта:

applinks:<MERCHANT_ID>.merchant.applink.pay.yandex.ru
applinks:<MERCHANT_ID>.merchant.applink.sandbox.pay.yandex.ru

Universal link ловит FlutterAppDelegate и форвардит в core-плагин (YandexPayCorePlugin реализует FlutterApplicationLifeCycleDelegateYPay.deeplinkHandler), поэтому код в AppDelegate/SceneDelegate писать не нужно — достаточно entitlement. Возврат проверяется на реальном устройстве (на симуляторе universal links не работают).

Полная документация и описание API: Яндекс Пэй для Flutter.

Лицензия #

Proprietary License — см. LICENSE.

0
likes
120
points
255
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Yandex Pay "pay with redirect" module for Flutter. Adds the redirect payment flow (Yandex Pay button + async payment-URL bridge) on top of yandex_pay_core.

Topics

#yandex #payments #fintech #redirect

License

unknown (license)

Dependencies

flutter, yandex_pay_core

More

Packages that depend on yandex_pay_pay_with_redirect

Packages that implement yandex_pay_pay_with_redirect