КЕП через Дія

Зміст

 

 


Опис

 

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


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

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

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


 

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