Генерация seToken
Что такое seToken
seToken (Self Encrypted Token) — это криптограмма, используемая для безопасной передачи платежных данных. Ее можно использовать в следующих запросах, когда карточные данные собираются на стороне Партнера:
Ниже описано, как создать seToken и отправить в запросе на оплату. В качестве альтернативы можно использовать Mobile SDK Core для формирования токена.
Формат seToken до шифрования
До шифрования seToken представляет собой строку, которая включает в себя перечисленные ниже параметры, разделенные символом "/".
Параметры, включенные в состав seToken
В таблице ниже перечислены параметры, которые можно использовать в строке seToken. Эти параметры должны быть включены в строку в строгой последовательности согласно этой таблице.
| Параметр | Обязательность | Описание |
|---|---|---|
| timestamp | да | Дата запроса по стандарту ISO 8601:2004 в формате YYYY-MM-DDThh:mm:ss±hh:mm. Может отличаться не более чем на полчаса от даты/времени получения запроса в РБС. |
| UUID | да | Идентификатор в стандарте UUID, сформированный как описано здесь. |
| PAN | да | Номер карты списания |
| CVV | нет | Проверочный код карты. Этот параметр обязателен, если у Партнера нет разрешения на оплату без подтверждения CVC. |
| EXPDATE | нет | Дата окончания срока действия карты списания (в формате YYYYMM, где YYYY - год, MM - месяц) |
| mdOrder | да | Идентификатор заказа, который нужно оплатить криптограммой |
Если параметр не передается, его место в строке сохраняется, но передается пустым. Валидными наборами данных являются:
timestamp/UUID/PAN/CVV/EXPDATE/mdOrdertimestamp/UUID/PAN//EXPDATE/mdOrdertimestamp/UUID/PAN///mdOrder
Пример сгенерированной строки:
2024-09-03T10:10:24+03:00/13a4713c-bf5e-47d5-b986-74887875b02e/2200650800006500/123/202412/4e8c4947-13c3-42d6-9fbd-ca8ba44991bf
где:
- соответствующее время 2024-09-03T10:10:24+03:00;
- сгенерированный уникальный UUID;
- PAN — 2200650800006500;
- CVV — 123;
- срок действия карты декабрь 2024 года;
- идентификатор заказа.
Алгоритм создания платежного запроса
-
Отправьте запрос ключа
Платежный сервис Роутер поддерживает два типа ключей:
- Длина ключа 4096 бит для алгоритма RSA/NONE/OAEPWithSHA512AndMGF1Padding. Чтобы получить этот ключ, вызовите метод https://api.router.rbsuat.com/v1/se/keys2.do. Данный тип ключей является рекомендованным.
- Длина ключа 2048 бит для алгоритма шифрования RSA/None/PKCS1Padding. Чтобы получить этот ключ, вызовите https://api.router.rbsuat.com/v1/se/keys.do.
Ключи возвращаются в следующем формате:
{ "keys": [ { "keyValue": "{Public key in PEM format}", "protocolVersion": "RSA-4096", "keyExpiration": 1741006920 } ] }Оба метода могут возвращать несколько ключей. Желательно использовать наиболее свежий ключ с наиболее поздней датой истечения действия
keyExpiration. Вы можете кэшировать у себя публичные ключи Платежного сервиса на время, не превышающее срок действия ключа.Ключи для тестовой и продуктивной среды различаются.
-
Зарегистрируйте заказ
-
Сгенерируйте строку, которую необходимо зашифровать
Пример строки:
2024-09-03T10:10:24+03:00/13a4713c-bf5e-47d5-b986-74887875b02e/2200650800006500/123/202412/4e8c4947-13c3-42d6-9fbd-ca8ba44991bf -
Зашифруйте полученную строку
Полученная строка должна быть зашифрована публичным ключом Платежного сервиса:
- При использовании ключа RSA-2048 шифрование выполняется по алгоритму RSA/None/PKCS1Padding
- При использовании ключа RSA-4096 шифрование выполняется по алгоритму RSA/None/OAEPWithSHA-512AndMGF1Padding, при этом для MGF padding должен использоваться хэш SHA-512.
Пример результата шифрования:
LeOm7yE1wvw8/r0aBv5nOMlrodhPFIB8POu9YPt60CTQL3aS6AiBCNuveEkUzRtxO5JHjE4H50MC6S6oY7/JqT3QJFhCRxMBRCaaxcczG3MTU8NakxIPYA496zBUr9pCspQ/F6hyockEPIdst0WD2HgB25zZFpjUvBDExGtfINqT0+mcsFGBdf8knj5JMzKieakk/w8ahzHmXVDx2zNfNT4TBdgKUmYNeiYe+mPHmVzQo37OLBvZQ5tEl3gAZHSzBUyaKcCZJJcnpjWWvY+A8hCeMLjttX0Y+RhOmdduYQ5SvrDO3HJcZi2EVJISD/ZF8Y4XAs2KQwORWyOzngd6RA== -
Отправьте запрос на оплату с seToken
См. пример запроса платежа с помощью seToken здесь.
-
Если требуется 3DS V2, отправьте второй запрос оплаты с тем же seToken
При прохождении проверки 3DS V2 необходимо отправлять запрос платежа дважды — см. Прохождение 3DS. В повторном запросе оплаты (paymentOrder.do или instantPayment.do) используйте тот же самый seToken, что и в первом запросе. Генерировать новый токен с новым timestamp не нужно.