Генерация 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 да Идентификатор заказа, который нужно оплатить криптограммой

Если параметр не передается, его место в строке сохраняется, но передается пустым. Валидными наборами данных являются:

Пример сгенерированной строки:

2024-09-03T10:10:24+03:00/13a4713c-bf5e-47d5-b986-74887875b02e/2200650800006500/123/202412/4e8c4947-13c3-42d6-9fbd-ca8ba44991bf

где:

Алгоритм создания платежного запроса

  1. Отправьте запрос ключа

    Платежный сервис Роутер поддерживает два типа ключей:

    • Длина ключа 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. Вы можете кэшировать у себя публичные ключи Платежного сервиса на время, не превышающее срок действия ключа.

    Ключи для тестовой и продуктивной среды различаются.

  2. Зарегистрируйте заказ

  3. Сгенерируйте строку, которую необходимо зашифровать

    Пример строки:

    2024-09-03T10:10:24+03:00/13a4713c-bf5e-47d5-b986-74887875b02e/2200650800006500/123/202412/4e8c4947-13c3-42d6-9fbd-ca8ba44991bf

  4. Зашифруйте полученную строку

    Полученная строка должна быть зашифрована публичным ключом Платежного сервиса:

    • При использовании ключа 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==

  5. Отправьте запрос на оплату с seToken

    См. пример запроса платежа с помощью seToken здесь.

  6. Если требуется 3DS V2, отправьте второй запрос оплаты с тем же seToken

    При прохождении проверки 3DS V2 необходимо отправлять запрос платежа дважды — см. Прохождение 3DS. В повторном запросе оплаты (paymentOrder.do или instantPayment.do) используйте тот же самый seToken, что и в первом запросе. Генерировать новый токен с новым timestamp не нужно.

Категории:
eCommerce API V1
Категории
Результаты поиска