forum.bitel.ru
http://forum.bitel.ru/

Парсинг реестра Сбербанка
http://forum.bitel.ru/viewtopic.php?f=18&t=12156
Страница 1 из 1

Автор:  abu [ 08 дек 2016, 07:23 ]
Заголовок сообщения:  Парсинг реестра Сбербанка

Возможно ли распарсить реестр Сбербанка (работаем с ним по протоколу osmp)? Реестр имеет вид:

Цитата:
30-11-2016;02-25-14;8636;8636999V;169197478961;2560;10,00;9,70;0,30
30-11-2016;10-52-00;8636;8636999V;169314818013;2560;10,00;9,70;0,30

=5;180,00;174,60;5,40;382870;01-12-2016

Если распарсить возможно, то непонятно, как "склеить" дату и время из двух соседних столбцов 30-11-2016;02-25-14; для опции time в mps.1.register.patternOrder, и какой нужно выставить mps.1.register.timeFormat для данного случая. Пробовал делать вот так, не получается:

Код:
#regexp записи
#mps.6.register.pattern=^(.+)[;\t](\d+)[;\t]([\d+: -TZ]+)[;\t] (\d+\.*\d*)[;\t] (\d+)$
mps.6.register.pattern=^(\*\;\*)[;](\d+)[;](\d*)[;](\d+)[;](\d+)[;](\d+\,*\d*)[;](\d+\,*\d*)[;](\d+\,*\d*)$
#Порядок значений в regexp
#mps.6.register.patternOrder=account:1, time:3, sum:4, transId:5
mps.6.register.patternOrder=account:5, time:1, sum:6, transId:4
#Формат времени
#mps.6.register.timeFormat=yyyy-MM-dd'T'HH:mm:ss'Z'
mps.6.register.timeFormat=dd-MM-yyyy';'HH-mm-ss

Автор:  skn [ 08 дек 2016, 12:33 ]
Заголовок сообщения:  Re: Парсинг реестра Сбербанка

Распарсить для чего?

Автор:  abu [ 08 дек 2016, 13:47 ]
Заголовок сообщения:  Re: Парсинг реестра Сбербанка

Настройки парсинга реестра описаны в главе "Сверка платежей MPS" руководства. Стало быть - распарсить для сверки платежей.

Благодаря Kostiksnz, нашелся верный способ - дата 30-11-2016;02-25-14; парсится вот так (.+[;].+)[;] , а формат даты выставляется так: dd-MM-yyyy';'HH-mm-ss

Автор:  abu [ 09 дек 2016, 07:15 ]
Заголовок сообщения:  Re: Парсинг реестра Сбербанка

Сразу не заметил (опция для суммы была выставлена неверно), а сейчас обнаружил, что если строка в реестре имеет платеж, десятичная часть которого разделена точкой, то при сверке такой платеж отображается корректно. Если разделитель запятая, то сумма платежа отображается нулями. Например:

- строки вида - 30-10-2016;02-25-14;169197478961;2560;10.00 парсятся без проблем с настройками модуля:
Цитата:
mps.6.register.pattern=^(.+[;].+)[;](\d+)[;](.+)[;](\d+\.*\d*)$
mps.6.register.patternOrder=account:3, time:1, sum:4, transId:2
mps.6.register.timeFormat=dd-MM-yyyy';'HH-mm-ss


- строки вида - 30-10-2016;02-25-14;169197478961;2560;10,00 парсятся, но сумма платежа отображается нулевой, настройки модуля (точка сменена на запятую):
Цитата:
mps.6.register.pattern=^(.+[;].+)[;](\d+)[;](.+)[;](\d+\,*\d*)$
mps.6.register.patternOrder=account:3, time:1, sum:4, transId:2
mps.6.register.timeFormat=dd-MM-yyyy';'HH-mm-ss


Реестр приходит с суммами, разделенными запятыми. Пробовал несколько разных регэкспов, корректность регэкспов проверял с помощью visual-regexp, добавлял в конфигурацию:
Код:
mps.6.osmp.sum.decimal.separator=,
mps.6.osmp.account.balance.decimal.separator=,

не работает.
Цитата:
Информация о версии:

Клиент: вер. 6.2.847 / 28.11.2016 20:54:00
os: Linux; java: Java HotSpot(TM) Server VM, v.1.8.0_74
Сервер: вер. 6.2.1145 / 30.11.2016 17:54:18
os: Linux; java: Java HotSpot(TM) Client VM, v.1.8.0_74

assist: вер. 6.2.88 / 09.11.2016 15:23:35
bill: вер. 6.2.96 / 28.11.2016 20:59:02
card: вер. 6.2.39 / 26.05.2016 14:50:45
dba: вер. 6.2.163 / 02.02.2016 17:42:00
enaza: вер. 6.2.59 / 19.04.2016 21:47:47
gorod: вер. 6.2.164 / 01.03.2016 00:18:32
inet: вер. 6.2.702 / 28.11.2016 20:55:43
mps: вер. 6.2.221 / 04.10.2016 19:16:15
npay: вер. 6.2.197 / 04.10.2016 19:12:21
paylinks: вер. 6.2.31 / 02.02.2016 17:42:04
qiwi: вер. 6.2.48 / 14.07.2016 14:11:51
rentsoft: вер. 6.2.63 / 04.10.2016 19:16:26
reports: вер. 6.2.213 / 03.10.2016 16:59:27
rscm: вер. 6.2.178 / 04.10.2016 19:16:30
ru.bitel.bgbilling.plugins.cladr: вер. 6.2.119 / 02.02.2016 17:42:00
ru.bitel.bgbilling.plugins.dispatch: вер. 6.2.94 / 28.11.2016 20:56:09
trayinfo: вер. 6.2.170 / 02.02.2016 17:42:09
tv: вер. 6.2.238 / 30.11.2016 17:54:27
wellpay: вер. ?
wm: вер. 6.2.189 / 04.10.2016 19:16:46
yamoney: вер. 6.2.58 / 04.10.2016 19:16:49

Окружение:

Клиент:
os: Linux i386, 3.13-1-amd64
java: Java HotSpot(TM) Server VM, v.1.8.0_74
jre home: /opt/java/jdk1.8.0_74/jre
default tz: 09.12.2016 10:17 YAKT +0900 (Asia/Yakutsk)
user tz: 09.12.2016 10:17 YAKT +0900 (Asia/Yakutsk)
locale: ru_RU
Сервер:
os: Linux i386, 2.6.32-el-smp-alt27
java: Java HotSpot(TM) Client VM, v.1.8.0_74
jre home: /opt/java/jdk1.8.0_74/jre
default tz: 09.12.2016 10:17 YAKT +0900 (Asia/Yakutsk)
db time: master: 09.12.2016 10:17 YAKT
db charset: connection: cp1251(cp1251_general_ci), database: cp1251(cp1251_general_ci)
locale: en_US
uptime: Started: 01.12.2016 09:11:23 Uptime: 8 d 01:06:12


Вложения:
999(106).jpg
999(106).jpg [ 57.22 КБ | Просмотров: 4307 ]
999(105).jpg
999(105).jpg [ 61.52 КБ | Просмотров: 4307 ]

Автор:  skn [ 09 дек 2016, 16:52 ]
Заголовок сообщения:  Re: Парсинг реестра Сбербанка

по сумме
1) обновиться до 7 версии
2) сделать внешний предобработчик реестров (заменять запятую на точку)

Автор:  abu [ 09 дек 2016, 18:29 ]
Заголовок сообщения:  Re: Парсинг реестра Сбербанка

Цитата:
1) обновиться до 7 версии

Вообще-то у меня оплачена 7 версия, но работаю на 6.2. Обновлять версию не планирую, только за ноябрь обновился внутри версии 6.2 5 раз, надо передохнуть (:
Цитата:
2) сделать внешний предобработчик реестров (заменять запятую на точку)

Предобработчик хорош, когда выгрузка автоматизирована. Приходили бы реестры по почте, как встарь, можно было бы все сделать вне биллинга и, самое главное, мимо бухгалтера. У Сбербанка же она происходит вручную, из личного кабинета СбербанкОнлайн. Загрузка реестра в предобработчик это лишнее действие для бухгалтера, он у нас один на все четыре стороны, посреди ключей, банк-клиентов и прочих "предобработчиков". Также Сбербанк отказывается поменять запятую на точку.

Придется делать велосипед без сверки в биллинге.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/