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

5.2 ОСМП
http://forum.bitel.ru/viewtopic.php?f=18&t=9366
Страница 1 из 1

Автор:  alf_from_melmok [ 23 июн 2014, 16:25 ]
Заголовок сообщения:  5.2 ОСМП

Добрый день!

Подскажите пожалуйста, есть ли возможность указать разделитель рублей и копеек в сумме платежа при запросах ответах при работе через ОСМП протокол?
Дело в том, что в SFOUR-ном ПО в реализации протокола ОСМП используется разделитель "," в то время как в оригинале используется "."

Автор:  skn [ 23 июн 2014, 18:15 ]
Заголовок сообщения:  Re: 5.2 ОСМП

в следующем билде будет возможность задать в конфиге флаги
Код:
osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,

Автор:  alf_from_melmok [ 03 июл 2014, 16:10 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Спасибо!

Автор:  alf_from_melmok [ 06 окт 2014, 17:33 ]
Заголовок сообщения:  Re: 5.2 ОСМП

А как пользоватся?

Пробывал добавить так в конфиг модуля


Код:

 mps.1.osmp.sum.decimal.separator=,
 mps.1.osmp.account.balance.decimal.separator=,



не сработало!

на запрос:

Код:
?command=pay&txn_id=492&account=XXXXX&txn_date=20141006152048&sum=73,60


говорит

Код:

<response>
<result>300</result>
<osmp_txn_id>492</osmp_txn_id>
<prv_txn>0</prv_txn>
<sum/>
<comment>Ошибка запроса</comment>
</response>



Ставлю точку - запрос проходит нормально.


Пробывал так ставить в конфиг модуля

Код:
osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,


тоже не помогает. Также устанавливал в конфиг ядра - результат тот же - Ошибка запроса


Код:
Информация о версии:

  Клиент: вер. 5.2 сборка 1221 от 01.10.2014 15:16:52
    os: Linux; java: OpenJDK 64-Bit Server VM, v.1.6.0_31
    ВНИМАНИЕ: Виртуальная машина OpenJDK 64-Bit Server VM не рекомендуется
  Сервер: вер. 5.2 сборка 1609 от 01.10.2014 15:16:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45

  card вер. 5.2 сборка 207 от 08.09.2014 17:34:48
  inet вер. 5.2 сборка 1342 от 02.10.2014 18:39:43
  mps вер. 5.2 сборка 183 от 16.07.2014 19:00:30
  npay вер. 5.2 сборка 208 от 17.06.2014 13:35:03


Автор:  skn [ 06 окт 2014, 22:47 ]
Заголовок сообщения:  Re: 5.2 ОСМП

это куда запрос?

Код:
?command=pay&txn_id=492&account=XXXXX&txn_date=20141006152048&sum=73,60


к серверу платежной системы?

Автор:  barguzin2 [ 07 окт 2014, 08:34 ]
Заголовок сообщения:  Re: 5.2 ОСМП

судя по ответу явно к MPS запрос. покажите полный раздел конфига, касающийся настройки данной ПС и версию биллинга.

Автор:  alf_from_melmok [ 07 окт 2014, 14:13 ]
Заголовок сообщения:  Re: 5.2 ОСМП

В <response> есть принт в sum с "РУБ,КОП" при включенных флагах *.separator=",".
А при запросе "большой железобетонный..." на этот separator...

Конфиг модуля

Код:

osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,
#Системы платежей добавляются как mps.<x>.параметры, где <x> - порядковый номер
#Вкл/выкл - 1/0 - принимать или нет платежи для этой пс
mps.1.mode=1
#Название
mps.1.title="ОСМП"
#Используемый протокол для общения пс с биллингом
mps.1.protocol=osmp
#Логин/пароль пс. Должен различаться для различных систем
mps.1.login=
mps.1.passw=
#Отключение Base-аутентификации
mps.1.protocol.ext=noBaseAuth
#id типа платежа, с которым добавляется платёж в договор, при проведении с этой пс
mps.1.pid=2
#
#Комментарий, возвращающийся в ответе на проверку статуса/проведение платежа
#(если в протоколе есть комментарий ответа)
mps.1.comment=$contract_title ($contract_comment), баланс: $contract_balance руб.
#mps.comment=$contract_title ($contract_comment)
#
#Сертификаты
#Проверять клиентский сертификат (рекомендуется, если позволяет протокол пс)
mps.1.cert=0
#Клиентский сертификат (открытый ключ)
#(для протокола eport открытый ключ указывается здесь же, а mps.1.cert=0)
#возможно указать через modulus и exponent:
#mps.1.cert.mod=
#mps.1.cert.exp=
#или в encoded(байты в 16-ричном представлении)
#mps.1.cert.encoded=
#или в pem (base64), без header/footer (-----*** PUBLIC KEY-----) и переносов строк
#mps.1.cert.pem=
#
#
#Поиск договора для проведения платежа.
#В некоторых системах возможны типы поиска - дополнительное поле с числовым значением.
#Если поле отсутствует, используется тип поиска 0,
#т.е. используются параметры поиска из mps.1.search.xxx (mps.1.search.mode), если же присутствует и, например,
#его значение 1, то параметры поиска будут из mps.1.search.1.xxx (mps.1.search.1.mode)
#
#Поддержка передачи типа поиска через префикс
#(т.е. если ищется договор x0000 c типом поиска 1, то в поле account протокола osmp передаётся 1_x0000)
#mps.1.protocol.ext=osmpPrefix
#Если используется несколько расширений, их нужно прописать через запятую:
#mps.1.protocol.ext=noBaseAuth,osmpPrefix
#
#Тип поиска (contract|login|phone|mps_login)
mps.1.search.mode=contract
#Код модуля для поиска (необходим для типов поиска login, phone)
#mps.1.search.mid=
#Шаблон преобразования - pattern:::result, если пришедшее значение подходит под regexp, то
#оно преобразуется перед поиском, если нет - остаётся без изменений, по умолчанию - без изменений.
#Например, \A((?:\d{5})|(?:\d{6})|(?:\d{7}))(\d{2})\z:::NK$1-$2
#если пришедший номер для поиска представляет собой 12345608, то он будет преобразован в NK123456-08,
#и уже по нему будет произведён поиск договора
#mps.1.search.pattern=
#regexp названий договоров, для которых возможен поиск. Если название договора не совпадает с regexp,
#то он не будет найден для системы платежей для этого типа поиска
#mps.1.search.allow.contract.regexp=NK-.*
#Группы договоров, для которых возможен поиск для этого типа поиска
mps.1.search.pattern=INET-$NUMBER
mps.1.numberPattern=\d+
mps.1.search.allow.contract.groups=0
#
# Ограничения на пополняемую сумму
#минимальная
mps.1.min.summ=10
#максимальная
mps.1.max.summ=15001
#
#Разница во времени в минутах между сервером биллинга и системой платежей (например система работает по московскому времени, биллинг
#по уфимскому +2 часа - 180)
#mps.1.timeoffset=
#промежуток времени между временем платежа и реальным временем, с поправкой на timeoffset.
#если задано и промежуток оказался больше то платёж не пройдёт
# 7 суток
mps.1.paytime=10080
#
#Параметры логина mps (может использоваться для поиска договора при проведении платежа)
#Формат вывода значения числового логина mps (на web-статистике)
#mps.mps_login.format=
#regexp проверки введённого значения
#mps.mps_login.regexp=
#Ошибка, выводимая в web-статистике при несовпадении введённого логина mps с regexp
#mps.mps_login.regexp.error=




Лог модуля MPS при DEBUG. (Большое Человеческое Спасибо - barguzin2 за подсказку).

Код:
10-07/11:36:26 DEBUG ["http-bio-/0.0.0.0-8080"-exec-4] mps - System: "ОСМП"
Request:
/4/1
txn_date=20141007113350&txn_id=5020&command=pay&account=7755&sum=14,00&
Response:
<?xml version="1.0" encoding="UTF-8"?><response><result>300</result><osmp_txn_id>5020</osmp_txn_id><prv_txn>0</prv_txn><sum/><comment>Ошибка запроса</comment></response>
10-07/11:37:12 DEBUG ["http-bio-/0.0.0.0-8080"-exec-5] mps - System: "ОСМП"
Request:
/4/1
txn_date=20141007113350&txn_id=5021&command=pay&account=7755&sum=14.00&
Response:
<?xml version="1.0" encoding="UTF-8"?><response><result>0</result><osmp_txn_id>5021</osmp_txn_id><prv_txn>10</prv_txn><sum>14,00</sum><comment>Платеж принят на: INET-7755 (Тестовый технический договор), баланс: 351.36 руб.</comment></response>


<response>
<result>0</result>
<osmp_txn_id>5021</osmp_txn_id>
<prv_txn>10</prv_txn>
<sum>14,00</sum>
<comment>
Платеж принят на: INET-7755 (Тестовый технический договор), баланс: 351.36 руб.
</comment>
</response>


Код:
Информация о версии:

  Клиент: вер. 5.2 сборка 1221 от 01.10.2014 15:16:52
    os: Windows 2003; java: Java HotSpot(TM) Client VM, v.1.6.0_37
  Сервер: вер. 5.2 сборка 1609 от 01.10.2014 15:16:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45

  card вер. 5.2 сборка 207 от 08.09.2014 17:34:48
  inet вер. 5.2 сборка 1342 от 02.10.2014 18:39:43
  mps вер. 5.2 сборка 183 от 16.07.2014 19:00:30
  npay вер. 5.2 сборка 208 от 17.06.2014 13:35:03


Автор:  skn [ 07 окт 2014, 15:08 ]
Заголовок сообщения:  Re: 5.2 ОСМП

в чем проблема, не пойму?

Автор:  alf_from_melmok [ 07 окт 2014, 20:22 ]
Заголовок сообщения:  Re: 5.2 ОСМП

проблема в том, что не работает фича.


1. Биллинг не проводит платеж, при:

а) Конфиг модуля
Код:
osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,


б) запрос в сторону модуля MPS

Пример запроса:

Код:
?command=pay&txn_id=492&account=XXXXX&txn_date=20141006152048&sum=73,60


Ответ биллинга:

Код:
<response>
<result>300</result>
<osmp_txn_id>492</osmp_txn_id>
<prv_txn>0</prv_txn>
<sum/>
<comment>Ошибка запроса</comment>
</response>



подробности постом выше.


Однако, при этих же настройках, если дать запрос вида

Код:
?command=pay&txn_id=492&account=7755&txn_date=20141006152048&sum=73.60


то в ответ получим:

Код:
<response>
<result>0</result>
<osmp_txn_id>5021</osmp_txn_id>
<prv_txn>10</prv_txn>
<sum>14,00</sum>
<comment>
Платеж принят на: INET-7755 (Тестовый технический договор), баланс: 351.36 руб.
</comment>
</response>


Где справедливость?

Автор:  barguzin2 [ 07 окт 2014, 20:30 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Насколько я понял комрада, суть в том, что настройки
Код:
osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,

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

Автор:  alf_from_melmok [ 07 окт 2014, 20:32 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Ну да... просто я не очевидно это описал. Возможно несколько сумбурно.

Автор:  alf_from_melmok [ 07 окт 2014, 20:43 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Давайте так, нужно чтобы запрос вида:

Код:
?command=pay&txn_id=492&account=XXXXX&txn_date=20141006152048&sum=73,60


проводил платеж.

Сейчас он выдает ошибку запроса при попытке использовать в sum разделитель РУБЛЕЙ и КОПЕЕК - "запятая".

Указанное происходит при флагах:

Код:
osmp.sum.decimal.separator=,
osmp.account.balance.decimal.separator=,


в конфиге модуля MPS.

Автор:  skn [ 08 окт 2014, 03:50 ]
Заголовок сообщения:  Re: 5.2 ОСМП

какой билд модуля MPS? от какого числа?

Автор:  alf_from_melmok [ 08 окт 2014, 13:42 ]
Заголовок сообщения:  Re: 5.2 ОСМП

дублирую:

Код:
Информация о версии:

  Клиент: вер. 5.2 сборка 1221 от 01.10.2014 15:16:52
    os: Windows 2003; java: Java HotSpot(TM) Client VM, v.1.6.0_37
  Сервер: вер. 5.2 сборка 1609 от 01.10.2014 15:16:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45

  card вер. 5.2 сборка 207 от 08.09.2014 17:34:48
  inet вер. 5.2 сборка 1342 от 02.10.2014 18:39:43
  mps вер. 5.2 сборка 183 от 16.07.2014 19:00:30
  npay вер. 5.2 сборка 208 от 17.06.2014 13:35:03

Автор:  skn [ 08 окт 2014, 16:01 ]
Заголовок сообщения:  Re: 5.2 ОСМП

попробуйте обновить до последней

Автор:  alf_from_melmok [ 08 окт 2014, 20:46 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Обновился. Теперь перестало вообще принимать запросы.

На любой запрос отвечает (с запятой и с точкой, с включенными флагами osmp.separator и без) один ответ у него:

Код:
<response>
<result>300</result>
<osmp_txn_id>505</osmp_txn_id>
<comment>Ошибка запроса</comment>
</response>

Автор:  skn [ 08 окт 2014, 20:57 ]
Заголовок сообщения:  Re: 5.2 ОСМП

а в логах что нибудь есть?

Автор:  alf_from_melmok [ 09 окт 2014, 11:19 ]
Заголовок сообщения:  Re: 5.2 ОСМП

Сорри, еще раз проверил - начал принимать и с запятой и без. Сейчас все нормально. Наверно браузер подвел вчера при тестировании.
Но есть ньюанс, MPS теперь все равно какой разделитель приходит в sum - точка или запятая. Флаги вида osmp.separator.* работают только на формат при выводе значения sum в XML-response. Для меня такое поведение не критично.

Логи появились (забыл после обновления включить дебаг, т.к. конфиг-файл log4j затерся на новый).

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