Clarion и терминал карт СБЕРА

Сканеры, кассы, ККТ и т.д.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

Привет всем !

Кто-нибудь пробовал прикрутить из Clarion терминал платежных карт Сбербанка ?
Задача вообще решаема ? Может быть есть какая-нибудь дополнительная информация ?

Заранее спасибо за наводки ... :)
Приносим Вам свои неудобства !
Аватара пользователя
Admin
Администратор
Сообщения: 3809
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion и терминал карт СБЕРА

Сообщение Admin »

Да прикручивали. Как то через одно место жопу
При работе с pilot_nt.dll приложение падало если компилировать не в дебаг режиме. По этой причине работу сделали через отдельный EXE которому команды передаются в ком. строке. Результат (чек) вроде в текст кидается. Не я сам делал, Андрей занимался.
Короче будет интересно - ковыряйтесь:
sbrf_cltr.zip
(178.63 КБ) 253 скачивания
P.S. Проблема с дебаг режимом скорее всего отсюда http://forum.clarionlife.net/phpbb/view ... 2&start=15, но т.к. все работает решили забить и не разбираться.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

Спасибо ! Есть с чего начать ... Если удастся что-то сделать в этом направлении - выложу. :)
Приносим Вам свои неудобства !
Аватара пользователя
Admin
Администратор
Сообщения: 3809
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion и терминал карт СБЕРА

Сообщение Admin »

Короче, предположительно, если правильно описать функции из DLL то все можно в одной приладе, без костылей сделать.
Мы там всего две функции использовали, оплатить/вернуть сумму и закрыть день. Все.

Сразу тут смотри: sbrf_cltr.app
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

Как обещал - разобрался и докладываю о результате.
Проверил и прошел все варианты работы с эквайрингом ПАО Сбербанк.

Драйвер эквайринга Сбера заточен под 1С и OLE, что вполне объяснимо.
Вот и нам не надо против ветра, да еще и в незнакомом месте. ;)

Берем технологии одинэсников и просто переписываем на Clarion.
Получается просто и стабильно, работает всегда и везде, с любыми
пинпадами, не требует никаких дополнительных шаблонов, настроек,
библиотек, добавления к программе чужих DLL, запуска внешних EXE.

Если у кого-то возникнет непреодолимое желание заняться
эквайрингом Сбера - стартовый комплект прилагаю (С63).

Еще раз спасибо всем откликнувшимся за помощь. :)
Вложения
Plan_B.rar
(8.13 КБ) 249 скачиваний
Приносим Вам свои неудобства !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Как дополнение к примеру Игоря - небольшое описание для работы через ole-интерфейс. Примеры на бэйсике, но все понятно. Описание параметров и номеров функций.
Вложения
ole_sbrf.zip
(17.86 КБ) 250 скачиваний
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Игорь, а как отлаживаете работу со сберовским эквайрингом? Они дают какой-нибудь тестовый вариант или прямо по живому? Как я понял по сообщениям в сети, их ПО достаточно капризное и глючное. А установкой и обслуживанием Сбер сам занимается...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

Абсолютно верно - установкой и обслуживанием ПО эквайринга занимаются специалисты Сбера.
Тут как повезёт и зависит от региона, причём чем дальше от Москвы - тем лучше. :)

Софт у Сбера прекрасный, отработанный годами и стабильный - в отличии от остальных пром-сельхоз-евро-хлеб-союз и т.д. банков.

В принципе, комплект драйвера для отладки Вы можете взять с любого компьютера, где установлен эквайринг.
Он никак не защищён и не привязан к компьютеру (вся защита и привязка к счёту на аппаратном уровне в пинпаде).
Просто скопируйте папку с драйвером к себе на компьютер. Для работы драйвера наличие пинпада - не требуется.

Вся установка драйвера сводится к регистрации OLE компонент из папки драйвера.
Есстесно требуются права администратора. Например:

Код: Выделить всё

regsvr32.exe C:\_SBRF\Plan_B\sbrfcom.dll
regsvr32.exe C:\_SBRF\Plan_B\sbrf.dll
regsvr32.exe C:\_SBRF\Plan_B\card.dll
Вообщем-то и всё. После этого сразу всё работает. Никаких "тестовых" режимов нет, поэтому для отладки
приходится просто имитировать положительный ответ пин-пада о выполнении проводки ...
Приносим Вам свои неудобства !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Ну, имитировать - я имитирую и без установки драйвера. А вот сегодня попробовал запустить прогу на боевом рабочем месте. Сберовский драйвер выдал, что не найдена одна из его библиотек, после чего pinpad перестал определяться совсем. В том числе и из программы, которая до этого с ним работала. Погуглил, пишут, что надо библиотеки драйвера копировать в каталог своей программы или в корень диска С. А почему перестал работать, фик знает. Я только ole инициализировал, как в доке прописано. Позвонили в Сбер, должны разобраться, раз система на обслуживании. Осадочек, конечно, остался...

Мне тут системщик еще рассказывал, что были случаи, что после прихода специалиста из Сбера вся pos система переставала работать. А случаи, когда не приходит ответный слип на платеж, довольно частое явление. Причем покупателю прилетает sms, что платеж прошел, а слипа нет и чек не печатается. Особенно критичная ситуация при продаже алкоголя. Продавцы на кассах сразу отбирают бутылки у покупателей, чтобы, не дай бог, те, получив положительный sms об оплате, с ними не убежали. В общем, развлекаются...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 12 Июль 2018, 17:24Погуглил, пишут, что надо библиотеки драйвера копировать в каталог своей программы или в корень диска С.
Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
finsoftrz писал(а): 12 Июль 2018, 17:24А случаи, когда не приходит ответный слип на платеж, довольно частое явление.
Ничего не могу сказать. Несколько лет реальной работы с эвайрингом Сбера, десятки компьютеров … никогда такого не было.
Может быть надо разделять события "не пришёл слип-чек" и "не смогли получить слип-чек" ?
У нас вообще схема простая. Нет слип-чека - нет фискального кассового чека. Нет фискального кассового чека - нет продажи.
А со своими смс идите разбирайтесь в банк ....

Дополнение. К тому же я прошу пардона, но успех операции эквайринга определяется ответом функции NFun(), а не наличием слип-чека.
Слип-чек можно запрашивать хоть 10 раз в случае успешного выполнения операции эквайринга: GParamString("Cheque") ...
Приносим Вам свои неудобства !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Игорь Столяров писал(а): 12 Июль 2018, 18:25
finsoftrz писал(а): 12 Июль 2018, 17:24Погуглил, пишут, что надо библиотеки драйвера копировать в каталог своей программы или в корень диска С.
Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
finsoftrz писал(а): 12 Июль 2018, 17:24А случаи, когда не приходит ответный слип на платеж, довольно частое явление.
Ничего не могу сказать. Несколько лет реальной работы с эвайрингом Сбера, десятки компьютеров … никогда такого не было.
Может быть надо разделять события "не пришёл слип-чек" и "не смогли получить слип-чек" ?
У нас вообще схема простая. Нет слип-чека - нет фискального кассового чека. Нет фискального кассового чека - нет продажи.
А со своими смс идите разбирайтесь в банк ....
В принципе, так оно и есть. Функцией 4000 шлем платеж, в случае успеха функцией 6003 начинаем транзакцию, печатаем слип (который должен прийти в качестве выходного параметра функции 4000) и фискальный чек. Если распечатали нормально, подтверждаем транзакцию функцией 6001, если произошел какой сбой, то отменяем транзакцию функцией 6004. Как я понял, после отправки платежа функцией 4000, программа ждет сообщения об успешности транзакции. И тут возникает проблемная ситуация. Сообщение нам не приходит, а покупатель получает sms. И убегает в охапку с бутылкой... :-) А если подтверждения от Сбера так и не дождались, то мы не можем печатать фискальный чек и должны откатить продажу по Егаис...
Я думаю, что тут многое зависит от того, кто пользуется эквайрингом. Одно дела, если это какая-нибудь контора, у которой по нескольку платежей в день. Другое дело, когда продуктовый супермаркет, у которого поток безнальных покупателей довольно плотный, особенно в пиковые часы работы. Статистика может быть несколько разной.
Игорь Столяров писал(а): 12 Июль 2018, 18:25 Дополнение. К тому же я прошу пардона, но успех операции эквайринга определяется ответом функции NFun(), а не наличием слип-чека.
Слип-чек можно запрашивать хоть 10 раз в случае успешного выполнения операции эквайринга: GParamString("Cheque") ...
Ммм. Тут не понял. Слип возвращается в виде выходного параметра при выполнении NFun(4000). То есть, при ее успешном выполнении он всегда есть и считывается GParamString("Cheque").
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Игорь Столяров писал(а): 12 Июль 2018, 18:25
finsoftrz писал(а): 12 Июль 2018, 17:24Погуглил, пишут, что надо библиотеки драйвера копировать в каталог своей программы или в корень диска С.
Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
Кстати, глянул в bat файле, там полные пути прописаны. Хотя тот, кто ставил, мог и как-то иначе сделать...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 6054
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 12 Июль 2018, 19:06И убегает в охапку с бутылкой...
Понятно, что везде есть своя специфика и что алкашка - сложный бизнес, т.к. там каждый покупатель - крупный специалист в информационных и банковских технологиях (а встречаются и выдающиеся специалисты) ... но ! СМС - это информационное сообщение, не имеющее статус документа, оно никого и ни к чему не обязывает (включая банк). Я могу на своём смарфоне показать нечто очень похожее на смс от Путина и без экспертизы определить лоходром никто не сможет. ;)


Как-то у Вас всё не просто ... может потому оно и брыкается. Дайджестом:

Код: Выделить всё

        Loc:Error = Loc:Sber{'Clear'}

        If Loc:Error <> 0
           Message(' Не удалось получить доступ к драйверу эквайринга ПАО Сбербанк !')
        else                                                                          
           ! Сумма оплаты                                 
           If Loc:Sber{'SParam("Amount",' & Clip(Left(Int(Summa * 100))) & ')'}.          ! Сумма для операции с платёжной картой
           Loc:Error = Loc:Sber{'NFun(' & Choose(FlagBack = True,'4002','4000') & ')'}   ! Возврат или оплата           

           If Loc:Error = 0 !Or Debug#
           
              Loc:PrintCheck = True  ! Можно печатать кассовый чек

              ! Слип-чека эквайринга на драйвер ФР
              If Print_Slip(Clip(Loc:Sber{'GParamString("Cheque")'})) = False
                 Message(Clip(Loc:ErText),'Ошибка !',Icon:Exclamation,'Закрыть')
              end

           elsIf Int(Loc:Error) <> 4334     ! Если не отмена операции - показать ошибку
              ErrorSBRF(Loc:Error)
           end

           Loc:Error = Loc:Sber{'Clear'}

          If Loc:PrintCheck
             ! Печать кассового чека и т.д.
          end
Приносим Вам свои неудобства !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

То есть Вы не используете транзакции? А если в процессе печати слипа или фискального чека возникли проблемы? Делаете вручную отмену платежа?
PS. Я пока только анализирую тему pos-системы, хотя остальное, кроме платежного терминала и егаис, работает. С Егаис особых вопросов нет, все другие операции, кроме продажи, давно делаются в бэке.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 3448
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

А еще алкаши бегают, как лани. Бедные продавцы догнать их не успевают. Поэтому сразу отбирают у них бутылки, до того, как те сунут свои карты в сберовский терминал. И отдают, когда чеки вылезут на печать. Потому как в рукопашном бою за бутылку алкаши не имеют решающего превосходства над продавцами...
C6/C11, ШВС, tps/btrieve.
Ответить