/
КЕП через Дія

КЕП через Дія

Зміст

 

 


Опис

 

Мерчант надсилає запит з документами, в результаті чого ініціалізується запит на проведення підписання даних документів через Дію.


API параметри

 

HTTP METHOD: POST

API ENDPOINT: https://sign.platon.ua/api

Параметр

Значення

Опис

Параметр

Значення

Опис

action
Обов'язковий

SIGN_DOC_DIIA

API метод

client_key
Обов'язковий

String

API ключ мерчанта в системі PSP Platon саме для КЕП

client_request_id
Обов'язковий

String

Унікальний ідентифікатор запиту мерчанту

files
Обов'язковий

file

Файл на підпис. Для підписання декількох файлів, мерчант може надіслати архів з файлами

sign_doc_url
Обов'язковий

String

URL для відправки метаданих клієнта та підписаних файлів

success_url
Опція

String

Адреса для редиректу браузера клієнта після успішного виконання операції. Якщо це - передбачено сервісом який процесить операцію.

error_url
Опція

String

Адреса для редиректу браузера клієнта після неуспішного виконання операції. Якщо це - передбачено сервісом який процесить операцію.

hash
Обов'язковий

String

Контрольний підпис

md5( strtoupper( strrev($client_password). strrev($client_request_id) ) )

channel
опція

String

Додатковий тех параметр


 

<?php declare(strict_types=1); // ---------- ПЕРЕМЕННЫЕ $client_key = 'PL-*****'; $api_password = '********************'; $client_request_id = 'PL-11917'; $privateKey = ''; // приватный ключ для расшифровки (можно не указывать) $downloadFolder = './docs/'; $hash = md5(strtoupper(strrev($api_password).strrev($client_request_id))); if (! array_key_exists('personal_data', $_POST) || ! array_key_exists('hash', $_POST)) { echo "не прислано данные!\n"; return; } if ($hash !== $_POST['hash']) { echo "подписи не совпадают!\n"; } function isJson($string): bool { json_decode($string); return json_last_error() === JSON_ERROR_NONE; } // расшифровка $personalData = $_POST['personal_data']; if (! isJson($_POST['personal_data'])) { openssl_private_decrypt(base64_decode($personalData), $decrypted, $privateKey); $personalData = $decrypted; } $personalData = json_decode($personalData, true); // скачивание файлов foreach ($personalData['scans'] as $scan) { $filename = $downloadFolder.$scan['type'].'.'.$scan['extension']; file_put_contents($filename, fopen($scan['link'], 'r')); echo "файл сохранен! $filename\n"; } // персональные данные var_dump($personalData);
<?php declare(strict_types=1); $postRequiredFields = [ 'action', 'status', 'request_id', 'client_request_id', 'channel', ]; $signerFields = [ 'name', 'second_name', 'surname', 'itn', ]; $result = []; $allPostFields = array_merge($postRequiredFields, $signerFields); foreach ($allPostFields as $fieldName) { if (array_key_exists($fieldName, $_POST)) { $result[$fieldName] = $_POST[$fieldName]; } } $callbackDataAsString = json_encode($result); // сохраняем данные последнего коллбека $fileSaveResult = file_put_contents('last_callback_post_fields.txt', $callbackDataAsString); $are = var_export($_POST, true); //http_response_code(500); $log = __DIR__ . '/inArray.log'; file_put_contents($log, $are. "\n\n", FILE_APPEND); if ($fileSaveResult) { echo "файл с данными коллбека сохранен! \n"; } else { echo "нет доступа к файлу с данными коллбека - он не может быть записан :( \n"; } // обрабатываем подписанные файлы (сохраняем) $signedData = array_key_exists('signatures', $_POST) ? $_POST['signatures'] : null; if (! $signedData) { return; } foreach ($signedData as $idx => $signedFileData) { if ($_FILES['signatures']['tmp_name'][$idx]['signed_file']) { // сохраняем в текущую папку (где находится этот обработчик) $signFileSaveResult = move_uploaded_file( $_FILES['signatures']['tmp_name'][$idx]['signed_file'], $_FILES['signatures']['name'][$idx]['signed_file'] ); if (! $signFileSaveResult) { $filename = $_FILES['signatures']['name'][$idx]['signed_file']; echo "подписанный файл $filename не может быть сохранен :( \n"; } } }

 

IP адреси сервера відправки:

104.248.247.85
104.21.35.224
172.67.180.63

Редирект клиента при успешной верификации документов:

После успешной авторизации на success_url будет перенаправлен браузер клиента и методом GET переданы параметры.

https://YOUR_SUCCESS_PAGE/RA/callback/cachcallback.php? request_id=0.47912000%201625658249&
id=99c93434-82e4-4191-8f01- c8e6fe5623a0&
url=aHR0cHM6Ly93d3cucHJpdmF0MjQudWEvcmQva2VwP2hhc2g9cmQva2VwL3siY2xpZW50SWQiOiJQTEFUT05fOTljOTM0MzQtODJlNC00MTkxLThmMDEtYzhlNmZlNTYyM2EwIiwib3BlcmF0aW9uSWQiOiJSMXBhVm1GTVkyTjBhMFJrVjNaWlYySkhibXB6YzJkRmVuaHZWVnAyVTNseFMxRk9TVVpQVUZWWldVcDRaVmhXWVc1UmRHOTNaMWxzWVU1U2JYQktTMWxsIiwiYWN0aW9 uIjoic2lnbiJ9&
qr=aHR0cHM6Ly9zaWduLnBsYXRvbi51YS9hcGkvdjEvc21hcnQtaWQvOTljOTM0MzQtODJlNC00MTkxLThmMDEtYzhlNmZlNTYyM2EwL3FyP3Npe mU9MjUw

Параметр

Значение

Описание

Параметр

Значение

Описание

request_id

String

Уникальный
идентификатор запроса мерчанта

id

String

Уникальный
идентификатор запроса Platon

url

String

URL для редиректа клиента для подписания документов в base64

qr_code

String

QR-код для редиректа клиента для подписания документов в base64

При успешном запросе:

Параметры

Описание

Параметры

Описание

fields

Область данных общей информации

firstName

имя

middleName

отчество

lastName

фамилия

phone

актуальный телефон

inn

идентификационный номер налогоплательщика

clId

идентификатор клиента (необязательное поле и может отсутствовать)

clIdText

статических текст подтверждения выдачи информации

birthDay

дата рождения 

sex

пол (M - мужской, F - женский)

email

email

resident

определение резидентности (стандарт ISO(2))

UA — резидент

/UA — нерезидент

dateModification

последняя дата модификации данных в объекте (dd.MM.yyyy HH:mm:ss.S)

addresses

Область данных адреса регистрации/рождения

type

тип адреса

juridical — адрес регистрации (штамп в паспорте)

factual — адрес фактический (реально проживает)

birth – адрес рождения

country

страна

state

область

area

район

city

город

subTown

микрорайон/жилмассив и пр. в городе

street

улица

houseNo

номер дома

flatNo

номер квартиры

documents

Область данных документа регистрации

type

тип документа

passport – гражданский паспорт

zpassport – загранпаспорт

ident – удостоверение личности (высылается любой документ регистрации)

idpassport — пластиковый паспорт

govregistration - свидетельство государственной регистрации



series

серия (отсутствует в idpassport)

number

номер

issue

кем выдан

dateIssue

когда выдан

dateExpiration

срок действия (dd.MM.yyyy)

issueCountryIso2

страна выдачи



scans

Сканы



type

типы сканов

passport — скан гражданского паспорта

zpassport — скан загранпаспорта

inn – скан идентификационного налогового номера

personalPhoto – фотография личности (анфас)

file

файл

dateCreate

дата сканирования

extension

тип расширения файла

edrpou

ОКПО юридического лица

Параметр

Значение

Описание

Параметр

Значение

Описание

action

GET_SMART_ID

 

status

SUCCESS

 

request_id

String

Уникальный
идентификатор запроса на
стороне Platon

client_request_id

String

Уникальный идентификатор запроса на стороне мерчанта

channel

String

Канал получения запроса

signatures

List

Список с результатами подписания

$_FILES['signatures']

File

Подписанные файлы

name

String

Имя подписана

second_Name

String

Отчество подписана

surname

String

Фамилия подписана

itn

String

ИНН код подписанта

errorMessage

String

Текст ошибки

hash

String

Шифрованная подпись запроса

При неуспешном запросе:


 

Для індивідуальної перевірки необхідно завантажити файли документів підписаних КЕП на офіційний ресурс Центрального засвідчувального органу.

Related content

Документи з Дія
Документи з Дія
More like this
Дія + КЕП
More like this
P-SIGN запрос статуса
P-SIGN запрос статуса
More like this
IA регулярний платіж по токену
IA регулярний платіж по токену
More like this
Перевірка статусу C2A оплати
Перевірка статусу C2A оплати
More like this
A2A перевірка статусу
A2A перевірка статусу
More like this