Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не появляется экран 3DSecure в web версии #14

Open
autolainen opened this issue Jun 11, 2021 · 4 comments
Open
Labels
enhancement New feature or request

Comments

@autolainen
Copy link

Использую библиотеку в мобильном приложении. В версии под Андроид при платеже виртуальной картой Ю.Money появляется форма подтверждения 3DSecure. При компиляции приложения под web при попытке платежа той же картой появляется пустой серый экран и больше ничего не происходит. В консоли браузера никаких ошибок не вижу. Пожалуйста, подскажите в чем может быть проблема?

@mit-73
Copy link
Collaborator

mit-73 commented Jun 15, 2021

Здраствуйте @autolainen, если вы используете tinkoff_acquiring версии 3.0.0 и выше с tinkoff_acquiring_flutter, то должны были заметить, что tinkoff_acquiring_flutter не поддерживает Flutter Web. Чтобы открыть проверку 3DSecure, вам необходимо использовать url_launcher.
С tinkoff_acquiring версии ниже 3.0.0, все тоже самое, только там все в одном пакете.

Вы также можете воспользоваться платежным виджетом для flutter web.

Если у вас остались вопросы, задавайте, мы с радостью вам ответим!

@autolainen
Copy link
Author

Чтобы открыть проверку 3DSecure, вам необходимо использовать url_launcher

У Вас есть пример как это сделать?

@mit-73
Copy link
Collaborator

mit-73 commented Jun 16, 2021

C url_launcher я похоже ошибся, тут нужно html форму показать.
Смотрите, когда к вам приходит из метода результат, что нужно пройти проверку 3DS, вам необходимо открыть форму:

  • Для 3DSv1
      <html>
        <body onload="document.f.submit();">
          <form name="payForm" action="$acsUrl" method="POST">
            <input type="hidden" name="PaReq" value="$paReq">
            <input type="hidden" name="MD" value="$md">
            <input type="hidden" name="TermUrl" value="$_termUrl">
          </form>
          <script>
            window.onload = submitForm;
            function submitForm() { payForm.submit(); }
          </script>
        </body>
      </html>
  • Для 3DSv2:
      <html>
        <body onload="document.f.submit();">
          <form name="payForm" action="$acsUrl" method="POST">
            <input type="hidden" name="creq" value="$_createCreq">
          </form>
          <script>
            window.onload = submitForm;
            function submitForm() { payForm.submit(); }
          </script>
        </body>
      </html>

Дальше встроить эту форму в HtmlElementView, я думаю это можно сделать как-то так (пример, пример):

import 'dart:html' as html;
import 'dart:ui' as ui;

  String viewID = "view-id";

  @override
  Widget build(BuildContext context) {
    ui.platformViewRegistry.registerViewFactory(
        viewID,
        (int id) => html.IFrameElement()
          ..width = MediaQuery.of(context).size.width.toString()
          ..height = MediaQuery.of(context).size.height.toString()
          .. srcdoc = 'код формы 3DS который был выше, в виде строки',
    );

    return HtmlElementView(viewType: viewID);
  }

И по идее все должно работать (возможно проблема будет с script который присутствует в html, так как я не знаю как он будет отрабатывать). Логику реализации можно взять отсюда: https://github.com/MadBrains/Tinkoff-Acquiring-SDK-Flutter/blob/main/packages/tinkoff_acquiring_flutter/lib/src/web_view_3ds.dart

Мы подумаем о добавлении поддержки Flutter web в SDK, но думаю это будет не скоро...

@mit-73 mit-73 added the enhancement New feature or request label Jun 16, 2021
@FedrBodr
Copy link

@autolainen в итоге получилось?
@mit-73 не понятно когда добавите поддержку для web версии?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants