![]() |
|||||||
| |||||||
Интерфейс используется для автоматической работы магазинов и бирж. С его помощью можно в автоматическом режиме выставлять и удалять счета, переводить кредиты, проверять статус трансакций.
Интерфейс соблюдает требования безопасности, принятые в Uniq-IP.
Для выставления и проверки счетов применяется логин и пароль в системе, а для прямого перевода кредитов ещё и ключевой файл.
При этом ни пароль, ни ключевой файл в запросах не передаются, а для идентификации применяется цифровая подпись.
Для работы с автоматическим интерфейсом нужно
дать заявку администратору.
1. Термины и определения
Трансакция — процесс, который может включать следующие этапы: выставление счёта, подтверждение перевода, или прямой перевод кредитов (UNIQ) со счёта на счёт в сервисе Uniq-IP.
Сервер TransUNIQ — обработчик http://www.uniq-ip.com/cgi-bin/transuniq/auto.cgi на который передаются параметры запроса с сервера продавца или от клиента, а также, который передаёт результаты успешной трансакции на сервер продавца.
Сервер продавца (Продавец) — посылает запросы на сервер TransUNIQ на проведение трансакции, а также ряд других запросов, получает результат успешно проведенной трансакции, и, выдаёт после этого, товар покупателю. Обработчик запросов на этот сервер имеет конкретный адрес в сети (url_quest).
Клиент (Покупатель) — броузер, с помощью которого пользователь производит активные действия: инициирование трансакции, подтверждение перевода и получение товара.
url_ok — URL, на который переадресуется броузер покупателя в случае успешной трансакции.
* Термины: Продавец, Покупатель и Товар здесь имеют условные значения, и используются только для простоты восприятия. Так, в случае с автоматическим интерфейсом Uniq-IP <-> Биржа, в качестве продавца будет выступать сервер биржи, а в качестве товара, например, титульные знаки Webmoney.
| № | Параметр | Описание | Макс. число символов | Допустимые символы |
| 1 | type | тип запроса, служит для запросов на сервер TransUNIQ | bill, bill_form, del, verify, trans | |
| 2 | logFrom | логин продавца | 12 | a..z A..Z 0..9_- |
| 3 | logTo | логин клиента | 12 | a..z A..Z 0..9_- |
| 4 | invFrom | номер счёта в системе продавца | 20 | a..z A..Z 0..9_- |
| 5 | invTU | номер счёта в системе TransUNIQ | 11 | целое число |
| 6 | sum | сумма переводимых UNIQ | 8 | целое число |
| 7 | comment | комментарии (назначение платежа) | 150 | любые символы ANSI |
| 8 | pasFrom | пароль продавца в Uniq-IP | 12 | a..z A..Z 0..9_- |
| 9 | keyFrom | ключевой файл продавца в Uniq-IP | 40 | a..z A..Z 0..9 |
Параметры "pasFrom" и "keyFrom" могут участвовать в формировании цифровой подписи, но не передаются в запросах по HTTP.
Кроме указанных в таблице, можно передавать дополнительные параметры в таком виде: имя должно начинаться с "user_", а значение может содержать любые символы ANSI (до 255 символов). Дополнительные параметры запоминаются сервером TransUNIQ и передаются на url_quest и url_ok вместе с основными параметрами. Подробнее об этом см. ниже.
| № | Название запроса | Тип запроса, параметр type | Способ передачи | Обязательные параметры | Необязательные параметры | Ответ, ok | Ответ, error |
| 1 | выставление счёта | bill | socket | type, logFrom, logTo, sum, pasFrom, sign | comment, invFrom | ok invTU=[уникальный номер счёта в TransUNIQ] | error bill |
| 2 | выставление счёта | bill_form | form | type, logFrom, logTo, sum, pasFrom, sign | comment, invFrom | редирект на TransUNIQ | ошибка счёта |
| 3 | удаление счёта | del | socket | type, logFrom, logTo, sum, pasFrom, sign | ok status=del | error del | |
| 4 | проверка статуса счёта по параметру invFrom | verify | socket | type, logFrom, invFrom, pasFrom, sign | ok status=[**] | error verify | |
| 5 | проверка статуса счёта по параметру invTU | verify | socket | type, logFrom, invTU, pasFrom, sign | ok status=[**] | error verify | |
| 6 | проверка суммы на Общем счёте | verify | socket | type, logFrom, pasFrom, sign | ok sum=[сумма, UNIQ] | error verify | |
| 7 | перевод UNIQ | trans | socket | type, logFrom, logTo, sum, pasFrom, keyFrom, sign | comment, invFrom | ok invTU=[уникальный номер счёта в TransUNIQ] | error trans |
| 8 | отмена трансакции | back | socket | type, logFrom, invTU, pasFrom, keyFrom, sign | logTo, sum, comment | ok status=back | error back |
Выставление счёта
Может передаваться на сервер TransUNIQ в двух вариантах: с помощью сокета или с помощью HTML-формы. В зависимости от этого параметр "type" может принимать значения: bill или bill_form. Разницы в запросе на сервер между ними нет никакой, а вот ответ сервера разный. В первом случае возвращается уникальный номер счёта, присвоенный сервером для данной трансакции, а во втором — возвращается указание броузеру для переадресации на сайт TransUNIQ для продолжения трансакции (оплаты).
Удаление счёта
Применяется в случае с автоматическими биржами для дублирования работы пользователя. В случае подачи такого запроса счёт может быть удалён только, если трансакция ещё не окончена. Т.е., если статус данного счёта равен "bill" (запрос №5).
Проверка статуса счёта
Проверка статуса счёта нужна для дополнительной страховки трансакции, и не является обязательной. С её помощью можно получить статус данной трансакции по номеру счёта. Номер счёта может быть передан в запросе как в системе TransUNIQ (invTU), так и в системе продавца (invFrom).
Перевод UNIQ
Этот тип запроса необходим для прямого перевода кредитов со счёта на счёт, и применяется для автоматических бирж.
Отмена трансакции
Запрос применяется только для автоматических бирж для отмены лотов. Номер трансакции должен быть передан в системе TransUNIQ (invTU).
Запрос может быть передан на сервер TransUNIQ методом POST (желательно) или GET. При формировании запроса нужно помнить, что URL-адреса изображаются в стандартной ASCII-кодировке, поэтому используемые специальные символы подлежат замене шестнадцатеричными ASCII-кодами. Это, впрочем, не относится к запросу №2 таблицы в том случае, если форма передаётся броузером (броузер всё, что необходимо перекодирует автоматически).
type=bill
Далее нужно сформировать цифровую подпись из строки, а сама строка «склеивается» из значений параметров.
Получаем строку: billSashaFedya100подарокTk567
Поскольку значение параметра "comment" содержит специальные символы, то для передачи по HTTP мы их должны перекодировать.
Новый comment=%EF%EE%E4%E0%F0%EE%EA
Далее формируем запрос методом GET:
Внимание. При формировании строки значения параметров распологаются в порядке таблицы.
Если какой-нибудь параметр отсутствует, то он просто пропускается.
Внимание. Автоматический интерфейс для логина работает только, если он разрешён администратором Uniq-IP!
Пример №1. Выставление счёта
Возьмём запрос №1 из таблицы и следующие параметры:
logFrom=Sasha
logTo=Fedya
sum=100
comment=подарок
pasFrom=Tk567
Получаем цифровую подпись (подробнее см. ниже): sign=df348a4a0e4dd8ac4d670b041c67bd30
http://www.uniq-ip.com/cgi-bin/transuniq/auto.cgi?type=bill&logFrom=Sasha&logTo=Fedya&sum=100&comment=%EF%EE%E4%E0%F0%EE%EA&sign=df348a4a0e4dd8ac4d670b041c67bd30
Цифровая подпись формируется путём «склеивания» значений основных параметров в строку, в том порядке, в котором они указаны в таблице. Если какой-нибудь из параметров отсутствует, то строка формируется без него. Из полученной таким образом строки формируется хеш-функция, которая и представляет собой цифровую подпись.
Хеш-функция — это последовательность из 32-х шестнадцатеричных цифр в соответствии с широко распространенным алгоритмом Message Digest 5 (MD5), разработанным Ron Rivest из MIT Laboratory for Computer Science и RSA Data Security, Inc. Алгоритм был опубликован в сети Интернет в апреле 1992 года (RFC 1321).
type=verify
«Склеиваем» данные и получаем следующую строку: verifySashaTk567
Обратите внимание: pasFrom участвует только в формировании цифровой подписи, но в запросе на сервер не передаётся!
Пример №2. Проверка суммы на Общем счёте логина Sasha
Возьмём запрос №6 из таблицы и следующие параметры:
logFrom=Sasha
pasFrom=Tk567
Получаем из неё цифровую подпись: sign=0c9a8f29d42b9ee5138d1f3ac9932e51
Передаём запрос на сервер TransUNIQ:
http://www.uniq-ip.com/cgi-bin/transuniq/auto.cgi?type=verify&logFrom=Sasha&sign=0c9a8f29d42b9ee5138d1f3ac9932e51
type=trans
«Склеиваем» данные и получаем следующую строку: transSashaFedya100presentTk567fbb6cf1694f82af9742ac568735d94c8421c6a55
Обратите внимание: pasFrom и keyFrom участвуют только в формировании цифровой подписи, но в запросе на сервер не передаются!
Потренироваться в получении цифровой подписи вам поможет эта страничка.
Пример №3. Перевод 100 UNIQ с логина Sasha на логин Fedya
Возьмём запрос №7 из таблицы и следующие параметры:
logFrom=Sasha
logTo=Fedya
sum=100
comment=present
pasFrom=Tk567
keyFrom=fbb6cf1694f82af9742ac568735d94c8421c6a55 (содержимое ключевого файла у Sasha)
Получаем из неё цифровую подпись: sign=ae249aedafe8f9d1be24520409316078
Передаём запрос на сервер TransUNIQ:
http://www.uniq-ip.com/cgi-bin/transuniq/auto.cgi?type=trans&logFrom=Sasha&logTo=Fedya&sum=100&comment=present&sign=ae249aedafe8f9d1be24520409316078
| № | Название запроса | Тип запроса, параметр type | Обязательные параметры | Необязательные параметры | Ответ, ok | Ответ, error |
| 1 | предварительный запрос | bill | type, logFrom, logTo, invTU, sum, pasFrom, sign | comment, invFrom, user_… | ok | error bill (или др.) |
| 2 | оповещение об окончании трансакции | end | type, logFrom, logTo, invTU, sum, pasFrom, sign | comment, invFrom, user_… | ok | error end (или др.) |
| 3 | удаление счёта | del | type, logFrom, logTo, invTU, sum, pasFrom, sign | comment, invFrom, user_… | ok | error del (или др.) |
Предварительный запрос
Посылает продавцу параметры выполняемой трансакции. Желателен, но не обязателен для обработки продавцом. В случае, если запрос не обрабатывается, сервер продавца должен дать ответ: ok.
Оповещение об окончании трансакции
Передаёт продавцу параметры выполненной трансакции. Обязателен для обработки. Если ответ на этот запрос отрицательный, то сервер TransUNIQ посылает сообщение на e-mail продавца.
Удаление счёта
Применяется для дублирования работы пользователя в TransUNIQ и на сервере продавца. В случае подачи такого запроса счёт может быть удалён только, если трансакция ещё не окончена. Запрос не обязателен, но желателен для обработки, особенно для работы автоматических бирж.
Все запросы, в случае их обработки, должны проверять подлинность цифровой подписи! Цифровая подпись формируется также, как и с запросами на сервер TransUNIQ (пример №2 ), а затем сравнивается с пришедшим на url_quest параметром "sign". При этом logFrom — логин продавца в Uniq-IP, pasFrom — его пароль (таблица)
|
| Uniq-IP © 2001-2010 |