Имя: Пароль:
1C
1С v8
Есть люди, кто интегрировал 1С со Сбербанк "Спасибо"? Вопрос по бесконтактному считыванию
, ,
0 Cyberhawk
 
08.02.18
13:14
Друзья, есть среди вас такие, кто на 1С успешно реализовал безконтактное считывание банковских карт (или мобильных устройств) через пин-пады Сбербанка (в основном имеются Verifone VX820) для интеграции с процессинговым центром лояльности "Спасибо" (списание этих бонусов с бонусного баланса, ну и возвраты с отменами начислений этих бонусов)?

Если кратко, то:
1. У Сбера есть "новая" версия библиотеки (СОМ-компоненты) sbrfcom.dll (27.0.х.х), которая при первом вызове старого доброго метода "ОплатитьПлатежнойКартой" никакую реальную оплату не осуществляет, а только возвращает хэш номера карты.
2. Далее (по их задумке) 1С, зная хэш, взаимодействуем с бонусной программой (через их локальное ПО или через веб-сервис), списывает бонусы, уменьшает в 1С сумму чека на сумму бонусов (скидка типа) и повторно вызывает метод "ОплатитьПлатежнойКартой" с уменьшенной суммой для оплаты, где уже и происходит реальная оплата (авторизация суммы на карте).
3. Очевидно, что "старая" обработка обслуживания для 1С с "новой" СОМ-компонентой несовместима, т.к. вызывает методы оплаты / отмены / возврата один раз и поэтому реальных операций с картой не происходит.

Собственно, интересует, подружил ли кто 1С с "новой" библиотекой (переписал обработку обслуживания) или как-то еще по-другому реализовал безконактное считывание сберовских карт покупателей для списания "Спасибок"?
Почему упоминаю безконтактное считывание? Да потому что с контактным считыванием все в порядке - это умеет делать и "старая" библиотека Сбера, но тогда, во-первых, всякие ApplePay (оплата с мобильных устройств) идут лесом, а во-вторых клиенту приходится дважды с пин-падом взаимодействовать (сначала вставлять карту чипом в пин-пад, а потом еще раз для оплаты).
6 Cyberhawk
 
09.02.18
16:24
Ну что, у кого есть карточки Сбербанка со "спасибками"?
Вы когда в магазине расплачиваетесь этими спасибками, карточку всегда в пин-пад вставляете чипом?
Где-нибудь в оффлайн-магазине удавалось вам расплатиться  "спасибками" безконтактным способом?
7 Flover
 
09.02.18
17:00
(6) расплачиваюсь в бургер кинге ими, прикладываю чипом к терминалу, спасибки автоматом как то потом списываются и показываются в чеке сколько спасибок списалось.
8 Cyberhawk
 
09.02.18
17:24
(7) "прикладываю чипом к терминалу" // Чипом карту в терминал только вставляют :) Безконтпктное считывание данных с чипа невозможно.
А ты карту прикладываешь к корпусу терминала (никуда ее не вставляя), правильно понял?
Не обращал внимание, что у них там за кассовое ПО?
9 X Leshiy
 
09.02.18
17:27
(8) Я пол часа назад расплачивался спасибками.

Карта бесконтактная.

Вставлять не просили.
10 Cyberhawk
 
09.02.18
17:29
(9) Какое ПО на кассе, не обратил внимание?
11 X Leshiy
 
09.02.18
17:30
(10) К сожалению, я в них не разбираюсь (

Точно помню что черно-белое)
12 Cyberhawk
 
09.02.18
17:31
(11) А спасибками расплачиваешься полностью (не платя ни копейки "живыми" деньгами) или только часть стоимости чека?
13 Cyberhawk
 
09.02.18
17:31
(7) Вопрос аналогичный (12)
14 Flover
 
09.02.18
17:33
(8)

(А ты карту прикладываешь к корпусу терминала (никуда ее не вставляя), правильно понял?)
да, верно

(Не обращал внимание, что у них там за кассовое ПО?)
неа

выходит чек после успешной транцакции и на нем написано сколько спасибок оплачено и сколько рублей...
из последнего чека помню, что 100 рублей и 400 спасибок было
15 X Leshiy
 
09.02.18
17:34
(12) 1 рубь списали.
16 X Leshiy
 
09.02.18
17:36
(12) Спасибок хватало, но все равно 1 руб. списали.
17 Cyberhawk
 
09.02.18
17:37
(14) (15) Благодарю!
18 NorthWind
 
09.02.18
22:29
(17) В бургер-кинге списывают рубль и размазывают всю стоимость еды по этому рублю. Грубо говоря, бутерброд 6 копеек, кока-кола 4 копейки. По-моему, они это скидкой делают, хотя могу ошибаться, чека сейчас под руками нет. А потом, кажется, в отдельном отрывном купоне указывается сколько списано спасибо, и та же инфа приходит на телефон.
Как-то так.
19 NorthWind
 
09.02.18
22:30
то есть фактически производится продажа за нал на минимально возможную сумму все равно есть.
20 ejikbeznojek
 
09.02.18
23:26
(0) Я всё делал через sbrf.dll
21 Cyberhawk
 
10.02.18
18:27
(20) Делал свою обработку обслуживания (если речь о какой-нибудь типовой с поддержкой торгового оборудования)?
22 ejikbeznojek
 
11.02.18
11:07
(21) Угу, делал свою. Не помню, чего мне не хватило в типовой через sbrfcom.dll.
Но это более-менее простая обработка была.

Функция УзнатьХэш() экспорт
    попытка
        ВыхПараметры=новый СписокЗначений;
        ОбъектДрайвера = Новый COMОбъект("SBRFSRV.Server");
        очистить=ОбъектДрайвера.clear();    
        ответ=ОбъектДрайвера.NFun (5002);
        если ответ = 0 тогда
            Хэш=ОбъектДрайвера.GParamString("hash");
            ЭтоСбер=ОбъектДрайвера.GParamString("OWNCArd");
            Пан=ОбъектДрайвера.GParamString("ClientCard");
            Пан="************"+сред(пан,13);
            если ЭтоСбер<>"1" тогда
                ВыхПараметры.Добавить("ЭтожНеСбер");
                ВыхПараметры.Добавить(пан);
                Возврат ВыхПараметры;
            КонецЕсли;
            ОбъектДрайвера.clear();
            ВыхПараметры.Добавить(Хэш);
            ВыхПараметры.Добавить(пан);
            Возврат ВыхПараметры;
        иначе
            Сообщить("Карта не прочитана, ошибка чтения карты");
            возврат Неопределено;
        КонецЕсли;
    Исключение
        Сообщить("Карта не прочитана, ошибка соединения с терминалом");
        возврат Неопределено;
    КонецПопытки;
КонецФункции



Функция ОплатитьПлатежнойКартой(ОбъектДрайвера, Параметры,
    Сумма, ВыходныеПараметры,чек,форма) Экспорт
    Результат             = ложь;
    
    
    
    ЗаплатилиБаллами=чек.СуммаОплатыБаллами;    
    СуммаВременная        = Неопределено;
    
    КодКарты            = Неопределено;
    СсылочныйНомер        = Неопределено;
    НомерЧека             = Неопределено;
    
    //ОбъектДрайвера.ТипКарты = 0;//.ПоследнийТипКарты;?????????????????
    СуммаВременная = Сумма*100;
    
    очистить=ОбъектДрайвера.clear();    
    ОбъектДрайвера.SParam ("Amount", СуммаВременная);
    ответ=ОбъектДрайвера.NFun (4000);
    
    если ответ<>0 тогда возврат Ложь;
    иначе Результат=Истина;    
    КонецЕсли;
    
    
    
    
    НомерТерминала       = ОбъектДрайвера.GParamString("TermNum");
    MyClientCard       = ОбъектДрайвера.GParamString("ClientCard") ;
    MyClientExpiryDate = ОбъектДрайвера.GParamString("ClientExpiryDate") ;
    MyAuthCode         = ОбъектДрайвера.GParamString("AuthCode");
    MyCardName         = ОбъектДрайвера.GParamString("CardName");
    СлипЧек           = ОбъектДрайвера.GParamString("Cheque");
    MerchantTSN       =ОбъектДрайвера.GParamString("MerchantTSN");
    если чек.хэш="" или чек.хэш=Неопределено тогда
        если ОбъектДрайвера.GParamString("OWNCArd")="0" тогда
            Хэш="ЭтожНеСбер";
            Пан="";
        иначе
            Хэш                      =ОбъектДрайвера.GParamString("Hash");
            Пан=ОбъектДрайвера.GParamString("ClientCard");
            Пан="************"+сред(пан,13);
            форма.хэш=хэш;
            форма.пан=пан;
            
            
        КонецЕсли;
    Иначе
        Хэш=чек.хэш;
        Пан=чек.пан;
    КонецЕсли;

    Транзакция=чекоб.транзакцииБН.добавить();
    транзакция.ID=MerchantTSN;
    транзакция.вид=Перечисления.ВидТранзакцииБН.Списание;
    Транзакция.видОплаты=Перечисления.ВалютаТранзакцииБН.Рубли;
    Транзакция.СуммаТранзакции=Сумма;
    Транзакция.СуммаТранзакцииИзБанка=Сумма;
    
    
    
    
    
    
    
    
    если  ПараметрыСеанса.КассаККМ.ЭквайринговыйТерминал<>Справочники.ЭквайринговыеТерминалы.ПустаяСсылка()  и хэш<>"ЭтожНеСбер" Тогда
        если ЗаплатилиБаллами <> 0 тогда
            РезультатОБ=ОплатитьБаллами(хэш,ЗаплатилиБаллами,чек,форма,пан);
        иначе
            РезультатОБ=Истина
        КонецЕсли;
        если (РезультатОБ или ЗаплатилиБаллами=0) тогда
        Иначе
            Сообщить("не прошли операции с баллами");
            ответ=ОбъектДрайвера.NFun (4003);

            //кухарь 24.02.2014 начало
            //иногда могут не вставить карту при отмене
                ////кухарь 28.10.2013 начало
                //Транзакция.отменена=Истина;
                ////кухарь 28.10.2013 конец             
                Если ответ=0 тогда
                    Транзакция.отменена=Истина;
                    //кухарь 17.03.14 начало
                    //обнулим хэш на случай если в чеке используется несколько различных банковских карт
                    форма.Хэш="";
                    форма.Пан="";
                    //кухарь 17.03.14 конец
                КонецЕсли;
            //кухарь 24.02.2014 конец
            
            
            возврат Ложь
        КонецЕсли;    
    КонецЕсли;
    
    
    
    
    

    
    ВыходныеПараметры.Добавить(Новый Массив());
    ВыходныеПараметры[0].Добавить("СлипЧек");
    ВыходныеПараметры[0].Добавить(СлипЧек);
    ВыходныеПараметры.добавить(Новый Массив());
    ВыходныеПараметры[1].добавить("КодАвторизации");
    ВыходныеПараметры[1].добавить(MyAuthCode);
    //ВыходныеПараметры.добавить(Хэш);
    
    
    ОбъектДрайвера.Clear();
    ОбъектДрайвера=Неопределено;
    
    Возврат Результат;
    
КонецФункции
23 Лефмихалыч
 
11.02.18
13:47
(0) чо-то какой-то долбаный бред. Не должно быть продавцу ни какого дела до того, какого сорта деньги списывает со своего клиента сбер. Тут как-то все кверх кармашками на рога поставлено. Дятелизм какой-то в исполнении сбера.
24 vis_tmp
 
11.02.18
13:51
(23)Да, мне тоже показалось это всё весьма странным
25 Cyberhawk
 
11.02.18
14:24
(23) (24) Ну вот такая программа лояльности у Сбера - списание бонусов "Спасибо" инициируется как раз кассовым ПО (торговой точкой). Сделали так, видимо, чтобы превращать бонусы в реальные деньги (как у программ лояльности других банков) было максимально затруднительно. Жиды.
26 Лефмихалыч
 
11.02.18
14:32
(25) да просто, когда в голове обе извилины эротическими фантазиями про блокчейн и машинлёнен заняты, тогда в рельаном мире получаются вот такие решения
27 Cyberhawk
 
11.02.18
14:37
(22) Спс за пример взаимодействия с СОМ-компонентой sbrf.dll, надеюсь _не_ пригодится :)
В плане удобства новая сберовская компонента sbrfcom.dll будет поудобнее того, что у тебя в коде, но она пока еще багнутая, да и заказчик пока не хочет переписывать действующую логику безналичной оплаты (настройки пин-падов и обработку обслуживания), даже в ущерб удобства покупателей.
Кстати, ты можешь предложить тем своим, которым реализовывал, как раз переписать обработку обслуживания еще разок, чтобы за одно безконтактное считывание все заработало :)
28 ejikbeznojek
 
11.02.18
16:38
(27) А мы недавно отказались от спасибо.
А снятие денег работает и сейчас через безконтактное считывание.
Я недавно считал какие это убытки приносит.

У нас 4,5% от оплаты по безналу начислений было. И сберовские 0,5%. + можно принимать к оплате.

Начисление баллов это чистый убыток (за 1 начисленный покупателю балл мы платим сберу 1 рубль).

За списание баллов банк платит нам (1 принятый к оплате балл равен рублю, который нам должен банк). Но есть комиссия 0,5% от оборота. А с учётом того, что в месяц баллов мы принимали на несколько миллионов, это сравнимо с убытком на начисления. У меня получалось убытков 1% от оборота магазинов. + деньги которые за списание баллов, банк отдаёт не сразу, а раз в полгода.
29 ejikbeznojek
 
11.02.18
16:48
(0) хах....там самое интересное начинается с возвратами.
Я когда интеграция только начиналась придумал схему.

Покупатель набирает товара на 100000.
получает 5000 бонусов
идёт в бургер кинг и ест на 5000 бонусов.
Возвращается в магазин и делает возврат товара.
И получает обратно свои 100000.

При этом баллы у него списать нельзя, потому что у него уже их нет. Отказать в возврате тоже нельзя.

И выходит что покупатель остался в плюсе на 5000.
Банк остался в плюсе на размер комиссии.
А мы остаёмся в минусе на 5000.

Я позвонил к ним и спросил, что они с такими схемами делают?
Мне что-то невнятно ответили про борьбу с фродингом, и что кто слишком часто так делают, тем блокируют баллы на карте.
В общем сомнительно это всё как-то....
30 Cyberhawk
 
11.02.18
18:18
(28) Да уж, теперь понятно, зачем банк организовал весь этот геморрой с вовлечением торговых точек в процесс поощрения клиентов - чтобы оставаться в профите :) Благодарю за информацию!
31 NorthWind
 
11.02.18
21:33
(30) интересно, каким образом банк мотивирует торговые точки участвовать во всем этом, раз ничего кроме геморроя для них в этом нет?
32 Cyberhawk
 
11.02.18
21:59
(31) Думаю, аргументируют это увеличением клиентуры. Типа на двери магаза будет висеть стикер "Принимаем Спасибо".
33 ejikbeznojek
 
12.02.18
10:30
(32) + на сайте сбера висит список кто принимает и начисляет баллы.
Я вот иногда, когда баллов накопится, захожу на сайт и смотрю где  могу их потратить.
И директора магазинов некоторые жаловались, что часть клиентов, когда узнавало что мы перестали баллы принимать, разворачивались и уходили.

(31) Ну это обычные затраты на рекламу, но я вот не знаю как проанализировать, насколько крутая это реклама.
Основная теорема систематики: Новые системы плодят новые проблемы.