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

Код: Выделить всё
regsvr32.exe C:\_SBRF\Plan_B\sbrfcom.dll
regsvr32.exe C:\_SBRF\Plan_B\sbrf.dll
regsvr32.exe C:\_SBRF\Plan_B\card.dll
Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
Ничего не могу сказать. Несколько лет реальной работы с эвайрингом Сбера, десятки компьютеров … никогда такого не было.finsoftrz писал(а): 12 Июль 2018, 17:24А случаи, когда не приходит ответный слип на платеж, довольно частое явление.
В принципе, так оно и есть. Функцией 4000 шлем платеж, в случае успеха функцией 6003 начинаем транзакцию, печатаем слип (который должен прийти в качестве выходного параметра функции 4000) и фискальный чек. Если распечатали нормально, подтверждаем транзакцию функцией 6001, если произошел какой сбой, то отменяем транзакцию функцией 6004. Как я понял, после отправки платежа функцией 4000, программа ждет сообщения об успешности транзакции. И тут возникает проблемная ситуация. Сообщение нам не приходит, а покупатель получает sms. И убегает в охапку с бутылкой...Игорь Столяров писал(а): 12 Июль 2018, 18:25Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
Ничего не могу сказать. Несколько лет реальной работы с эвайрингом Сбера, десятки компьютеров … никогда такого не было.finsoftrz писал(а): 12 Июль 2018, 17:24А случаи, когда не приходит ответный слип на платеж, довольно частое явление.
Может быть надо разделять события "не пришёл слип-чек" и "не смогли получить слип-чек" ?
У нас вообще схема простая. Нет слип-чека - нет фискального кассового чека. Нет фискального кассового чека - нет продажи.
А со своими смс идите разбирайтесь в банк ....
Ммм. Тут не понял. Слип возвращается в виде выходного параметра при выполнении NFun(4000). То есть, при ее успешном выполнении он всегда есть и считывается GParamString("Cheque").Игорь Столяров писал(а): 12 Июль 2018, 18:25 Дополнение. К тому же я прошу пардона, но успех операции эквайринга определяется ответом функции NFun(), а не наличием слип-чека.
Слип-чек можно запрашивать хоть 10 раз в случае успешного выполнения операции эквайринга: GParamString("Cheque") ...
Кстати, глянул в bat файле, там полные пути прописаны. Хотя тот, кто ставил, мог и как-то иначе сделать...Игорь Столяров писал(а): 12 Июль 2018, 18:25Типичная и известная ошибка. Надо выполнять регистрацию компонент с указанием полного пути, а не просто имени файла (как указано в bat файле в папке драйвера сбера) - см. мой пример в предыдущем сообщении. Тогда инициализация эквайринга будет работать в любом месте.
Понятно, что везде есть своя специфика и что алкашка - сложный бизнес, т.к. там каждый покупатель - крупный специалист в информационных и банковских технологиях (а встречаются и выдающиеся специалисты) ... но ! СМС - это информационное сообщение, не имеющее статус документа, оно никого и ни к чему не обязывает (включая банк). Я могу на своём смарфоне показать нечто очень похожее на смс от Путина и без экспертизы определить лоходром никто не сможет.
Код: Выделить всё
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