0.1.3 • Published 4 years ago

rbs-ajax v0.1.3

Weekly downloads
71
License
-
Repository
-
Last release
4 years ago

Библиотека для работы с REST API шлюза РБС

NPM пакет

Установка

npm i rbs-ajax

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

import payAjax from 'rbs-ajax'

const options = { contextLevel: '../' };
const payXhr = payAjax(options);
payXhr.getSessionStatus({ mdOrder: MDORDER });

document.addEventListener('PAY.SESSION_STATUS', function(data) {
  // Получили данные из getSessionStatus
  console.log(data);
});
document.addEventListener('PAY.ERROR', function(data) {
  // Что-то пошло не так
  console.log(data);
});

В основе работы библиотеки лежат события.

Тип события зависит от вызванного api метода и результата его выполнения. В случае успешного выполнения AJAX запроса вызывается событие (на document) с именем doneEventName. В случае неудачной выполнения — событие с именем failEventName (по умолчанию у всех методов: "PAY.ERROR").

В data будет передана вся информация приходящая от сервера или информация об ошибке.

payAjax

Функция-обертка. В качестве аргумента принимает настройки контекста.

Имя параметраЗначение по умолчаниюОписание
contextLevel'../../'Путь до rest api относительно текущей страницы

Методы

Обертка payAjax содержит методы через которые можно обратиться к REST API:

Аргументы

Каждый метод принимает 2 аргумента: params и options.

params

Объект содержащий поля для запроса. Для каждого метода они свои.

options

Объект с настройками метода. Может содержать 2 поля:

  • doneEventName — название события при успешном заверешении AJAX запроса
  • failEventName — название события при неудачном завершении AJAX запроса.

ВНИМАНИЕ! По умолчанию у всех методов failEventName называется PAY.ERROR.

Есть возможность установить свои значения имен событий. Например:

payXhr.getSessionStatus(
  { mdOrder: "129bd2e3-9118-7ab9-129b-d2e30007cc4a" },
  { doneEventName: "EVENT.SESSION_STATUS", failEventName: "EVENT.FAIL"}
)

getSessionStatus

doneEventName: 'PAY.SESSION_STATUS'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
languageНетЯзык на котором будет получена информация о заказе. Две буквы языка. По умолчанию: 'ru'
jsonParamsНетПри регистрации заказа (register.do) мерчант может передавать доп. параметры в поле jsonParams.jsonParams имеет вид {"paramName1": "paramValue1", "paramName2": "paramValue2", ...}.Для получения доп. параметров на странице мерчант должен "попросить" конкретные имена, параметров, которые он хочет получить.Например: jsonParams: "paramName1", "paramName2", ...

sendPayment

doneEventName: 'PAY.SEND_PAYMENT'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
panДаНомер карты. От 16 до 19 символов. Например: "4111111111111111"
monthДаМесяц срока действия карты. от 01 до 12
yearДаПолный год срока действия карты. Например: 2019
cardholderДаИмя владельца карты. Строка. Передавать в верхнем регистре.
cvcНетКод с обратной стороны карты.Может быть не обязательным если от getSessionStatus вернулось поле cvcNotRequired со значением true.
emailНетEmail клиента
phoneНетТелефон. 10 символов. Например: 9124567890
bindingNotNeededНетФлаг. Поле по сохранению связки. Может быть true или false.
languageНетЯзык на котором получить информацию о заказе. Две буквы языка. По умолчанию: 'ru'

sendBindingPayment

doneEventName: 'PAY.BINDING_SEND_PAYMENT'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
bindingIdДаУникальный номер связки.Например: bf68531d-f55b-4a01-9957-a2250b26670e.В getSessionStatus возвращается список доступных bindnigId клиента.
cvcНетКод с обратной стороны карты.Может быть не обязательным если от getSessionStatus вернулось значение cvcNotRequired: true.
emailНетEmail клиента
phoneНетТелефон. 10 символов.Например: 9124567890.
languageНетЯзык на котором получить информацию о заказе. Две буквы языка. По умолчанию: 'ru'

sendGooglePay

doneEventName: 'PAY.GOOGLEPAY'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
paymentTokenДаТокен в base64, который вернул Google
additionalParametersНетДополнительные параметры.

deleteMerchantCard

doneEventName: 'PAY.DELETE_MERCHANT_BINDING'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
bindingIdДаУникальный номер связки.Например: bf68531d-f55b-4a01-9957-a2250b26670e.В getSessionStatus возвращается список доступных bindnigId клиента.

getFee

doneEventName: 'PAY.FEE'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
panНет (используется bindingId)Номер карты, на которую необходимо рассчитать комиссию. Если передать '0' то вернет общую комиссию на заказ
bindingIdНет (используется pan)Уникальный номер связки, на которую необходимо рассчитать комиссию.

sendPaymentOtherWays

doneEventName: 'PAY.OTHER_WAY'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
paymentWayДаОплата через другие способы: UPOP или Альфа-КликВозможные значения: 'ALFA_ALFACLICK' или 'UPOP'.

getFinishInfo

doneEventName: 'PAY.FINISH_INFO'

Имя параметраОбязательностьОписание
mdOrderДаУникальный номер заказа
languageНетЯзык ответа

3DS 2.0

Принцип работы

Модуль handle3ds автоматически инициализируется в getSessionStatus. По необходимости в рамках текущей страницы создает необходимые формы в фоне, передает, получает и хранит нужные параметры, а также делает повторные запросы методов оплаты.

Разработчику остается только вызвать редирект на ACS в нужном месте его кода. Модуль также создаст нужную форму в фоне на текущей странице и переведет пользователя на acsUrl.

Для редиректа в acs необходимо добавить вызов redirectToAcs в соответствующие listner'ы api методов.

ВНИМАНИЕ! Не забудьте добавить обработку перехода в ACS в методе getSessionStatus. После его вызова в ответе может быть acsUrl.

Поддержка

Поддерживается в следующих методах api:

Пример

import { getHandler3DS } from 'rbs-ajax/handle3ds';

// ...

document.addEventListener(
  'PAY.SEND_PAYMENT PAY.BINDING_SEND_PAYMENT PAY.GOOGLEPAY',
  function({ detail }) {
    // В detail вся информация
    const data = detail;

    // Используем редирект в первую очередь
    if ('redirectUrl' in data) {
      window.location = data.redirectUrl;
    }

    // Перенаправление пользователя в ACS
    if ('acsUrl' in data && data.acsUrl !== null) {
      // Вызов метода из модуля handle3ds (rbs-ajax)
      getHandler3DS().redirectToAcs(data);
    }

    // ... другой полезный код
  }
);
0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago