Кто-нибудь пробовал прикрутить из 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