Генерация seToken
Что такое seToken
seToken (Self Encrypted Token) - это криптограмма, используемая для безопасной передачи данных карты. Ее можно использовать в следующих запросах, когда карточные данные собираются на стороне мерчанта:
Ниже описано, как создать seToken и отправить в запросе на оплату.
Формат seToken до шифрования
До шифрования seToken представляет собой строку, которая включает в себя от 5 до 9 параметров, разделенных символом "/".
Параметры, включенные в состав seToken
В таблице ниже перечислены параметры, которые можно использовать в строке seToken. Эти параметры должны быть включены в строку в строгой последовательности согласно этой таблице.
Обязательно | Название | Тип | Описание |
---|---|---|---|
Да | timestamp |
String | Дата запроса согласно ISO 8601:2004 в формате YYYY-MM-DDThh:mm:ss±hh:mm . |
Да | uuid |
String [1..32] | Идентификатор в стандарте UUID сформирован в соответствии с документом |
Условие* | PAN |
Integer [1..19] | Номер карты списания денежных средств. Запрос должен включать либо PAN , либо bindingId . |
Условие (см. описание) | CVV |
Integer | Проверочный код карты. Этот параметр обязателен, если для мерчанта не выбрано разрешение Может проводить оплату без подтверждения CVC. |
Условие* | EXPDATE |
Integer | Срок действия карты в следующем формате: YYYYMM , где YYYY - год, MM - месяц. |
Условие* | mdOrder |
String [1..36] | Идентификатор заказа для оплаты криптограммой. |
Условие* | bindingId |
String [1..255] | Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Запрос должен включать либо PAN , либо bindingId . |
Нет | cardholder |
String | Имя держателя карты латинскими буквами. Этот параметр передается только после оплаты заказа. |
Нет | registeredFrom |
String | SDK, который использовался для регистрации заказа. Допустимые значения: MSDK_CORE , MSDK_FORMS , MSDK_PAYMENT , WSDK_CORE , WSDK_PAYMENT
|
* Обязательно для некоторых методов. Список обязательных параметров seToken, используемых в определенном методе, перечислен в описании соответствующего метода в Справочнике API.
Пример сгенерированной строки:
2020-09-15T10:00:33+03:00/9bb1501a-1547-425a-a022-1db5ff8f72c4/5555555555555599/123/202412
где:
- соответствующее время 2020-09-15T10:00:33+03:00
- uuid
- PAN - 5555555555555599
- CVV - 123
- срок действия карты декабрь 2024 года
Алгоритм создания платежного запроса
-
Отправьте запрос ключа
Для этого откройте ссылку https://dev.bpsprocessing.ru/payment/se/keys.do.
В результате получаем ключ в следующем формате:
{ "keys": [ { "keyValue": "-----BEGIN PUBLIC KEY-----{PUBLIC KEY BODY}-----END PUBLIC KEY-----", "protocolVersion": "RSA", "keyExpiration": 1893456000000 }, { "keyValue": "-----BEGIN PUBLIC KEY-----{PUBLIC KEY BODY}-----END PUBLIC KEY-----", "protocolVersion": "RSA", "keyExpiration": 1924992000000 } ] }
Где:
-
keyValue
- строковое представление публичного ключа RSA 2048 -
keyExpiration
- планируемая дата истечения срока действия ключа, дата в секундах по стандарту времени UNIX -
protocolVersion
- версия алгоритма шифрования
-
-
Зарегистрируйте заказ
-
Сгенерируйте строку, которую необходимо зашифровать
В нашем примере выше значение
orderId=b94eac90-e487-796a-8ed2-cf5a00096352
указано как `UUID
. Получаем строку:2020-09-15T10:00:33+03:00/9bb1501a-1547-425a-a022-1db5ff8f72c4/5555555555555599/123/202412
-
Зашифруйте полученную строку
Полученная строка должна быть зашифрована с использованием алгоритма шифрования RSA "RSA/None/PKCS1Padding" с длиной ключа 2048.
Пример результата шифрования:
Cfqv4t2XHBb9k8ixM7jxxCvziETS4koa3bV3F0QUvGVY47nKyMBqjGzV/rvmCAw6KzwoBDzeLsqwBLEzvQhaF627ZS0OJnhttBi4fL3/h/sBSwFtxr3s+oVUeoE3e4SNVUq9vciinOyNCIKqfpeQya+pOUYt3MgrtSeu66Ar12XEj4k6lecZN7Ffquj9RqhZsYhP63np5VCxJR90cNQG+TMWIFU6rqxLAe4gzCJtcXNrPT8aDOI201Zwd+e4K1YnrI7dZGlibO7MVMPB9m7NJaJTHko/MiJNWumAjS4yDDovLraIKMwOFTvAhqXsHslthpcUO0GZXEIaDRgERD7+jw==
Перед отправкой в REST-запросе к зашифрованной строке нужно применить URL-кодирование:
Cfqv4t2XHBb9k8ixM7jxxCvziETS4koa3bV3F0QUvGVY47nKyMBqjGzV%2FrvmCAw6KzwoBDzeLsqwBLEzvQhaF627ZS0OJnhttBi4fL3%2Fh%2FsBSwFtxr3s%2BoVUeoE3e4SNVUq9vciinOyNCIKqfpeQya%2BpOUYt3MgrtSeu66Ar12XEj4k6lecZN7Ffquj9RqhZsYhP63np5VCxJR90cNQG%2BTMWIFU6rqxLAe4gzCJtcXNrPT8aDOI201Zwd%2Be4K1YnrI7dZGlibO7MVMPB9m7NJaJTHko%2FMiJNWumAjS4yDDovLraIKMwOFTvAhqXsHslthpcUO0GZXEIaDRgERD7%2Bjw%3D%3D
-
Отправьте запрос на оплату с seToken.
См. пример запроса платежа с помощью seToken здесь.