Получение списка сохраненных карт Клиента
Данная JS библиотека предназначена для отображения списка карт, которыми пользователь уже оплачивал в вашем магазине и проведения списания по токену В начале Продавец должен получить идентификатор сессии, а затем вызвать JS метод getList для отображения пользователю списка карт. Токен карты может быть использован для формирования формы запроса платежа или cписания средств.
Получение идентификатора сессии LMI_SESSION_ID
Этот интерфейс получет получить идентификатор сессии для дальнейшего получения списка карт. Срок жизни сессии 15 минут.
Action - https://api.paysoft.solutions/merchants/cards-auth
Method - POST
Запрос:
<Command>
<LMI_MERCHANT_ID></LMI_MERCHANT_ID>
<LMI_PAYER_ID></LMI_PAYER_ID>
<LMI_REQUEST_TIME></LMI_REQUEST_TIME>
<LMI_HASH></LMI_HASH>
</Command>
Название | Поле в XML | Обязательность | Описание |
---|---|---|---|
Идентификатор продавца | LMI_MERCHANT_ID | Да | Идентификатор магазина. Идентификатор Продавец может получить в Кабинете(https://merchant.paysoft.solutions). |
Идентификатор клиента на стороне Продавца | LMI_PAYER_ID | Да | Может содержать буквы английского алфавита, цифры и знак дефиса «-». Максимальная длина 25 символов. |
Дата запроса | LMI_REQUEST_TIME | Да | дата формирования запроса в формате "YYYY-MM-DD HH:II:SS". Время киевское (GMT+2) |
Контрольная подпись | LMI_HASH | Да | Контрольная подпись запроса. Для формирования подписи исходный текст XML-запроса с пустым значением LMI_HASH конкатенируется с секретным ключом SecretKey (без разделителя). От полученной строки формируется хеш сумма с помощью алгоритма, указанного в настройках магазина в Кабинете Продавца. Полученная подпись передается в теге LMI_HASH. Рекомендованный алгоритм хеширования SHA256. Пример формирования подписи |
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Retval></Retval>
<Retdesc></Retdesc>
<LMI_SESSION_ID></LMI_SESSION_ID>
</Response>
Название | Поле в XML | Обязательность | Описание |
---|---|---|---|
Код ответа | Retval | Да | Код ответа: 1 - успешно 2 - должен использоваться метод POST -1 - системная ошибка -2 - магазин не найден, проверьте LMI_MERCHANT_ID -3 - некорректная подпись |
Описание результата | Retdesc | Да | |
Идентификатор сессии | LMI_SESSION_ID | Нет | Уникальный идентификатор сесиии.Срок жизни 15 минут. |
Получение списка карт
Получения списка карт происходит в браузере Клиента. Для этого нужно вызвать метод PMCards.getList, на вход нужно передать LMI_SESSION_ID из первого запроса и callback функцию. После обработки запроса на вход функции будет передан объект cо списком карт.
Описание объекта, который передается в callback функцию
Название поля | Описание |
---|---|
Retval | Код выполнения: 1 - успешно 10 - сетевая ошибка 11 - закочнился срок жизни сессии |
Retdesc | Описание результата |
ErrorMessage | Если при получении данных произошла ошибка, будет возвращено описание ошибки |
cards | Массив сохраненных карт |
cards[].Token | Токен карты. Может быть использован для формирования формы запроса платежа или cписания средств. |
cards[].CardMask | Маскированный номер карты |
cards[].Name | Имя карты, переданное при сохранении карты. Необязательный параметр. |
Удаление прикрепленной карты
Метод PMCards.remove предназначен для удаления карты из списка, на вход нужно передать LMI_SESSION_ID из первого запроса, token карты и callback функцию. После обработки запроса на вход функции будет передан объект cо списком карт.
Пример формирования списка карт
<div id="list"></div>
<div id="error"></div>
<script type="text/javascript" src="https://lmi.paysoft.solutions/js/premerchant/PMCards.min.js"></script>
<script type="text/javascript">
var LMI_SESSION_ID = 'session id from the first request';
var callback = function (data) {
if(!data.ErrorMessage){
var list = document.getElementById('list');
list.innerHTML = '';
for(var i = 0; i < data.cards.length; i++){
var newDiv = document.createElement('div');
var token = data.cards[i].Token;
newDiv.innerHTML = '<label><input type="radio" name="LMI_PAYMENT_TOKEN" value="'+data.cards[i].Token+'"> '+(data.cards[i].Name || 'Карта') + ': ' + data.cards[i].CardMask+'</label>';
var delButton = document.createElement('button');
delButton.innerText = 'Удалить';
delButton.dataset.token = token;
delButton.addEventListener('click', function (event) {
PMCards.remove(sessionId, event.target.dataset.token, callback);
});
newDiv.appendChild(delButton);
list.appendChild(newDiv);
}
}else{
var errorBlock = document.getElementById('error');
errorBlock.textContent = data.ErrorMessage;
}
};
PMCards.getList(LMI_SESSION_ID, callback);
</script>