rbs-ajax
v0.1.3
Published
RBS gateway REST API methods
Downloads
6
Readme
Библиотека для работы с REST API шлюза РБС
Установка
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:
- getSessionStatus
- sendPayment
- sendBindingPayment
- sendGooglePay
- deleteMerchantCard
- getFee
- sendPaymentOtherWays
- getFinishInfo
Аргументы
Каждый метод принимает 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);
}
// ... другой полезный код
}
);