До того как написать эту библиотеку, перерыл интернет, обращался в саппорт киберплата, но найденные варианты не устроили. Саппорт предлагал два варианта: использовать их внешнюю компоненту и использовать сервер платежей. Минусы первого варианта: не учитывает новые правила формирования тройки адресов для разных операторов, необходимость каждый раз вводить кодовое слово вручную (как сказал наш сисадмин, если продавец будет знать кодовое слово - никто не мешает ему скопировать файлы ключей себе домой и пользоваться ими из дома в свое удовольствие за счет компании).
Сервер платежей работает с одним комплектом ключей. Поэтому когда много точек приема, сложно разбираться от какой прошел платеж. Если же сервер платежей ставить на каждой точке приема - опять же удар по безопасности, поскольку кодовое слово записано в конфигурационном файле в незашифрованном виде.
В итоге решил написать свою внешнюю компоненту. Использовал Delphi 6, информацию с диска ИТС, документацию с www.cyberplat.ru
Это мой первый опыт написания внешних компонент, да и на Delphi очень давно ничего не писал, поэтому сильно не пинайте. Конструктивная критика приветствуется.
Исходники прилагаются.
Также есть пример работы с компонентой для 1с 8.1
PS
Уважаемый Dr_DelProg нашел неточность в предлагаемых тестовых обработках. Для исправления ошибки необходимо при подключении библиотеки использовать команду с описанием класса
ПодключитьВнешнююКомпоненту("AddIn.CyberPlatDVV");
а не
ПодключитьВнешнююКомпоненту("AddIn.CyberDVV");
Давайте поблагодарим его плюсами в комментарии (52)
12/11/2010 Версия 1.1
Добавлено:
свойство StandartBody (русск. СтандартноеТелоЗапроса) чтение / запись. Тип целое. По умолчанию значение = 1. Если присвоить свойству значение 0, то тело запроса будет формироваться в сокращенном варианте (см. инструкцию). Это полезно, если Вы хотите иметь полный контроль над содержимым запроса.
свойство ResponseText (русск. ТекстОтвета) только чтение. В это свойство возвращается полный текст отчета сервера Cyberplat. Полезно поскольку разработчики Cyberplat постоянно добавляют какие-то поля в ответы сервера.
Спасибо Антону за то, что уговорил внести эти изменения и за его терпение в многочисленных попытках выяснить, почему сервер Cyberplat не принимает с виду нормальный запрос, сформированный "вручную" средствами 1С. О выясненных подводных камнях читайте инструкцию.