Генериране на 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. |
| Задължително за някои методи. Списък на задължителните параметри seToken, използвани в определен метод, е изброен в описанието на съответния метод в Справочник на API. | |||
| Условие (вж. описанието) | CVV |
String [3] | Проверочен код на картата. Този параметър е задължителен, ако за търговеца не е избрано разрешението Може да извършва плащане без потвърждение на CVC. Допускат се само цифри. |
| Условие | EXPDATE |
Integer [6] | Срок на валидност на картата в следния формат: YYYYMM, където YYYY - година, MM - месец. |
| Задължително за някои методи. Списък на задължителните параметри seToken, използвани в определен метод, е изброен в описанието на съответния метод в Справочник на API. | |||
| Условие | mdOrder |
String [1..36] | Идентификатор на поръчката за плащане с криптограма. |
| Задължително за някои методи. Списък на задължителните параметри seToken, използвани в определен метод, е изброен в описанието на съответния метод в Справочник на API. | |||
| Условие | bindingId |
String [1..255] | Идентификатор на вече съществуваща връзка (идентификатор на карта, токенизирана от шлюза). Може да се използва само ако търговецът има разрешение за работа с връзки. Заявката трябва да включва или PAN, или bindingId. |
| Задължително за някои методи. Списък на задължителните параметри seToken, използвани в определен метод, е изброен в описанието на съответния метод в Справочник на API. | |||
| Не | cardholder |
String | Име на притежателя на картата с латински букви. |
| Не | registeredFrom |
String | SDK, който е използван за регистрация на поръчката. Допустими стойности: MSDK_CORE, MSDK_FORMS, MSDK_PAYMENT, WSDK_CORE, WSDK_PAYMENT
|
Пример за генериран низ:
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://uat.dskbank.bg/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 тук.