|
|
Home
Описание стандарта ExDKСтандарт |
Система - платежная система, совокупность аппаратных и программных средств ООО "Дельта Кей", предназначенных для организации приема платежей в адрес зарегистрированных поставщиков услуг, организации переводов между пользователями и выполнения иных финансовых операций, реализованных в качестве сервисов платежной системы. | |
Сервер - интернет-сервер системы с установленным программным комплексом для обеспечения процессинга операций. | |
Агент - пользователь системы, имеющий право на осуществление определенных пользовательских операций. Список разрешений определяется | |
Пользователь - юридическое либо физическое лицо, зарегистрированное в Системе и пользующееся ее сервисами. | |
Точка - зарегистрированный в Системе объект, поддерживающий работу с Системой в том либо ином виде, в зависимости от типа этого объекта. Точкой может являться дилерский пункт приема платежей, терминал моментальной оплаты, интернет-сайт и другие объекты, имеющие возможность организации приема платежей через Систему и зарегистрированные должным образом в Системе. | |
Терминал - разновидность точки, программно-аппаратный комплекс, предназначенный для организации приема платежей в режиме самообслуживания. | |
Поставщик услуг - Пользователь, зарегистрированный в Системе в качестве получателя платежей за предоставляемые им Плательщику услуги либо реализуемые товары. | |
Плательщик - юридическое или физическое лицо, производящее оплату в пользу Поставщика услуг через Систему. | |
Договор - юридический документ, оформленный на бумажном носителе, либо в соответствии с действующим законодательством, в виде публичной оферты, регламентирующий отношения между Пользователем и Системой, и содержащий существенные условия взаимодействия сторон, включая юридические, технические и финансовые условия сотрудничества. | |
Дилер - коммерческий представитель Системы, уполномоченный представлять ее интересы в части прием платежей в адрес поставщиков услуг. |
Версия | Дата | Изменения, дополнения |
1.0 | 05.12.2004 | Создание протокола |
2.0 | 07.02.2005 | Изменены параметры авторизации |
2.1 | 17.05.2006 | Добавлена мультитабличность ответов |
2.5 | 16.11.2006 | Добавлен пример реализации на Borland Delphi |
3.0 | 18.12.2006 | Добавлены спецификации протоколов |
3.2 | 13.06.2007 | Добавлен пример подписи на языке Perl |
https://<server_name>/<script_name>?cmd=<cmd>&ext_transact=<ext_transact> &login=<login>&password=<password> [&<param_name1>=<param_value1>]...[&<param_nameN>=<param_valueN>]
<server_name> - имя сервера, зависит от того, какие из серверов системы
поддерживают пользовательский сертификат; | |
<script_name> - название скрипта на сервере; | |
<cmd> - название команды; | |
<ext_transact> - номер внешней транзакции; | |
<login> - логин отправителя команды; | |
<password> - пароль отправителя команды, склеенный (сконкатенированный)
с номером внешней транзакции, захешированный по алгоритму md5; | |
<param_name1> , <param_nameN> - названия параметров; | |
<param_value1> , <param_valueN> - значения параметров. |
https://deltakey.net/dkcp/security.py?cmd=change_login&ext_transact=1254&login=ms&password=867c4bc5f2010a95f9971b91ddaa8f47
&program=1250&new_login=test
.<?xml version="1.0" encoding="UTF-8"?> <response> <transact>...<transact> <ext_transact>...</ext_transact> <date>...</date> <status>...</status> <status_text>...</status_text> <result>...<result> <result_text>...</result_text> <advanced> [<param1>...</param1> ... <paramN>...</paramN>] </advanced> <table [name="table1"] row="..." col="..."> [<colnames> <colname1>ruscolname1</colname1> ... <colnameN>ruscolnameN</colnameN> </colnames> <colvalues> <colname1>colvalue1</colname1> ... <colnameN>colvalueN</colnameN> </colvalues> ... <colvalues> <colname1>colvalue1</colname1> ... <colnameN>colvalueN</colnameN> </colvalues>] </table> ... <table [name="tableN"] row="..." col="..."> [<colnames> <colname1>ruscolname1</colname1> ... <colnameN>ruscolnameN</colnameN> </colnames> <colvalues> <colname1>colvalue1</colname1> ... <colnameN>colvalueN</colnameN> </colvalues> ... <colvalues> <colname1>colvalue1</colname1> ... <colnameN>colvalueN</colnameN> </colvalues>] </table> </response>
transact - номер транзакции сервера, созданная в результате команды, или обращение к которой выполнялось в процессе выполнения команды. Представлена длинным целым числом. Может быть равной 0 в случае, если команда не обращается к какой-либо транзакции и не создает ее (получение переменных сервера), либо задействует более одной транзакции (получение статистики операций);
| |
ext_transact - номер внешней транзакции;
| |
data - дата завершения выполнения команды сервером. Представлена в виде YYYYMMDDhhmmss (например, дата 20061127174403 может быть расшифрована как 27 ноября 2006 г. 17:44:03);
| |
status - статус выполнения команды. Представлен целым числом: 1 - в обработке, 2 - завершена. Необходимость введения данного элемента обусловлена тем фактом, что многие команды завершаются сразу (смена регистрационных данных, получение статистики), либо выполняют предварительную разноску по базе данных (к примеру, проведение платежа: посылаются данные поставщику, однако операция будет считаться окончательно завершенной в случае подтверждения поставщиком факта оплаты);
| |
result - результат выполнения команды. Представлен числом: 0 - успешное выполнение команды, любое другое число - код ошибки (см. приложение II);
| |
result_text - текстовая расшифровка результата;
| |
ветка advanced - дополнительные сведения, возвращаемые командой (к примеру, рассчитанные комиссии, статистика и прочее). Может быть пустой или содержать неограниченное количество строк
| |
табличная часть - в результирующей XML может содержаться одна или несколько таблиц; каждая таблица имеет следующую структуру: | |
param1, paramN - дополнительные строковые параметры, возвращаемые командой;
| |
ветка colnames - в случае возвращения таблицы данных - полные заголовки столбцов (краткие заголовки с использованием только символов латинского алфавита могут быть получены из имен элементов). Количество элементов в ветке равно количеству столбцов;
| |
ветки colvalues - в случае возвращения таблицы данных - значения строк по столбцам. Количество этих веток равно количеству строк. Количество элементов в каждой ветке равно количеству столбцов.
|
program
, а в качестве значения передается код программы, из которой выполняется запрос.
Код выдается при регистрации программы. Зарегистрировать программу может пользователь, дополнительно зарегистрированный в качестве разработчика. num_point
, а в качестве значения передается номер точки, присвоенный ей в момент регистрации.cmd+ext_transact+login+num_point+обязательные_параметры_команды
uin
, а в качестве значения передается UIN или SN или JID пользователя (номер ICQ).password
. Для получения этого параметра конкатенируются следующие параметры:пароль_пользователя + платежный_пароль_пользователя + ext_transact
password
выполняется в стандартном режиме, определенном стандартом ExDK (склеиваются для хеширования только пароль_пользователя
и параметр ext_transact
). Код | Расшифровка | Прием платежа с терминала |
1 | В обработке | 1 |
2 | Команда выполнена | 1 |
3 | Отказ сервера от обработки | 0 |
4 | Принято на рассмотрение в администрацию системы | 1 |
5 | Операция не выполнена. Попробуйте повторить | 0 |
6 | Операция не выполнена. Повторите позднее | 0 |
7 | Отказ севера от обработки | 0 |
Код | Статус | Текстовая расшифровка |
0 | 2 | Операция успешно завершена |
100 | 1 | В обработке |
303 | 4 | Ошибка отправки данных через шлюз (системная) |
705 | 2 | Операция перепроведена |
710 | 2 | Операция аннулирована |
850 | 3 | Отказ системы от обработки |
1000 | 6 | ОШИБКА ФИНАНСОВОГО КОНТРОЛЯ |
1011 | 3 | Вы не можете списать долг, так как сумма зачисления недостаточна для покрытия минусового баланса счета |
1012 | 3 | Вклад может быть открыт только на кредитный счет нулевого баланса |
1013 | 3 | На данный счет уже открыт вклад |
1014 | 3 | Неверный тип депозита |
1015 | 3 | Указанный тип депозита не активен |
1016 | 3 | Вклад с указанным номером не найден |
1017 | 3 | Вклад ранее уже был пополнен |
1018 | 3 | Невозможно распечатать договор на непополненный вклад |
1019 | 3 | Невозможно распечатать договор на досрочно прерванный вклад |
1020 | 3 | Вознаграждение не может быть начислено по депозиту, срок которого не истек |
1021 | 3 | По данному депозиту вознаграждение уже выплачено |
1022 | 3 | Вознаграждение не может быть начислено по депозиту, прерванному досрочно |
1023 | 3 | Вознаграждение не может быть начислено по депозиту, если договор не подписан КПК |
1024 | 3 | Баланс кредитного счета и сумма вклада не совпадают |
1025 | 3 | Счет является кредитным |
1026 | 3 | Недопустимая валюта счета для создания вклада |
1030 | 7 | У пользователя нет счета в юнитах |
1062 | 4 | Данному дилеру запрещен прием платежей в адрес данного оператора |
1065 | 4 | Данному плательщику платеж в адрес данного оператора запрещен |
1072 | 6 | Вам запрещены операции вывода средств |
1073 | 6 | С данного счета запрещены операции вывода средств |
1074 | 7 | Шлюз запрещен |
1075 | 3 | Недостаточно средств для проведения платежа |
1076 | 6 | Неверный номер счета |
1077 | 6 | Счет не соответствует ID |
1078 | 3 | Валюта счета плательщика отлична от валюты счета получателя |
1079 | 3 | Неверный номер счета получателя |
1080 | 3 | Неверный ID |
1081 | 3 | Неверный ID или он не зарегистрирован как дилер |
1082 | 3 | Неверный ID получателя |
1083 | 3 | Вы уже зарегистрированы ранее как дилер |
1084 | 3 | Вы не зарегистрированы как дилер |
1124 | 3 | Неверные параметры платежа |
1130 | 3 | Номер не принадлежит оператору |
1400 | 3 | Форма не акцептована |
1401 | 3 | Форма не активна |
1402 | 3 | Неверный номер формы |
1403 | 6 | Прием платежа запрещен оператором |
1404 | 6 | Поставщик услуг в данный момент запрещен |
1405 | 6 | Поставщик услуг в данный момент не активен |
1409 | 3 | Получателю запрещены операции приема средств |
1411 | 3 | Прием платежа запрещен системой |
1417 | 3 | Поставщику услуг запрещены операции с операционным счетом |
1430 | 3 | Процент комиссии больше максимально разрешенного системой |
1432 | 7 | Невозможно определить комиссию по операции |
1449 | 3 | Цена меньше минимального лимита |
1450 | 3 | Количество меньше минимального лимита |
1451 | 3 | Сумма платежа меньше минимального лимита |
1452 | 3 | Сумма платежа больше максимального лимита |
1455 | 3 | Некорректная сумма платежа |
1456 | 3 | Сумма платежа должна быть целым числом |
1457 | 3 | Сумма должна быть больше нуля |
1502 | 3 | Данная транзакция не может быть перепроведена (аннулирована) |
1507 | 7 | Незавершенная транзакция не может быть перепроведена |
1513 | 7 | Успешная транзакция не может быть перепроведена |
1520 | 3 | Невозможно перепровести ранее перепроведенную транзакцию |
1521 | 3 | За данную транзакцию средства уже возвращены плательщику, либо никогда не были блокированы на системном счету |
1702 | 3 | Неверный код валюты |
1705 | 3 | В выбранной валюте нельзя выводить средства на банк указанной страны |
1722 | 3 | Превышен лимит на ввод |
1723 | 7 | Превышен лимит на вывод |
1724 | 7 | Превышен суточный лимит на ввод |
1725 | 7 | Превышен суточный лимит на вывод |
1730 | 3 | Не прошел финансовый контроль |
2000 | 3 | ОТСУТСТВИЕ ПАРАМЕТРА |
2002 | 3 | Недостаточно параметров |
2012 | 3 | Отсутствует параметр ext_transact |
2014 | 3 | Отсутствует параметр cmd |
2015 | 3 | Отсутствует параметр program |
2021 | 3 | Отсутствует параметр login |
2022 | 3 | Отсутствует параметр password |
2023 | 3 | Отсутствует параметр summ |
3000 | 3 | НЕКОРРЕКТНОЕ ЗНАЧЕНИЕ ПАРАМЕТРА |
3001 | 4 | Неверный формат номера телефона |
3002 | 4 | Нет такого номера телефона |
3003 | 3 | Некорректный формат параметра |
3004 | 3 | Неверный uin |
3005 | 3 | Пользователь не зарегистрирован в ICQMoney |
3006 | 3 | Вы не зарегистрированы в ICQMoney |
3007 | 3 | Пользователь зарегистрирован в ICQMoney, но регистрация не подтверждена |
3011 | 4 | Параметр не соответствует маске: допустимы только символы латинского алфавита и цифры |
3014 | 3 | Неверный код страны |
3015 | 3 | Неверный номер точки |
3016 | 3 | Неверный номер терминала |
3029 | 3 | Неверный тип счета |
3032 | 3 | Неверный код валюты |
3035 | 6 | Неверный код дилера |
3040 | 3 | Неверный признак плательщика НДС: 0-не плательщик, 1-плательщик |
3042 | 3 | Неверный код группы |
3045 | 3 | Неверный номер поля |
3047 | 3 | Неверный код эмитента |
3049 | 3 | Неверный код сервиса |
3051 | 3 | Неверный код номинала |
3053 | 3 | Неверный код магазина |
3055 | 3 | Неверный код шаблона |
3056 | 3 | Неверный код банка |
3057 | 3 | Неверный код профиля |
3058 | 3 | Неверный код тарифа |
3060 | 3 | Не найдена операция с указанным номером внешней транзакции |
3128 | 7 | Некорректная XML для настройки комиссии |
3130 | 4 | Некорректная XML |
3205 | 3 | Неверный код типа дилера |
3301 | 3 | Неверный номер электронного магазина |
3302 | 3 | Электронный магазин не активен |
3303 | 3 | Электронный магазин не акцептован |
3304 | 3 | Неверный код пользователя |
4000 | 4 | СПЕЦИФИЧЕСКАЯ ОШИБКА КОМАНДЫ |
4110 | 3 | Номер чека не уникален |
4120 | 3 | Нет данных по последней инкассации |
4125 | 4 | Ошибка генерации ключа |
4126 | 4 | Неверный номер сертификата или контрольный код |
4206 | 3 | Нет данных по данному ID |
4208 | 3 | Платеж не найден |
4209 | 3 | Платеж был запрещен ранее либо проведен |
4210 | 3 | Не уникальный номер операции |
4215 | 4 | Активной карты с такими параметрами в системе не зарегистрировано |
4220 | 4 | Карта заблокирована |
4223 | 4 | Срок активации истек |
4231 | 3 | Невозможно удалить пользователя - он рабочий |
4232 | 3 | Пользователя невозможно удалить - на него зарегистрированны рабочии транзакции (формы) |
4250 | 4 | Аннулировать чек может только его создатель |
4251 | 4 | В системе нет чека с указанным номером |
4253 | 4 | Данный чек заблокирован. Его невозможно активировать |
4255 | 4 | Данный чек уже активирован |
4257 | 4 | Код активации чека указан неверно |
4259 | 4 | Было выполнено более трех попыток активации чека. Чек заблокирован |
4308 | 3 | Не уникальный номер счета в учетной системе поставщика услуг |
4311 | 4 | Для выставления платежного требования не до востребования необходимо указать ID или счет плательщика |
4314 | 4 | Вы не можете оплатить это платежное требование, т.к. ID плательщика отличен от вашего |
4315 | 4 | Вы не можете оплатить это платежное требование, т.к. счет плательщика отличен от вашего |
4320 | 4 | Данная транзакция не является платежным требованием |
4321 | 4 | Неверный номер платежного требования |
4323 | 4 | Срок оплаты истек |
4327 | 3 | Невозможно отказаться от оплаты платежного требования, по которому была произведена оплата (в т.ч. частично), либо отказ уже выполнялся |
4328 | 3 | Ранее был выполнен отказ от оплаты платежного требования |
4329 | 3 | Платежное требование уже оплачено |
4340 | 3 | Данное предложение уже не активно |
4341 | 3 | Указанное количество отсутствует |
4345 | 3 | Вы не можете изменить статус этого пин-кода |
4350 | 3 | Плательщик отказался от оплаты |
4360 | 3 | Форма транзакции является рабочей |
4450 | 1 | Процессор и процессинг |
4451 | 3 | Процессором может быть только юридическое лицо |
4453 | 3 | Вы уже зарегистрированы как процессор |
4454 | 3 | Вы не являетесь процессором |
4455 | 1 | Партнер - разработчик ПО |
4456 | 3 | Вы не зарегистрированы как разработчик ПО |
4457 | 3 | Вы уже зарегистрированны как партнер - разработчик ПО |
4458 | 3 | Вы уже зарегистрированы в ICQMoney |
4470 | 3 | Срок протекции истек |
4471 | 3 | Блокировка данной транзакции не предусматривает кода протекции |
4472 | 3 | Слишком много попыток ввода кода протекции |
4473 | 3 | Неверный код протекции |
4474 | 3 | Код протекции уже был принят ранее |
4480 | 3 | На указанном счету уже установлен данный тариф |
4481 | 3 | Ваш тариф не может быть сменен |
4490 | 3 | Данный шлюз уже настроен на данного оператора. Воспользуйтесь операцией изменения параметров шлюза на оператора |
4491 | 3 | Данный шлюз еще не настроен на данного оператора. Воспользуйтесь операцией добавления шлюза на оператора |
4492 | 3 | Невозможно удалить рекомендуемый шлюз |
4493 | 3 | Шлюз не найден |
4510 | 3 | Транзакции |
4511 | 3 | На данного поставщика услуг зарегистрированны транзакции |
4512 | 3 | У Вас нет поставщика с таким codes |
4550 | 3 | Настройка инкассации заблокированна. |
4570 | 3 | Терминал/дилерская точка не могут быть удалены в течение недели после последнего платежа |
5000 | 4 | ОШИБКА БАЗЫ ДАННЫХ |
5216 | 4 | Невозможно определить код операции |
5217 | 4 | Невозможно определить результат операции |
5220 | 4 | Невозможно определить код транзакции |
5224 | 4 | Невозможно определить параметры получателя |
5227 | 4 | Неправильный номер магазина |
5230 | 4 | Неправильный номер субъекта |
5232 | 4 | Невозможно определить статус операции |
5308 | 4 | Невозможно определить процент комиссии с получателя |
5309 | 4 | Невозможно определить процент комиссии с плательщика |
5310 | 3 | Невозможно определить вознаграждение процессора |
5311 | 4 | Невозможно определить процент комиссии системы |
5313 | 4 | Невозможно определить процент вознаграждения дилера |
5432 | 4 | Ошибка отправки данных через шлюз (2) |
5435 | 4 | Ошибка отправки данных через шлюз (5) |
5436 | 4 | Ошибка отправки данных через шлюз (6) |
5437 | 4 | Ошибка отправки данных через шлюз (7) |
5438 | 4 | Ошибка отправки данных через шлюз (8) |
5439 | 4 | Ошибка отправки данных через шлюз (9) |
5441 | 4 | Ошибка отправки данных через шлюз (11) |
5442 | 4 | Ошибка отправки данных через шлюз (12) |
5444 | 4 | Ошибка отправки данных через шлюз (14) |
5463 | 3 | Ошибка отправки данных через шлюз (33) |
5530 | 4 | Невозможно определить системный счет |
5535 | 4 | Ошибка получения данных о состоянии блокировки счета |
5536 | 3 | Невозможно определить текущий баланс счета |
5537 | 4 | Невозможно получить валюту счета |
5538 | 4 | Ошибка изменения баланса счета |
5539 | 3 | Нет поддержки кросс-курсов данных валют |
5542 | 4 | Невозможно определить обработчика транзакции |
5543 | 4 | Невозможно определить действительного обработчика транзакции |
5546 | 4 | Невозможно определить активность обработчика |
5547 | 3 | Обработчик транзакции не активен или не акцептован |
5550 | 4 | Невозможно определить название платежа |
5552 | 4 | Невозможно определить скрипт-обработчик |
5553 | 4 | Невозможно определить номер счета получателя |
5570 | 4 | Невозможно определить код владельца |
5571 | 4 | Невозможно определить код владельца |
5601 | 4 | Ошибка обновления записи |
5602 | 4 | Ошибка удаления записи |
5603 | 4 | Ошибка добавления записи |
5620 | 4 | Ошибка получения данных |
5705 | 5 | Нет данных о форме, на которую настраивается процент |
5710 | 3 | Невозможно отправить в архив НЕоплаченный реестр |
5711 | 3 | Невозможно удалить оплаченный реестр |
5712 | 3 | Реестр в архиве |
6000 | 6 | ОШИБКА БЕЗОПАСНОСТИ |
6011 | 3 | У вас нет прав на выполнение данной операции |
6020 | 3 | У Вас нет прав на удаление этого поля |
6021 | 3 | У Вас нет прав на редактирование этого поля |
6022 | 3 | У Вас нет прав на изменение этого сервиса |
6023 | 3 | У Вас нет прав на удаление этого сервиса |
6025 | 3 | У Вас нет прав на изменение этого эмитента |
6026 | 3 | У Вас нет прав на удаление этого эмитента |
6028 | 3 | У Вас нет прав на изменение этого номинала |
6029 | 3 | У Вас нет прав на удаление этого номинала |
6060 | 3 | В доступе отказано |
6063 | 7 | На указанный номер ICQ регистрация уже имеется |
6082 | 3 | Неверный логин |
6083 | 4 | Неверный пароль |
6084 | 3 | Неверный SIGN |
6085 | 3 | Неверный одноразовый ключ |
6086 | 4 | Было выполнено 10 попыток активации ключа. Вход в систему заблокирован. |
6087 | 3 | Вход в ПО системы заблокирован |
6090 | 3 | Файл сертификата не найден |
6120 | 6 | Точка не акцептована |
6130 | 3 | Точка не зарегистрирована или зарегистрирована на другого пользователя |
6251 | 3 | Изменение информации о пользователе запрещено |
6257 | 4 | Персона, которая пытается выполнить операцию, не имеет права на ее выполнение |
6259 | 3 | У Вас нет лицензии на выполнение данной операции |
6261 | 3 | Пользователь не является Вашим субдилером |
6262 | 3 | Отсутствует акцепт на администрирование субдилера |
6263 | 3 | Невозможно определить вышестоящего дилера |
6271 | 3 | Данные о юридическом лице отсутствуют, изменение невозможно |
6273 | 3 | Данные о физическом лице отсутствуют, изменение невозможно |
6290 | 3 | У получателя нет прав на прием средств через Internet |
6322 | 4 | Настройка комиссии на данные формы запрещена |
6401 | 3 | У Вас нет прав на администрирование пользователей чужой страны |
6410 | 6 | Выполнение команды временно запрещено |
6411 | 4 | Неверный код программы |
6412 | 3 | Ваше программное обеспечение устарело для выполнения данной операции |
6413 | 3 | Выполнение операций из Вашей программы временно запрещено |
6415 | 3 | Такого Ident'а не может быть в системе |
6418 | 3 | В качестве пайщика Startrek могут регистрироваться только физические лица |
6419 | 3 | Вы уже зарегистрированы в качестве пайщика Star Trek |
6501 | 3 | Вы не зарегистрированы в системе ICQMoney |
6502 | 3 | Ваша регистрация не подтверждена |
6503 | 3 | Неверный серийный номер или контрольный код (некорректная строка подтверждения регистрации) |
6512 | 3 | Вы можете выполнить не более семи попыток активации за два часа |
6513 | 3 | Неверные параметры карты |
6514 | 3 | Было выполнено более трех попыток активации карты. Карта заблокирована |
6515 | 3 | Карта персонифицирована и принадлежит другому пользователю |
6516 | 3 | Все карты дилера, продавшего данную карту, временно блокированы |
6517 | 3 | Серия не активна |
6523 | 3 | Неверный тип карты |
6524 | 3 | Данный тип карты временно не активен |
6525 | 3 | Неверный номер заказа карты |
6526 | 3 | Данная пластиковая карта сейчас не может быть активирована |
6527 | 3 | Данная пластиковая карта уже активирована |
6528 | 3 | Неверный CVC |
6529 | 3 | Неактивная пластиковая карта не может быть заблокирована |
6530 | 3 | Пластиковая карта уже была заблокирована ранее |
6531 | 3 | Разблокирована может быть только карта, заблокированная держателем |
6532 | 3 | Данная карта не заблокирована |
6533 | 3 | Неверный признак блокировки |
6534 | 3 | Операция разблокировки недоступна |
6535 | 3 | Вывод средств не может быть заказан на данную карту |
6540 | 3 | Неверный номер пластиковой карты |
6550 | 3 | Слишком большое количество запросов на регистрацию |
6601 | 3 | Логин дополнительного пользователя должен быть уникальным |
7000 | 4 | ОШИБКА СИСТЕМЫ |
7010 | 4 | Некорректный номер транзакции |
7012 | 3 | Некорректный номер внешней транзакции |
7020 | 5 | Ошибка выполнения команды |
7023 | 4 | Различный размеров массивов |
7040 | 3 | Невозможно обновить завершенную транзакцию |
7051 | 4 | Платеж не может быть отправлен по выбранному шлюзу |
7119 | 4 | Невозможно соединиться с сервером оператора |
7212 | 3 | Технические работы на сервере |
7404 | 3 | Команда не найдена |
7701 | 4 | Ошибка формирования XML |
8000 | 4 | ОШИБКА ОПЕРАТОРА |
8001 | 4 | Неизвестная ошибка оператора |
8012 | 3 | Номер телефона находится в неактивном состоянии |
8032 | 3 | Работа с данным оператором не реализована |
8049 | 3 | Оператор не может принять платеж |
8050 | 7 | Поставщик услуг не может принять платеж |
8052 | 4 | Ошибка в ответе оператора |
8056 | 4 | Оператор не персонифицировал платежную систему |
8070 | 3 | Истекло время ожидания обработки |
9000 | 4 | ВНЕКЛАССОВАЯ ОШИБКА |
function TCMD.SendCMD(Form: TIdMultiPartFormDataStream;
|
type
|
procedure TfmMain.mAdmTestClick(Sender: TObject);
|
$ openssl pkcs12 -in 112233.p12 -out 112233.cer -clcerts
<?php curl_setopt ($ch, CURLOPT_CAPATH, DKCP_PATH_CERT); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_SSLCERT, DKCP_CERT); curl_setopt ($ch, CURLOPT_SSLCERTPASSWD, DKCP_CERT_PASSWORD); ?>
<?php // ------------------------------------------------------------------------------------------- // Модуль для реализации примера, выполняющего команды к серверу по протоколу DKCP-User // Copyright by Delta Key ([email protected]), (c) 2007. // ------------------------------------------------------------------------------------------- header('Content-Type: text/html; charset=windows-1251'); // настройки DKCP define('SERVER_NAME', 'https://deltakey.net'); define('SERVER_CATALOG', '/dkcp'); define('DKCP_CERT', '/home/myserver/data/server_scripts/user.cer'); define('DKCP_PATH_CERT', '/home/myserver/data/server_scripts'); define('DKCP_CERT_PASSWORD', 'certpassword'); //password for certificate define('DKCP_USER_LOGIN', 'mylogin'); define('DKCP_USER_PASSWORD', 'mypassword'); define('TEMP_DIR', '/home/myserver/data/tmp'); define('PROGRAM', '14001'); // ------------------------------------------------------------------------------------------- // _DateID - Возвращает уникальное 18-байтовое значение. // Внешний номер транзакции // // Возвращает : // Строку - уникальное значение function _GetExtTransact() { $tm = localtime(time(), 1); $r = rand(1111,9999); return sprintf( "%04d%02d%02d%02d%02d%02d%04d", $tm["tm_year"]+1900, $tm["tm_mon"]+1, $tm["tm_mday"], $tm["tm_hour"], $tm["tm_min"], $tm["tm_sec"], $r ); } // ------------------------------------------------------------------------------------------- // Формирование строки запроса // Добавление логина, пароля и номера трансакции // // Параметры : // $cmd - Название команды // $script - Исполняющий скрипт // $params - Параметры запроса function _CmdStr ($cmd, $script, $params) { $ext_transact = _GetExtTransact(); $cabinet_ip = $_SERVER ['REMOTE_ADDR']; $cabinet_id = $_SESSION['idPHPSHOP']; $cabinet_login = $_SESSION['logPHPSHOP']; $cabinet_password = md5($_SESSION['pasPHPSHOP'].$ext_transact); $login = DKCP_USER_LOGIN; $password = md5(DKCP_USER_PASSWORD.$ext_transact); $URL = SERVER_NAME . SERVER_CATALOG . '/' . $script . "?cmd=$cmd&program=" . PROGRAM . "&login=$login&password=$password&ext_transact=$ext_transact" . "&cabinet_ip=$cabinet_ip&cabinet_id=$cabinet_id" . "&cabinet_login=$cabinet_login&cabinet_password=$cabinet_password"; if (is_array($params) ) { $keys = array_keys ($params); foreach ($params as $key => $value) $URL.= "&$key=".str_replace(' ', '+', $value); } return $URL; } // ------------------------------------------------------------------------------------------- // _HttpsReq - реализация https-запроса к шлюзу Delta Key // Для внутреннего пользования функциями данного модуля // // Параметры : // $url - Адрес скрипта // Возвращает : // Результат вызова https-запроса (без заголовков) в виде XML function _HttpsReq($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); // CURLOPT_RETURNTRANSFER часто работает некорректно $tmp = tempnam (TEMP_DIR, "dk"); $fp = fopen ($tmp, "w"); curl_setopt ($ch, CURLOPT_FILE, $fp); curl_setopt ($ch, CURLOPT_CAPATH, DKCP_PATH_CERT); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_SSLCERT, DKCP_CERT); curl_setopt ($ch, CURLOPT_SSLCERTPASSWD, DKCP_CERT_PASSWORD); $res = curl_exec ($ch); if ($res) { // Запрос успешно выполнен. Возвращаем результат запроса curl_close($ch); fclose($fp); $fp = fopen ($tmp, "r"); $result = ""; while (!feof ($fp)) { $result.= fgets($fp, 4096); } fclose($fp); unlink($tmp); if (!$result) { $result = 'Сервер не вернул ответа'; $res = False; } return array ($res, $result); } else { // Запрос выполнен с ошибкой. Возвращаем текст ошибки. return array (False, curl_error($ch)); } } // ------------------------------------------------------------------------------------------- // _ParseRes - Преобразование результирующей XML в массив // Для внутреннего пользования функциями данного модуля // // Параметры : // $ResText - результат вызова функции _HttpsReq (XML ответа сервера) // Возвращает : распарсированный массив // Обязателен модуль MB function _ParseRes($ResText) { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($parser, $ResText, $values, $tags); xml_parser_free($parser); $ind = 0; foreach ($tags as $key => $value) { if ($values[$value[0]]["level"]==2 and $values[$value[0]]["type"] == 'complete') { $res[$key] = mb_convert_encoding ( $values[$value[0]]["value"], 'Windows-1251', 'UTF-8' ); } if ($key=='table') { $res["table"]["colcount"] = $values[$value[0]]["attributes"]["col"]; $res["table"]["rowcount"] = $values[$value[0]]["attributes"]["row"]; } // блок advanced if ($values[$value[0]]["level"] == 3 and $values[$value[0]]["type"] == 'complete') { $res["advanced"][$key] = mb_convert_encoding ( $values[$value[0]]["value"], 'Windows-1251', 'UTF-8' ); } if ($values[$value[1]]["level"] == 3 and $values[$value[1]]["type"] == 'complete') { $res["advanced"][$key] = mb_convert_encoding ( $values[$value[1]]["value"], 'Windows-1251', 'UTF-8' ); } // табличная часть if ($values[$value[0]]["level"] == 3 and $values[$value[0]]["type"] == 'open') { $keyname = $values[$value[0]]["tag"]; $open = 1; $key2 = 0; while ($open) { $open = 0; foreach ($values as $key2 => $value2) { if ($value2["tag"] == $keyname and $value2["type"] == 'open' and $key2>$lastkey) { $open = 1; $doit = 1; $lastkey = $key2; $ind++; } if ($value2["tag"] == $keyname and $value2["type"] == 'close') { $doit=0; } if ($value2["level"] == 4 and $open and $doit) { if ($keyname != 'colnames') $res["table"][$keyname][$ind-2][$value2["tag"]] = mb_convert_encoding ( $value2["value"], 'Windows-1251', 'UTF-8' ); else $res["table"][$keyname][$value2["tag"]] = mb_convert_encoding ( $value2["value"], 'Windows-1251', 'UTF-8' ); } } } } } return $res; } // ------------------------------------------------------------------------------------------- // DeltaCMD - Запрос к серверу // Для вызова из внешних модулей // // Параметры : // $cmd - название команды ( например, 'pay_momental' - моментальная оплата ) // $script - путь к исплоняющему скрипту // $params - массив параметров команды ( сумма платежа, счет и пр. ) . Может быть пустым // Возвращает : // Результат запроса (true / false) // Массив, содержащий ключи: // transact - номер транзакции // ext_transact - переданный при запросе номер внешней транзакции // date - дата завершения операции в формате YYYY-MM-DD hh:mm:ss // status - статус выполнения команды ( 2-операция завершена ) // result - результат выполнения команды ( 0-успех, др. - код ошибки ) // result_text - текстовая расшифровка результата // ТАБЛИЧНАЯ ЧАСТЬ, см. описание протокола DKCP function DeltaCMD($cmd, $script, $params=array()) { $url = _CmdStr ($cmd, $script, $params); list($Result, $ResText) = _HttpsReq ($url); if (! $Result) { return array (False, 'CURL error: ' . $ResText); } $res = _ParseRes($ResText); return array (True, $res); } ?> |
<?php // ------------------------------------------------------------------------------------------- // Пример скрипта, реализующего выполнение команды к серверу по протоколу DKCP-User // Copyright by Delta Key ([email protected]), (c) 2007. // ------------------------------------------------------------------------------------------- include('api.php'); function echo_result($res, $answer) { if (!$res) // запрос не выполнен die("<center><font color=red>$answer</font></center>"); print '<h3>Запрос к серверу выполнен успешно. </h3>'; if ($answer['result'] != 0) // Сервер вернул ошибку die("<center><font color=red>$answer[result_text]</font></center>"); print '<h3>Сервер не возвращал ошибок. </h3>'; // Выводим ответ в виде массива print '<h3>Ответ сервера:</h3><pre>'; print_r($answer); print '</pre>'; // Выводим ответ в виде таблицы print '<h3>Альтернативное представление ответа:</h3>'; print " <i>Транзакция сервера:</i> $answer[transact]<br> <i>Внешняя транзакция:</i> $answer[ext_transact]<br> <i>Дата завершения обработки сервером:</i> $answer[date]<br> <i>Статус выполенения операции:</i> $answer[status]<br> <i>Текстовая расшифровка статуса:</i> $answer[status_text]<br> <i>Результат выполнения операции:</i> $answer[result]<br> <i>Текстовая расшифровка результата:</i> $answer[result_text]<br> <i>Дополнительное пояснение к ошибке:</i> $answer[result_error]<br> <i>Дополнительные данные:</i><br>"; print " <TABLE class='advanced'><TR><th>Параметр</th><th>Значение</th></TR> "; foreach ($answer['advanced'] as $key => $value) { print "<TR><td><i>$key</i></td><td>$value</td></TR>"; } print "</TABLE><br>"; print "<i>Табличная часть:</i> "; if ($answer['table']['colcount'] == 0) print '<Отсутствует>'; else { print "<br><TABLE><TR>"; foreach ($answer['table']['colnames'] as $key => $value) { print "<th>$key / $value</th>"; } print "</TR>"; foreach ($answer['table']['colvalues'] as $row) { print "<TR>"; foreach ($row as $td) { print "<td>$td</td>"; } print "</TR>"; } print "</TABLE><br>"; } } // ........................................................................................... // Пример 1. Запрос балансов всех своих счетов // Показывает пример возврата табличной части print " <HTML><HEAD><link rel='stylesheet' type='text/css' href='test.css'> <h1>Пример 1. Запрос балансов всех своих счетов</h1> "; list($res, $answer)= DeltaCMD('getlist_keyt', 'keyt.py'); echo_result($res, $answer); // ........................................................................................... // Пример 2. Проверка существования UIN // Показывает пример посылки дополнительных параметров print " <h1>Пример 2. Проверка существования UIN</h1> "; $params['uin'] = '362527'; list($res, $answer)= DeltaCMD('check_uin', 'notfin_service.py', $params); echo_result($res, $answer); ?> |
© 2005-2013. «Delta Key» Все права защищены. |
Правовые нормы | Раскрытие информации | Контактная информация | Дизайн — Алексей Попов © 2023 |