До того как написать эту библиотеку, перерыл интернет, обращался в саппорт киберплата, но найденные варианты не устроили. Саппорт предлагал два варианта: использовать их внешнюю компоненту и использовать сервер платежей. Минусы первого варианта: не учитывает новые правила формирования тройки адресов для разных операторов, необходимость каждый раз вводить кодовое слово вручную (как сказал наш сисадмин, если продавец будет знать кодовое слово — никто не мешает ему скопировать файлы ключей себе домой и пользоваться ими из дома в свое удовольствие за счет компании).
Сервер платежей работает с одним комплектом ключей. Поэтому когда много точек приема, сложно разбираться от какой прошел платеж. Если же сервер платежей ставить на каждой точке приема — опять же удар по безопасности, поскольку кодовое слово записано в конфигурационном файле в незашифрованном виде.
В итоге решил написать свою внешнюю компоненту. Использовал 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С. О выясненных подводных камнях читайте инструкцию.
+ за содержание архива 😉
спасибо, а как полезность?
(2) я не пользуюсь этой системой 🙂
Спасибо.
Буду смотреть, давно искал.
А какую внешнюю компоненту предлагал использовать Киберплат?
(4) 1cv7cplt.dll — саппорт киберплата присылал, если надо могу подарить — мне не жалко
можно ли получить компоненту (киберплатовскую родную) на почту paimukhin@inbox.ru
кстати, у нас почему то ЗагрузитьВнешнююКомпоненту не проходит
платформа 025, ОС ВинСервер2003 (терминал)
регсвр32 сделали, загружаем под администраторскими полномочиями
нужно ли переделывать компоненту под 7ку или они универсальны для любой платформы
1Ски (и 7ка и 8ка)?
за компоненту спасибо!
только она работать не хочет!
1C 7.7 27 платформа, компонента зарегистрирована!
Попытка
ЗагрузитьВнешнююКомпоненту(«Cyberdvv.dll»);
Кибер = СоздатьОбъект(«AddIn.CyberPlatDVV»)
Исключение
Предупреждение(«Ошибка»);
Кибер = «»;
КонецПопытки;
пишет при попытке создания объекта «Ошибка при инициализации объекта из компоненты …Cyberdvv.dll»
пробовал перекомпилять из исходников, пишет такую же ошибку!
(7) Если компонента зарегена через regsvr32, ЗагрузитьВнешнююКомпоненту писать не надо.
Сразу писать СоздатьОбъект
убрали ЗагрузитьВнешнююКомпоненту, пишет ошибку Неудачная попытка создания объекта (AddIn.CyberPlatDVV)
на строку СоздатьОбъект(«AddIn.CyberPlatDVV»)
(9) Проверь реестр на наличие AddIn.CyberPlatDVV
только что попробовали под 1с 80 — работает, под 7.7 не пашет ((
2 Abadonna
regsvr32 /u сделали…добавили опять Загр.Вн..Ком…. не пашет все равно, видимо какие то проблемы есть с исходным кодом компоненты
пололжил оригинальную компоненту.
Почему не работает моя под 7-кой понять не могу. Может спецы что-нибудь подскажут. Вроде все по инструкции.
Спасибо за оригинальную компоненту!
Огромное спасибо спецам с мисты, особенно v77 (http://www.forum.mista.ru/topic.php?id=363863) за помощь. Теперь должно работать и под 7.7. По крайней мере у меня заработала.
пример такой:
Показать полностью
(5) Прошу прислать родную компоненту Киберплата 1cv7cplt.dll на aleph@moris.ru
И если возможно объяснить — в чем проблема с ее использованием.
Заранее спасибо.
(16) так и выкачивай ее (смотри второй файл: «Родная» киберплатовская компонента). Проблема в использовании описана в описании к разработке: не учитывает новые правила формирования тройки адресов для разных операторов, необходимость каждый раз вводить кодовое слово вручную.
1. Почему на сайте КиберПлат (https://service.cyberplat.ru/cgi-bin/view_stat.utf/help.cgi) для тройки адресов указан протокол https, а в обработке http?
2. Тестовая проверка написана для МТС. С МТС все работает нормально. Меняем в обработке тройку адресов МТС на БИЛАЙН (https://service.cyberplat.ru/cgi-bin/b3/b3_pay_check.cgi , https://service.cyberplat.ru/cgi-bin/b3/b3_pay.cgi , https://service.cyberplat.ru/cgi-bin/b3/b3_pay_status.cgi) . Выполняем проверку. Появляется ошибка: «Ошибка подписи ответа: подпись не соответствует содержимому документа». И так для всех операторов, кроме МТС. В чем ошибка?
компонента пока не работает я протоколом https. Попробуйте те же самые адреса по http.
«я» = с
а у меня вот чего пишет
«Ошибка при создании объекта из компоненты D:1c_lastCyberDVV.dll (отсутствует CLSID)»
regsvr32 CyberDVV.dll делал
компонента лежит в папке с конфигурацией
7-ка 7.70.025
если используете такой способ загрузки компоненты
Рез = ЗагрузитьВнешнююКомпоненту(«CyberDVV.dll»);
то ее надо положить в подкаталог bin каталога, в который установлено 1С предприятие. По умолчанию это
C:Program files1cv77in
если же хотите использовать ее из другого каталога, предварительно зарегистрировав regsvr32 CyberDVV.dll, то вместо
Рез = ЗагрузитьВнешнююКомпоненту(«CyberDVV.dll»);
используйте
Рез = ПодключитьВнешнююКомпоненту(«AddIn.CyberDVV»);
(19)
По первой части вопроса все понятно, а на вторую часть можно получить ответ?
2. Тестовая проверка написана для МТС. С МТС все работает нормально. Меняем в обработке тройку адресов МТС на БИЛАЙН (https://service.cyberplat.ru/cgi-bin/b3/b3_pay_check.cgi , https://service.cyberplat.ru/cgi-bin/b3/b3_pay.cgi , https://service.cyberplat.ru/cgi-bin/b3/b3_pay_status.cgi) . Выполняем проверку. Появляется ошибка: «Ошибка подписи ответа: подпись не соответствует содержимому документа». И так для всех операторов, кроме МТС. В чем ошибка?
попробуйте по всей тройки https: заменить на http: и порт не 443, а 80 (если вдруг меняете)
у нас билайн экзотика — но на акос и мегафон проверки нормально проходят.
(25) Меняли адрес на http
Мегафон все равно не проходит
В чем может бы проблема?
а ключики боевые используете? Я в свое время бился с этой траблой, когда для боевых ключей пытался использовать тестовую тройку адресов, которые начинаются сhttp://payment.cyberplat.ru . Оказалось, что payment для тестовых ключей, а service для боевых. Сейчас все нормально.
Поменяли адрес с service на payment, ситуация немного улучшилась.
Но при запросе на Билайн не возвращает Оператора.
Я так понял, ситуация такая: Вы пытаетесь отладить программу для разных операторов на тестовых ключиках? Увы, насколько я понял — не получится. Для тестовых ключей можно выполнять запросы на одну тройку адресов — только для МТС черезhttp://payment.cyberplat.ru . Выполнять проверки рекомендуется на 2 телефонных номера:
http://service.cyberplat.ru
http://www.cyberplat.ru/tech/ внизу
все 8-ки всегда проходит проверку, а все 9-ки всегда дает ошибку, что такого телефона нет. Для остальных операторов выдает самые разные ошибки. И для других телефонных номеров тоже. Это зависит не от моей ВК, а от сервиса, предоставляемого киберплатом для отладок собственных приложений.
Использование реальных телефонов реальных операторов возможно только при использовании БОЕВЫХ ключей и таких же адресов через
ПОверьте — это не я придумал. Я сам через эти все грабли уже прошел. Тонкости от самого киберплата ищи на странице
вот, например, один из ответов саппорта киберплата:
Ключи должны работать на любом компьютере, только если не просили установить проверку на IP адрес.
Запросы по HTTP и HTTPS проходят одинаково.
С боевыми ключами надо обращаться на боевые URL. Там вместо слова payment стоит слово service.
(29) Спасибо.
Пробуем на «боевых» ключах, при проверке возвращает код ошибки 2: «неправильный код дилера». Мы что-то не нашли, где его надо указать.
(32) забыл указать в инструкции
КодДилера (англ. синоним SD) для тестовых ключей равен 17031
инструкцию обновил
(34) Спасибо. Заработало
Часто при вызове метода ЗагрузитьВнешнююКомпоненту(«CyberDVV.dll») 1С (8.1) «вылетает».
(36) пока с таким не сталкивался. Проверьте, последняя ли у Вас версия, а то может первоначальная. В ней косячок был. Выявился на платыорме 7.7. Должен по идее сказываться и при работе с 8.х
а существуют компонента для приема платежей не только за мобильную связь?
посмотрите список операторов, поддерживаемых киберплатом. Там не только сотовая связь, но и ЖКХ, энергетика и много еще чего
Если планируется следующая версия — добавьте в код обработку параметра REST — это баланс дилера. + какая-то ерунда со статусами платежа. у меня постоянно выдает ошибку 10. неверный формат документа.
Что-то никак не получается подключить компоненту, пробывал разными способами. Попытался откомпилировать иходники, Дельфи выдает ошибку на 342 строчке, модуля — AddInObj.pas:
LogDebug.Target := ltDebugOutput;
([Error] AddInObj.pas(342): Undeclared identifier: ‘Target’)
Возможно причина, по которой я не могу подключить компоненту, как то связана с ошибкой при компиляции? Кто нибудь сталкивался с подобным?
(41) а если не перекомпилировать (возможно настройки делфей другие или версия). Какая ошибка подключения бибилиотеки?
всем сомневающимся: текущая версия библиотеки работает в боевом режиме в сети точек по приему платежей. До сих пор нареканий не было.
(43) к сомневающимся я не отношусь, и уверен что библиотека рабочая. Видно что то у меня с системой, либо с руками =), хотя и имел опыт с подключением библиотек.
(42) дельфи 7 версии, 1С версии 8.1.11.67. Если следовать иструкции, то при использовании 1-го метода (regsvr32 CyberDVV.dll, ПодключитьВнешнююКомпоненту(«AddIn.CyberDVV»)) — выдается ошибка:
Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Ошибка при подключении внешней компоненты;
при использовании 2-го метода (ЗагрузитьВнешнююКомпоненту(«CyberDVV.dll»)) — ошибка:
Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты.
Может быть, в моей системе чего то нехватает, от чего зависит CyberDVV.dll?
Незнаю что и делать, а так есть большое желание написать модуль платежей в 1С.
(44) попробуй метод подключния вынести из Попытак Исключение. Может 1С-ка тогда более внятно ошибку опишет?
Не забудь, что если используется метод ЗагрузитьВнешнюю компоненту, то обе длл-ки должны лежать в подкаталоге BIN каталога 8-ки (по умолчанию «C:Program Files1cv81in»)
(44) при разработке тоже использовал делфи 7, с настройками по умолчанию (только настройки редактора для себя подправил). Но тот делфи канул в лету вместе с работой. Поэтому проверить пока не могу. Вот может на новой работе кака-нибудь поставлю. Попробуй поискать где и как объявляется LogDebug. Что там за тип и где он описан. Может какие-то библиотеки делфей у тебя заменены сторонними компонентами…
Можно еще посмотреть на диске ИТС примеры разработки внешних компонент (я заготовку взял оттуда). Попробуй скомпилировать чистый пример. Получится или нет?
У меня не работает в 8 ке пишет не найден Кибер. Делаю все по инструкции.
(47) подробнее про ошибку можно? Например, приведи код, на которм ошибка, сам полный текст ошибки.
Убрал попытку исключение пишет,
{Форма.Форма(65)}: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Ошибка при подключении внешней компонентыПодключитьВнешнююКомпоненту(«AddIn.CyberDVV»);
по причине:
Ошибка при подключении внешней компоненты
(49) dll-ку регистрил командой regsvr32? регистрировать желательно под правами администратора или близкими (в общем с полными правами на запись в реестр).
http://www.5pro.ru/news/p2_articleid/28
Под Вистой сталкивался с тем, что надо еще отключать какой-то контроль учетных записей в висте. Подробнее тут
Если не регистрировал, то вместо ПодключитьВнешнююКомпоненту используется команда ЗагрузитьВнешнююКомпоненту, но dll-ки тогда обязятально должны лежать в подкаталоге bin 1с-ки
(49) Удалось разобраться?
(50) Та же проблема:
Ошибка: {Форма.Форма(66)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты
Win7. UAC отключен. Resvr32 сработал нормально.
ПодключитьВнешнююКомпоненту(«AddIn.CyberPlatDVV»);
а не
ПодключитьВнешнююКомпоненту(«AddIn.CyberDVV»);
(пока ProgID не увидел в реестре, не понял)
(52) огромное человеческое спасибо, за то, что нашли ошибку.
(44), (49) попробуйте вариант, предложенный в (52)
Скачал архив, все делал как положено и все равно ругается
«Ошибка при создании объекта из компоненты C:Program Files1Cv77BINCyberDVV.dll (отсутствует CLSID)»
подскажите в чем проблема?
(54)
У вас есть административные права на этом компьютере?
Совет (52) пробовали?.
Версия платформы?
Какими способами пробовали подключить (с правами администратора компьютера)
работаю на ПК с админискими правами, платформа 1С 7.7 Оперативный учет
пример как я произвожу подключение:
Если ЗагрузитьВнешнююКомпоненту(«CyberDVV.dll») <> 0 Тогда
Кибер = СоздатьОбъект(«AddIn.CyberPlatDVV»);
Иначе
Предупреждение(«Ошибка при загрузки внешней компаненты.»,60);
КонецЕсли;
Исключение
Предупреждение(«Ошибка при загрузки платежной системы!!!»,60);
Кибер = «»;
КонецПопытки;
(56) я выложил пример обработки для 77 отдельным файлом. Для зарегистрированной dll-ки. Скачай, попробуй. У меня заработало.
(57)
можно отправить мне на почту, а то с сайта не дает качать.
isaevtimur@mail.ru
Заранее спасибо.
Скачали ВК, написали для себя платежную систему для приема оплаты за сотовую связь и интернет, — все работает хорошо, большое спасибо за ВК. Сейчас возникла потребность приема платежей за банковский кредит, но возникла сложность — необходимо еще передавать параметр AMOUNT_ALL, а его в Вашей обработке нет. Есть возможность добавить этот параметр?
Сумма с клиента (AMOUNT_ALL) *
*AMOUNT_ALL — обязательный параметр в запросе на платёж.
Разница между AMOUNT_ALL и AMOUNT должна соответствовать условиям взимания комиссии с плательщика указанной в договоре.
(59) насколько я помню у драйвера есть поле счет, которое в принципе может содержать произвольную информацию. Можно попробовать сунуть нужную строку туда.
Если не получится, посмотрите исходники — как формируются поля запроса HTTP.
Писал давно, подробностей не помню 🙁 и Delphi под руками нет в связи с увольнением 2 года назад.
Ситуация аналогична 59.
Очень нужно это поле AMOUNT_ALL, это новшество киберплата для приёма платежей по мультибанковскому шлюзу. Возможно ли решение этого вопроса на коммерческой основе?
P.S. Попытался дописать сам, но столкнулся с такой проблемой: даже компилируя исходный код получаю компоненту с которой 1с зависает в 8 случаях из 10 ❓ ❗
(61) вот так формируется тело сообщения:
Показать
Поэтому можно попробовать полю «Счет» (Aссount) присвоить нужный текст, например
Вполне возможно, что все получится. Если нет, значит попробую поставить себе делфи и внести изменения в компоненту.
В этом я разобрался, проблема с самой компиляцией, даже если никаких изменений не вношу, а компилирую исходники то полученная компонента не работает (1с зависает), хотя размер её один в один с той что идёт с исходниками. Компилировал из windows 7 и windows xp проблема сохраняется.
Кстати тут кто-то уже писал, при компиляции выдаётся ошибка:
[Hint] AddInObj.pas(961): Value assigned to ‘TAddInObject.miDoRequest’ never used
может быть проблема в этом? или нужны какие-нибудь особенные условия компиляции?
(63) про особенные условия не знаю. В свое время поставил Delphi 6 какой был (кажется Professional или Enterprise — мы в России берем по максимуму, что можно) без всяких доп. компонент и т.п. Настраивал там только редактор под себя. Больше ничего не делал — все в режиме по умолчанию.
(40), (59) можете скачать версию 1.1. Надеюсь изменения будут полезными.
О изменениях читайте в описании и инструкции.
(63) Можно качать обновленную версию с последними исходниками.
кстати [hint] это не ошибка, а предупреждение. В данном случае, говорящая о том, что присвоенное значение возможно нигде не будет использовано. Возможно даже компилятор эту строку выкинет.
Спасибо тебе, Антон и удачи.
Эх… где ж ты раньше то был… 🙂
Как раз требовались нестандартные запросы (штраф ГИБДД), пришлось написать свою ВК… А тут вот оно — щастье 🙂
Пытаюсь подключить компоненту к 1с 7.7. подключилась, но в параметрах (сервис-параметры) не выполняются никакие действия (забиваю любой из параметров и пытаюсь нажать ок, применить и пр. и никаких действий, только отмена). в чем может быть дело? на просьбу начать работу — пустое «результат» и постой «ТекстОшибки». У кого нибудь в семерке она работает?
…. все, разобрался сам.
у кого нибудь есть опыт работы при помощи компоненты с мультибанковским шлюзом?
Вроде работает и под 8.2. только в ответе сервера не читаются номер транзакции, имя оператора и код авторизации. В ихней документации написано, что имя оператора и код авторизации опциональные и могут не передаваться, но номер транзакции-то??
Спасибо, будем анализировать
Добрый день.
Скачал обработку, но никак не могу зарегистрировать CyberDVV.dll
перепробовал все варианты, через regsvr32 пишет (Ошибка при вызове LoadLibrary(CyberDVV.dll) — Не найден указанный модуль), права администратора, пытался регистрировать с разных мест, на разных компах (XP разные версии).
Через 1с тоже не регистрируется (ЗагрузитьВнешнююКомпоненту)…- «Компонента не подключена Ошибка создания объекта драйвера Cyberplat».
1c 7.70.025, XP — Professional 2008 Edition.
Возможно у меня битая dll_ка не могли бы отправить новую на адрес vscooter@bk.ru.
Ну что, народ, ни у кого нет CyberDVV.dll…
Спасибо Валерий.
Модуль зарегистрировался,очень удобный в работе.
Будем обязательно его использовать.
У меня вопрос:
У меня не получается к восьмёрке «прикрутить» оригинальную киберовскую компоненту. Ошибка вида {ВнешняяОбработка.ОплатаКиберПлат.МодульОбъекта(1205)}: Тип не определен (V77.CyberPlat). Хотя все зарегистрировал, в реестре записи есть. Можете подсказать, куда покопать?
(74) К сожалению не помню. Очень давно это было. Может она несовместима с 8.3, если вы ее используете? Я то в своих тестах с «родной» остановился либо на 8.0 либо на 8.1… Одно могу сказать — моя библиотека у клиента до сих пор работает уже на платформе 8.2
Подключить компоненту удалось — винда была 64-битная, а тестовый батник от Киберплата регистрирует в %system32%. Прошу прощения:)
Подключить компоненту удалось,1C 7.7 ТиС 988 сборка, но в параметрах (сервис-параметры) не выполняются никакие действия . кто нибудь с таким сталкивался? Как заставить параметры сохраняться и меняться?
(77) Владимир вот тут (68) написал, что как-то разобрался, но подробностей не знаю
Может 1с надо от имени администратора запустить попробовать?