Открытие в элементе iframe HTML-страницы

Общая информация

При открытии в элементе iframe платёжная форма Payment Page отображается как встроенная в HTML-страницу веб-сервиса. Такой вариант может не фокусировать пользователя на оплате, но при этом сохраняет контекст, не прерывает взаимодействие с веб-сервисом и не ведёт к переходу на другую страницу.

Notice: Размеры элемента iframe для корректного отображения платёжной формы должны составлять не менее 320 пикселей по ширине и 600 пикселей по высоте — при меньших размерах форма не отображается полностью. Версия формы для настольных устройств применяется при ширине от 480 пикселей и адаптируется к ширине элемента iframe. Ограничений по максимальным размерам не предусматривается.

Чтобы открывать платёжную форму в элементе iframe, на стороне веб-сервиса следует:

  1. Подключить CSS-библиотеку от ecommpay, расположенную по адресу https://paymentpage.ecommpay.com/shared/merchant.css.

    Подключить в клиентской части CSS-библиотеку от ecommpay, обеспечивающую корректное отображение платёжной формы. Эта библиотека расположена по адресу https://paymentpage.ecommpay.com/shared/merchant.css.

  2. Определить события, при наступлении которых должна открываться платёжная форма (например, переход по кнопке оплаты).
  3. Обеспечить вызов платёжной формы по требуемым событиям, с использованием собственных решений или JavaScript-библиотеки от ecommpay, расположенной по адресу https://paymentpage.ecommpay.com/shared/merchant.js.

Вызов с использованием собственных решений

Для открытия Payment Page в элементе iframe с использованием собственных решений необходимо подготовить соответствующий скрипт, обеспечивающий вызовы формы с указанием требуемых параметров и подписи к ним. Информация о применяемых параметрах и их подписывании представлена в отдельных статьях: Параметры вызова платёжной формы и Работа с подписью к данным.

Для открытия Payment Page в элементе iframe с использованием собственных решений необходимо подготовить соответствующий скрипт, обеспечивающий вызовы формы с указанием требуемых параметров и подписи к ним.

Вызов с использованием JavaScript-библиотеки ecommpay

Для открытия Payment Page в элементе iframe с использованием JavaScript-библиотеки merchant.js от ecommpay необходимо подключить эту библиотеку в клиентской части веб-сервиса и использовать соответствующие обращения к объекту EPayWidget.

При этих обращениях должен указываться идентификатор используемого элемента iframe — в параметре target_element объекта configObj. Если этот параметр не указывается, платёжная форма открывается иным способом: в модальном окне или в виде отдельной HTML-страницы (если это задано через параметр redirect или redirect_on_mobile).

Прим.: При одновременном использовании в параметрах вызова платёжной формы указателей на открытие в отдельной вкладке и в элементе iframe более приоритетным считается открытие в отдельной вкладке.

В остальном работа с объектом EPayWidget в таких случаях соответствует общим условиям, актуальным и для других способов открытия:

Для открытия Payment Page в элементе iframe с использованием JavaScript-библиотеки merchant.js от ecommpay необходимо подключить эту библиотеку и использовать соответствующие обращения к объекту EPayWidget. В этих обращениях среди параметров вызова в объекте configObj должен указываться параметр target_element с идентификатором элемента iframe. В остальном должны соблюдаться следующие общие условия:

  1. Каждое обращение может осуществляться одним из двух методов:
    • bind (EPayWidget.bind) — если платёжную форму необходимо открывать по щелчку кнопки (с указанием её идентификатора, <pay_button_id>);
    • run (EPayWidget.run) — если платёжную форму необходимо открывать по какому-либо другому событию в пользовательском интерфейсе.
  2. В каждом обращении должен указываться JavaScript-объект configObj с параметрами вызова платёжной формы и с подписью к нимс параметрами вызова платёжной формы и с подписью к ним.

    Информация о применяемых параметрах и их подписывании представлена в отдельных статьях: Параметры вызова платёжной формы и Работа с подписью к данным.

  3. При необходимости в любом обращении может также указываться HTTP-метод отправки запроса (method) — POST или GET. Если он не указывается, по умолчанию применяется метод GET.
  4. Дополнительно в любом обращении могут указываться функции-обработчики для сбора информации о действиях пользователя (подробнее).

    Информация о таких функциях представлена в статье Получение и обработка информации о действиях с платёжной формой.

Рис. 1. Сигнатура методов bind и run
EPayWidget.bind('<pay_button_id>', configObj, method);

EPayWidget.run(configObj, method);
Рис. 2. Пример обращения с использованием метода bind
EPayWidget.bind('pay_button_id', // Идентификатор кнопки
    { target_element: 'widget-container', // Идентификатор элемента
      project_id: 42, // Идентификатор проекта
      customer_id: '17008', // Идентификатор пользователя
      payment_id: '18641868', // Идентификатор платежа
      payment_amount: 8855, // Сумма платежа
      payment_currency: 'USD', // Код валюты платежа
      signature: 'YWb6Z20ByxpQ30hfTI' }, // Подпись
    'post')
Рис. 3. Пример обращения с использованием метода run
EPayWidget.run(    
    { target_element: 'widget-container', // Идентификатор элемента
      project_id: 42, // Идентификатор проекта
      customer_id: '17008', // Идентификатор пользователя
      payment_id: '18641868', // Идентификатор платежа
      payment_amount: 8855, // Сумма платежа
      payment_currency: 'USD', // Код валюты платежа
      signature: 'YWb6Z20ByxpQ30hfTI' }, // Подпись
    'post')

HTML-код страницы веб-сервиса при этом может выглядеть следующим образом.

<html>
<head>
<!-- Adding ecommpay libraries -->
  <link rel="stylesheet" href="https://paymentpage.ecommpay.com/shared/merchant.css">
  <script src="https://paymentpage.ecommpay.com/shared/merchant.js"></script>
  <script type="text/javascript">var EP_HOST = 'https://paymentpage.ecommpay.com';</script>
<!-- Other parts -->
</head>
<body>
  <!-- HTML Web page code to add the Payment Page widget -->
  <div class="container">
      <div class="cart-info">...</div><div id="widget-container"></div>
  </div>
  <!-- JS command to open Payment Page -->
  <script type="text/javascript">
      EPayWidget.run({ target_element: 'widget-container',
                       project_id: 42,
                       customer_id: '17008',
                       payment_id: '18641868',
                       payment_amount: 8855,
                       payment_currency: 'USD',
                       signature: 'YWb6Z20ByxpQ30hfTI' });
 <!-- Other parts -->
 </script>
</body>
</html>

Управление размерами страниц сторонних сервисов

Чтобы задавать размеры страниц, используемые при переходах пользователя от Payment Page к сторонним сервисам, при вызове платёжной формы в составе параметра payment_methods_options необходимо передавать требуемые значения высоты и ширины таких страниц, определяемые как redirect_window_height и redirect_window_width. Эти параметры можно указывать двумя способами:

Чтобы задавать размеры страниц, используемые при переходах пользователя от Payment Page к сторонним сервисам, при вызове платёжной формы в составе параметра payment_methods_options необходимо передавать требуемые значения высоты (redirect_window_height) и ширины (redirect_window_width). Эти параметры можно указывать двумя способами:

  • непосредственно в составе параметра payment_methods_options, как актуальные для всех сторонних сервисов, если не задано иное;
  • в качестве параметров для отдельных платёжных методов, указываемых через их коды (согласно справочнику) в соответствии с приведённой в примере структурой.

Следует учитывать, что указываемые размеры не применяются в случаях, когда страницы сторонних сервисов открываются в отдельной вкладке.

Рис. 4. Пример набора параметров для задания размеров страниц сторонних сервисов
payment_methods_options:"{
    "redirect_window_height":1200,
    "redirect_window_width":1200,
    "card":{"redirect_window_height":600, "redirect_window_width":900},
    "neteller-wallet":{"redirect_window_height":900, "redirect_window_width":1200}
}"

В приведённом примере указаны размеры, которые должны использоваться по умолчанию для всех сторонних сервисов, и размеры для отдельных платёжных методов. Эти размеры применяются следующим образом:

  • для всех методов, кроме card и neteller-wallet, задаются высота 1200 пикселей и ширина 1200 пикселей;
  • для метода card — задаются высота 600 пикселей и ширина 900 пикселей;
  • для метода neteller-wallet — задаются высота 900 пикселей и ширина 1200 пикселей.