Raiffeisen-DGTL / ecom-sdk-javascript

JavaScript SDK платежной формы эквайринга и СБП.
MIT License
13 stars 4 forks source link

Raiffeisen Payment Page Sdk

JS библиотека для работы с формой оплаты Райффайзенбанка. Конфигуратор формы оплаты Райффайзенбанка.

Документация

Подключение библиотеки

Скриптом

Для рабочего проекта подключите скрипт:

<script src="https://pay.raif.ru/pay/sdk/v2/payment.styled.min.js"></script>

или

Подключение модуля

import PaymentPageSdk from '@raiffeisen-ecom/payment-sdk';

Иные варианты подключения расположены в разделе дополнительно

Использование библиотеки

Работа происходит через обращения к классу PaymentPageSdk.

В параметрах конструктора нужно указать обязательный параметр publicId и необязательный, в случае, если нужно выбрать определенный сервер для работы (test/production) - url

test

    const paymentPage = new PaymentPageSdk('000001680200002-80200002', {
        url: 'https://pay-test.raif.ru/pay'
    });

prod

    const paymentPage = new PaymentPageSdk('000001780049001-80049001');

Простые сценарии

Обязательные парамеры:

Форма оплаты во всплывающем окне

Для отслеживания успешности оплаты метод openPopup возвращает Promise, позволяющий подписаться на успешную оплату или закрытие окна.

paymentPage.openPopup({amount: 10.10})
        .then(function() {
            // console.log("Спасибо");
        })
        .catch(function() {
            // console.log("Неудача");
        });

Форма оплаты в новой вкладке

paymentPage.openWindow({amount: 10.10});

Форма оплаты в той же вкладке

paymentPage.replace({amount: 10.10});

Расширенные сценарии

Без чека

Обязательные параметры:

Необязательные параметры:

Дополнительно можно стилизовать страницу, это достигается путём добавления параметра style:

В зависимости от titlePlace зависит размер логотипа:

С чеком (ФФД 1.05)

Если вы хотите фискализировать чеки через форму оплаты по ФФД 1.05, необходимо дополнительно передать объект чека receipt.
В случае некорректного формата объекта receipt чек не будет создан, при этом открытие платежной формы не блокируется, и заказ может быть оплачен.

С чеком (ФФД 1.2)

Если вы хотите фискализировать чеки через форму оплаты по ФФД 1.2, необходимо дополнительно передать объект чека receipt.
В случае некорректного формата объекта receipt чек не будет создан, при этом открытие платежной формы не блокируется, и заказ может быть оплачен.

Пример открытия платежной формы с передачей данных чека (для ФФД 1.05 и ФФД 1.2)

paymentPage.openPopup({
  "publicId": "000001680200002-80200002",
  "orderId": "orderTest",
  "amount": 1200,
  "receipt": {
      "receiptNumber": "3000827351831",
      "customer": {
          "email": "customer@domain.ru"
      },
      "items": [
          {
              "name": "Шоколадный торт",
              "price": 1200,
              "quantity": 1,
              "paymentObject": "COMMODITY",
              "paymentMode": "FULL_PAYMENT",
              "amount": 1200,
              "vatType": "VAT20"
          }
      ]
  }
})

Пример открытия во всплывающем окне с необязательными параметрами

paymentPage.openPopup({
                        amount: 10.10,
                        orderId: '91700',
                        extra: {
                            email: 'test@test.ru',
                            login: 'testLogin',
                            phone: '79191234567'
                        },
                        style: {
                            button: {
                                backgroundColor: '#ffc800',
                                textColor: '#542595',
                                hoverTextColor: '#ffc800',
                                hoverBackgroundColor: '#542595',
                                borderRadius: '3px'
                            },
                            header: {
                                logo: 'https://www.raiffeisen.ru/common/new/images/logo-raif.svg',
                                titlePlace: 'RIGHT'
                            }
                        },
                        comment: 'Тирольский пирог с яблоками, грушами, ветчиной, сыром, ананасами, 50см'
                    })
        .then(function() {
                        //console.log("Спасибо");
                    })
        .catch(function() {
                        //console.log("Неудача");
                    });
);

Пример открытия в новой вкладке с необязательными параметрами

В openWindow передаются необязательные параметры для возврата пользователя на страницу, в зависимости от результата оплаты: successUrl и failUrl.

paymentPage.openWindow({
                        amount: 10.10,
                        orderId: '91700',
                        successUrl: 'https://www.raiffeisen.ru',
                        failUrl: 'https://pay.raif.ru/pay/demo.html',
                        extra: {
                            email: 'test@test.ru',
                            login: 'testLogin',
                            phone: '79191234567'
                        },
                        style: {
                            button: {
                                backgroundColor: '#ffc800',
                                textColor: '#542595',
                                hoverTextColor: '#ffc800',
                                hoverBackgroundColor: '#542595',
                                borderRadius: '3px'
                            },
                            header: {
                                logo: 'https://www.raiffeisen.ru/common/new/images/logo-raif.svg',
                                titlePlace: 'RIGHT'
                            }
                        },
                        comment: 'Тирольский пирог с яблоками, грушами, ветчиной, сыром, ананасами, 50см'
                    });

Пример открытия в той же вкладке с необязательными параметрами

То же самое, что и открытие в новой вкладке, только необходимо использовать метод paymentPage.replace()

Дополнительно

Подключение библиотеки скриптом

Не минифицированный скрипт со стилями внутри:

<script src="https://pay.raif.ru/pay/sdk/v2/payment.styled.js"></script>

Раздельное подключение стилей отдельным файлом

Скриптом

Подключение стилей:

<link rel="stylesheet" href="https://pay.raif.ru/pay/sdk/v2/payment.min.css">

Подключение библиотеки:

<script src="https://pay.raif.ru/pay/sdk/v2/payment.min.js"></script>

Подключение модуля

Подключение стилей:

import '@raiffeisen-ecom/payment-sdk/lib-style/index.css';

Подключение библиотеки:

import PaymentPageSdk from '@raiffeisen-ecom/payment-sdk/lib-style';

Локальный запуск проекта

Для успешного запуска проекта локально, необходимо использовать https.