Мы предлагаем мощные инструменты для решения ваших задач

Интеграция Sign.Me в сторонние сервисы осуществляется
значительно проще существующих решений. Ознакомьтесь
с документацией к нашим API, чтобы убедиться в этом
самостоятельно.

1. Как пользоваться API

API предоставляет две возможности – подпись и проверка файла. В любом случае необходимо сформировать POST-запрос. Для использования функций необходимо зарегистрировать свой сайт, с которого будет приходить запрос, в нашей системе и получить код доступа. Далее подробнее о каждом:

1.1. Подпись файла

Необходимо сделать запрос к сайту подписи по url:

						
https://server_name:port_number/signapi/sjson
						
					

В запросе необходимо отправить POST данными JSON-пакет формата:

					
{
    'filet' = base64_encode( содержимое файла ),
    'fname' = имя файла,
    'key' = полученный ключ доступа,
    'user_ph' = телефон пользователя, подписывающего файл, необязательно
}
					
					

JSON пакет должен быть отправлен в виде строки:

						
rfile=json_encode(массив выше)
						
					

В ответ приходит добавочная часть url, которую нужно открыть в браузере или iframe текущего окна браузера в виде

						
https://server_name:port_number/signapi/sjson/добавочная_часть
						
					

для того, чтобы пользователь ввел пароль для подписания файла. В противном случае приходит сообщение об ошибке. Возможные сообщения об ошибке будут рассмотрены ниже.

1.2. Проверка файла

Аналогично подписи, необходимо сделать POST запрос по url:

						
https://server_name:port_number/signaturecheck/json
						
					

отправив JSON пакет:

						
{
    'filet' = base64_encode( содержимое файла )
    'md5' = md5( содержимое файла )
}
						
					

Отправляется строка

						
rfile=json_encode(массив выше)
						
					

В ответ приходит JSON пакет, содержащий массив, в котором есть вся необходимая информация о подписавших проверяемый файл пользователях:

						
{
    'count' = i,
	...
    'signature_i' = {
        'value' = base64_encode(значение подписи),
        'pkcs7' = web_link(Ссылка на скачивание pkcs7 - контейнера)
        'pkcs64' = base64_encode(pkcs7 контейнер электронной подписи)
        'sigdate' = дата подписи,
        'person' = {
            'public_key' = base64_encode(открытый ключ),
            'passport' = {
                'name' = имя,
                'lastname' = отчество,
                'surname' = фамилия,
            },
            'phone_number' = телефон,
            'email_address' = email,
        }
    }
}
						
					

либо массив с 0 значением количества подписей, если файл не подписан:

						
{
    'count' = 0,
}
						
					

либо сообщение об ошибке.

Подробнее оба действия можно рассмотреть в примерах.

1.3. Проверка файла через iframe

Необходимо сделать POST запрос на url:

						
https://server_name:port_number/signaturecheck/request
						
					

Достаточно прислать хеш файла, система вернет сгенерированный адрес, открыв который в iframe можно увидеть перечень подписавших этот файл.

Запрос должен быть следующего вида:

						
{
    'key' = полученный ключ доступа,
    'hash' = md5( содержимое файла )
}
						
					

Отправляется строка

						
jsonrequest=json_encode(массив выше)
						
					

В ответ приходит сообщение об ошибке, либо значение, из которого необходимо сформировать адрес:

						
https://server_name:port_number/signaturecheck/iframe/добавочная_часть
						
					

По этому адресу iframe будет доступен для открытия только один раз. Для повторного открытия необходимо повторить процедуру.

1.4. Быстрая проверка факта подписания запроса

Для проверки, подписан ли запрос из пункта 1.1, необходимо открыть GET запросом адрес

						
https://server_name:port_number/signapi/check/добавочная_часть
						
					

Ответ json, status: “0” - не подписан, “1” - подписан, “2” - отклонен; “comment” - причина отклонения, если есть


2. Сообщения об ошибках при подписи

error 1: no file Означает, что после раскодирования JSON пакета в нем не обнаружено элемента массива с ключем filet
error 2: no filename Означает, что после раскодирования JSON пакета в нем не обнаружено элемента массива с ключем fname
error 3: wrong file Означает, что пришедшее в массиве содержимое по ключу filet не получается раскодировать base64_decode
error 4: wrong json Означает, что не получается раскодировать JSON пакет, пришедший в POST запросе по ключу rfile
error 5: cant create file Не получается записать файл на сервер, возможно проблема в имени файла, иначе свяжитесь с разработчиками
error 6: cant create request Не получается создать запрос на подпись файла на сервере – в любом случае свяжитесь с разработчиками


3. Сообщения об ошибках при проверке

error 1: wrong base64 Означает, что пришедшее в массиве содержимое по ключу filet не получается раскодировать base64_decode
error 2: wrong md5 Не получается вычислить md5 от раскодированного файла на стороне сервера, свяжитесь с разработчиками
error 3: wrong file Означает, что пришедшее в массиве содержимое по ключу filet не получается раскодировать base64_decode
error 4: wrong hash Означает, что пришедшее в пакете значение md5 не совпадает с вычисленным на сервере
error 5: no hash Означает, что значение md5 не пришло на сторону сервера
error 6: wrong json Означает, что не получается раскодировать JSON пакет, пришедший в POST запросе по ключу rfile


4. Сообщения об ошибках при запросе iframe

error 1: wrong json Означает, что не получается раскодировать JSON пакет, пришедший в POST запросе по ключу rfile
error 2: wrong key Означает, что присланное значение в поле key не соответствует заданному для сайта, с которого пришел запрос, в системе, либо сайт не зарегистрирован
error 3: wrong hash Означает, что md5 прислан в неправильном формате (не соответствует регулярному выражению a-zA-Z0-9, содержит недопустимые символы)
error 4: request not created Не получается создать запрос на проверку файла на сервере – в любом случае свяжитесь с разработчиками

*Во всех действиях ошибка error 0: wrong method означает, что необходимо использовать POST запрос

Выгрузка сертификатов

По адресу https://sign.me/sign/cer/ (sandbox.sign.me для тестов) отправляется POST запрос параметрами
Принимается пакет:

						
{
    'user_ph': '+79001234567' или 'company_ogrn': '1234567890123'
    'get_active_certs': 0 - неактивные, 1 - активные, 2 - все
    'get_all_certs': 0 - на юзера, 1 - на компании, 2 - все
    'format': 0 - pem, 1– cer
    'auto': 1 – если нужны ключи автоподписи, не посылать если нет
}
						
					

Ответ в виде строки.
В случае успеха:

						
{
    id: base64_encode(сертификат),
	...
}
						
					

В случае ошибки:

error 0: POST используйте POST error 1: no phone or ogrn нет ни телефона пользователя, ни ОГРН error 2: no user нет пользователя с таким телефоном error 3: no company нет компании с таким ОГРН error 4: wrong type неправильный get_all_certs error 5: no keys нет ключей с искомыми параметрами (активные и т.д.)


Удалённая регистрация

Для отправки заявки на регистрацию через api необходимо получить ключ доступа. Для этого необходимо связаться с техническим специалистом по контактам, указанным на сайте (на момент написания инструкции: т.+7 (905) 762 22 88 email: info@sign.me)

Полученный ключ, а также данные регистрации необходимо отправить POST запросом в виде json-пакета на адрес https://server_name/register/api в формате:

						
'reg'={
   'name':'Имя', //только русские буквы в этих 3 полях
   'surname':'Фамилия',
   'lastname':'Отчество', //не обязательно
   'key':'ключ,полученный для доступа',
   'bdate':'1970-01-13', //дата рождения
   'pdate':'1980-01-13', //дата получения паспорта
   'gender':'M', //M – мужской, F - женский
   'country':'Россия', //регистрация доступна только для граждан РФ
   'region':'Краснодарский край', //регион, !обязательно, для Москвы - Москва
   'city':'Сочи', //город
   'street':'Первая', //улица
   'house':'1', //дом
   'building':'1', //корпус, не обязательно
   'room':'1', //квартира
   'ps':'1234', //серия паспорта
   'pn':'567890', //номер паспорта
   'issued':'Отедлением по управлению всеми отделениями', //кем выдан
   'pcode':'123-456', //код подразделения, три цифры дефис три цифры
   'snils':'12345678901', //СНИЛС, без дефисов и пробелов, только цифры
   'inn':'123456789012', //ИНН, не обязательно
   'postregion':'Москва', //регион доставки сертификата
   'postcity':'Москва', //город доставки сертификата
   'postaddr':'ул Пушкина, дом Колотушкина', //адрес доставки в строчку
   'phone':'+79012345678', //телефон человека, в таком формате
   'email':'test@test.test', //email
   'delivery':0, //
   'regtype':1   – если возвращать ошибку, 2   – если возвращать id уже существующей заявки с таким же телефоном или СНИЛС,
   //далее, если хотите регистрировать компанию, то указать следующие поля
   'company':1,
   'cname':'название',
   'cemail':'емеил',
   'cphone':'телефон',
   'ccity':'город',
   'caddr':'юр адрес',
   'cfaddr':'фактический адрес, если нет, то будет юр адрес',
   'cinn':'инн',
   'cogrn':'огрн',
   //остальные необязательно
   'cbank':'название банка',
   'cbik':'БИК',
   'crass':'Расс счет',
   'ckorr':'Корр счет',

}
						
					

server_name = “sign.me” для официальной регистрации
“sandbox.sign.me” для тестов (ключи доступа будут разные)

В ответ придет строка, при успешном создании заявки – json

						
{
   'id':1, //id заявки
   'pdf': base64 pdf файл на созданного пользователя
   'cid':id компании, если создавалась
}
						
					

В случае ошибки:

error 0: POST используйте POST error 1: wrong json неправильный формат пакета error 2: wrong key неправильный ключ доступа error 3: wrong data неизвестная ошибка в данных, заявка не создалась error 4: wrong data on key “k”: “e” ошибка данных типа e в ключе k (чаще всего неправильный формат или недопустимые символы) error 5: key not created не создался сертификат, проблема на нашей стороне, сообщите по контактам


Предпроверка

Перед созданием заявки можно проверить по трем параметрам:
телефон, email, СНИЛС
создавалась ли уже такая заявка

Для этого отправить POST запрос на https://server_name/register/precheck с параметрами

						
'key' : ваш апи ключ,
'phone' или 'email' или 'snils' соответственно названию искомой строки, любое из
						
					

В ответ придет массив, если по параметру будет найдена заявка, то содержащий

						
'phone' =>
{
    'id': id заяки,
    'approved': проверен ли модератором,
    'created': активировался ли пользователь
}
						
					

Активация

После создания заявки можно подтвердить ее (позволить пользователю начать активацию, равносильно проверке модератором, это смогут делать только те апи-ключи, которым мы доверяем). Для этого необходимо отправить POST запрос на адрес https://server_name/register/activate с параметрами

						
'key': ваш апи ключ,
'uid': id заявки
						
					

Можно активировать только те заявки, которые созданы этим же апи ключом.
Пользователю будут высланы данные для активации аккаунта по его почте и телефону.