Эквайринг от Сбербанка в 1С

 

Не так давно потребовалось срочно реализовать эквайринг от Сбербанка в одно самописной конфигурации. За основу была взята соответствующая часть конфигурации «Библиотека подключаемого оборудования» от 1С, из которой я выкинул все лишнее. Отмечу, что «лишними» те или иные части кода были признаны исходя из особенностей задачи и моего субъективного мнения, то есть в Вашем случае это может быть не так.

Отдельно отмечу, что эквайринг — тема очень ответственная, ибо напрямую связана с деньгами (можно, например, продать товар и не взять за него денег), поэтому прошу быть предельно осторожными и не стесняться добавлять всевозможные проверки.

Ну и напоследок напомню, что все написанное ниже приводится в ознакомительных целях и использовать эту информацию Вы можете исключительно на свой страх и риск.

Регистрация и подключение библиотеки

Итак, для работы нам нужно зарегистрировать в системе две DLL-ки: SBRF.dll и SBRFCOM.dll. Библиотека SBRFCOM.dll бывает в двух вариантах: старый (3 параметра) и новый (7 параметров), нам естественно нужен новый.

Получить обе эти DLL-ки можно у того специально обученного человека из Сбербанка, который придет настраивать терминал. Регистрацию библиотек в системе обычно делает все тот же сотрудник Сбербанка, но если этого по какой-то причине не произошло, то библиотеки нужно зарегистрировать самостоятельно, из командной строки при помощи утилиты regsvr32 (командную строку запустите от имени администратора):

Регистрация SBRFCOM
Регистрация SBRFCOM

Подключение зарегистрированной библиотеки необходимо выполнить перед совершением каких-либо операций с эквайринговым терминалом, делается это примерно так:

В случае успеха, переменную «ОбъектДрайвераАвторизатора» нужно каким-либо образом сохранить для дальнейшего использования, именно через эту переменную будут вызываться все необходимые методы.

Вспомогательные функции SBRFCOM

Общая схема работы с методами библиотеки SBRFCOM (кроме сверки итогов) такова:

  • Вызвали метод;
  • Если все хорошо, то получили и распечатали слип;
  • Если возникли проблемы — отменили операцию.

Вначале скажу несколько слов о слипе. Итак слип — это документ, который печатается в двух экземплярах (один клиенту, один организации) при осуществлении каких-либо операций с банковской картой. Печать слипа обязательна (хотя зачастую обходятся и без него), так как в случае каких-либо разногласий с банком эквайрером разбирательства начинаются с проверки наличия слипа по конкретной операции. Технически слип формируется самим терминалом (по крайней мере в нашем случае) или вручную. Если надумали формировать слип вручную, то в конфигурации «Библиотека подключаемого оборудования» имеется общий макет содержащий пример слипа.

Рассмотрим две служебные функции. Первая из них — «АварийнаяОтменаОперации», служит для отмены операции в том случае, когда при получении слипа возникли ошибки. О важности получения слипа говорилось выше.

 

Вторая функция получает строки слипа и формирует из них готовую к печати текст.

Основные функции SBRFCOM

Теперь приведем самую главную функцию — собственно оплата картой.

В случае успешного выполнения переменные, объявленные в начале функции, обретают осмысленные значения и было бы неплохо сохранить их каким-либо образом с привязкой к документу оплаты, эти данные потребуются для отмены или возврата платежа. Закомментированная строка вызывает функцию печати текста, реализация этой функции может быть различной.

Далее следует функция отмены платежа, она применяется для отмены платежа по платежной карте совершенного в этот же день (до сверки итогов).

Если же требуется отменить оплату спустя один или несколько дней, то нужно использовать возврат платежа.

Сверка итогов

Напоследок приведем функцию сверки итогов, ее необходимо выполнять по окончанию каждого рабочего дня. В этом случае деньги за текущий день будут перечислены на следующий день. Если же не выполнять сверку итогов, то деньги будут перечислены через два или три дня.

На этом все, надеюсь эта статья поможет Вам реализовать эквайринг от Сбербанка в Вашей конфигурации, буду рад любым комментариям и замечаниям. И еще раз напомню о том, что в данной теме нужно быть предельно внимательным и осторожным.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (оценок: 15, средняя оценка: 4,67 из 5)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Комментарии: 11
  1. Андрей

    А как реализовать автоматическое выполнение сверки итогов в ут 11.3 при закрытии смены

  2. Сергей

    После регистрации данной библиотеки в 1С 8.3.9.2033 УТ 11.1.10.173 при оплате картой номер должен считываться автоматически т.е его не надо будет в 1С прописывать в ручную.

  3. герман

    а как сделать чтобы при закрытии смены печатался z-отчет по экварингу автоматически?

    1. Кирилл

      нашли ответ? если да покажите)

  4. андрей

    Можно ли получить сверку по проведенным платежам ИЗ ТЕРМИНАЛА не проводя сверку итогов? Т.е. не закрывая смену?
    Понятно, что можно вести учет по закрытым чекам в программе… а в терминале?

    1. Вася

      Формировать чеки используя библиотеку SBRF.DLL.
      Результаты операций хранить в регистре. Сверку проводить по данным терминальной смены.

      // Подключение внешней компоненты
      Драйвер = Новый COMОбъект(«SBRFSRV.Server»);

      // начинаем оплату
      Драйвер.Clear();
      Драйвер.SParam(«Amount»,мСумма);
      РезКод = Драйвер.NFun(4000); // оплата

      Если РезКод = 0 тогда
      РезКод = Драйвер.NFun(6001); // Транзакция в подвешенном состоянии
      Если РезКод = 0 тогда
      //РезКод = Драйвер.NFun(6001); // завершили транзакцию подтверждением
      Результат = Истина;
      Иначе
      Сообщить(«Ошибка подтверждения транзакции. Необходимо обратиться в банк!»);
      КонецЕсли;

      // получим необходимые нам параметры
      Если Результат тогда
      МассивСтрокСлипЧека = СБ_ПолучитьСтрокиСлипЧека(Драйвер.GParamString(«Cheque1251»),МассивСтрокСлипЧека,Объект.Параметры.ШиринаЧека) ;
      КодRRN = Драйвер.GParamString(«RRN»);
      КодАвторизации = Драйвер.GParamString(«AuthCode»);
      НомерТерминала = Драйвер.GParamString(«TermNum»);
      КонецЕсли;
      Иначе
      Сообщить(ПолучитьОписаниеОшибки(Объект.КодыВсехОшибок,РезКод));
      КонецЕсли;

      ЗаписатьЛогОперации();

  5. Александр

    Добрый день! Подскажите пожалуйста:
    1. Что изменится в коде приведенном в статье, если на эквайринг терминале прописано несколько Юридических лиц. Кажется это делается сотрудниками Сбербанка через Отделы и в 7ой версии SBRFCOM, вроде как, появилась возможность передавать параметр Department — т.е. id фирмы в терминале.
    2. Где вы узнали все методы и параметры SBRFCOM? Просто взяли готовое в «Библиотеке подключаемого оборудования»? Нигде не могу найти описание методов и параметров..

    1. Добрый день.

      Документацию по SBRFCOM предоставляют сотрудники Сбербанка, там есть и описание и примеры (правда для 1С примеры какие-то устаревшие были).

      Ответ на первый вопрос, я думаю, можно найти как раз в документации Сбербанка.

      1. Александр

        Вопрос так же актуален.
        Нужно настроить распределение по секциям, не могу понять где зацепиться в 1с
        В документации о параметре Department сказано буквально 2 слова, а именно то, что передается значение от 0 до 255, если 255, то после проведения картой нужно будет выбрать на терминале секцию.
        И вот не могу понять куда этот параметр прицепить и как его передать
        Конфигурация 1С Розница 2.2.7

  6. Александр

    Доброго времени суток!
    Подскажите, пожалуйста, начиная с какой версии в 1С появилась поддержка интегрированных терминалов? Очень нужно.

  7. Павел

    Как работать с терминалом при использовании терминального сервера (rdp)?

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: