Работаем со сбером по osmp.
Возникла необходимость принимать платежи на договора с кириллицей в номере.
Не получается.
Сначала была ошибка SQL: Illegal mix of collations.
Конвертнул contract в utf8 - ошибка исчезла - сейчас просто пишет, что договор не найден:
Код:
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSExecutor - request.getPathInfo() = /20/12; mpsId = 12; mid = 20; params = [, 20, 12]
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSExecutor - MPS (getLoginAndPasswordFromHeaderAuthorization): authorization=************; unencoded=sbrf:*******; encoding=utf-8
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSExecutor - MPS (getLoginAndPasswordFromHeaderAuthorization): userName=*****; userPswd=******
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSTransactionManager - userName = ****; userPswd=*******; mpsId=12
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSTransactionManager - conf.mpsSystems.length=12
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSTransactionManager - system=[protocol=osmp; protocol.isAuthBySign()=false; extNoBaseAuth=false; login=****; password=*******]
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSTransactionManager - Select MPSTransactionManager=ru.bitel.bgbilling.modules.mps.server.bean.OSMPTransactionManager@667a5a24
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSTransactionManager - system.certificateNeed = false
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Set encoding to ISO-8859-1
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Set query string encoding to ISO-8859-1
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Decoding query null ISO-8859-1
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Start processing with input [command=check&txn_id=1&account=%D0%91%2F12345&sum=10]
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] WebappClassLoader - loadClass(org.apache.xml.serializer.ToXMLStream, false)
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] WebappClassLoader - Delegating to parent classloader1 ru.bitel.common.bootstrap.BootstrapClassLoader@2ff4f00f
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] WebappClassLoader - Loading class from parent
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSExecutor - Filter (mpsexecuterSetCharacterEncoding) = null
FilterCharacterEncoding=null
System: Сбербанк Online (ДСИ)
Request:
/20/12
command=check&txn_id=1&account=Ð<91>/12345&sum=10&
Response:
<?xml version="1.0" encoding="UTF-8"?><response><result>5</result><osmp_txn_id>1</osmp_txn_id><comment>Договор не найден [Б/12345]</comment></response>
Смущают вот эти строки:
Код:
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Set encoding to ISO-8859-1
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Set query string encoding to ISO-8859-1
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] Parameters - Decoding query null ISO-8859-1
А также любопытно вот это:
Код:
03-05/11:12:40 DEBUG [http-bio-0.0.0.0-8443-exec-9] MPSExecutor - Filter (mpsexecuterSetCharacterEncoding) = null
FilterCharacterEncoding=null
Вопрос: может быть в web.xml нужно прописать фильтр для mpsexecuter аналогично как сделано из коробки для executer?
Код:
<filter>
<filter-name>SetCharacterEncodingFilterUTF8</filter-name>
<filter-class>ru.bitel.common.server.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
В доках нет ничего про это.
Есть параметр конфига ПС request.encoding, но он для osmp не применяется, и вообще не про то немного.
Сервер: вер. 7.0.1263 / 13.09.2017 20:33:05
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_144
mps: вер. 7.0.221 / 11.09.2017 16:42:32