Другие вопросы
Открытое API
PSB On-Line Web Services
Web service работает по SOAP протоколу. Ниже описан пример реализации клиента на JAVa c использованием библиотеки Axis.
Вы можете использовать то, что вам необходимо - фреймворки для работы с сервисами есть практически для всех языков. Ниже описан именно ПРИМЕР написания кода (а не готовая программа) с использованием Axis!
Ссылка на веб сервис выписки
https://online.payment.ru:9443/OLWSWM/services/OLWS?wsdl чтобы получить результат по ссылке, в браузер надо установить соответствующий сертификат.
Для авторизации в сервисе можно использовать тот же сертификат что и для PSB On-Line. Сертификат в системе хранится в формате JKS - Java KeyStore.
Для конвертации в формат PKCS12 можно использовать программу "Запуск java -jar ConverStore.jar file1 file2 password", где file1 - файл хранилища в формате JKS (client.jks), file2 - файл выходного хранилища, password - пароль к исходному хранилищу им же будет запаролено выходное.После этого ключ с сертификатом можно будет поместить в браузер (например IE) и по ссылке
https://online.payment.ru:9443/OLWSWM/services/OLWS?wsdl можно получить wsdl файл описания сервиса.(папка OLWS)
ПОДКЛЮЧЕНИЕ К ВЕБ СЕРВИСУ
Для подключения к веб сервису нужно использовать сертификат юридического лица PSB On-Line. После подключения к веб сервису по SSL протоколу автоматически будет выполнена аутентификация по сертификату и веб сервис выполнит все необходимые настройки для данного клиента. Основной класс сервиса называется OLWS.
OLWSServiceLocator sl=new OLWSServiceLocator();
sl.setMaintainSession(true);
OLWS os= sl.getOLWS(new URL("https://online.payment.ru:9443/OLWSWM/services/OLWS"));
Для правильной работы клиентское приложение должно быть настроено на поддержку сессий. Должен использоваться механизм Cookies.
ВЫЗОВ МЕТОДОВ ВЕБ СЕРВИСА
Первый информационный метод для объекта OLWS предназначен для получения списка филиалов, в которых данный сертификат имеет права, он называется getFilials и возвращает массив объектов Filial.
Filial[] fs=os.getFilias();
if(fs!=null) {
System.out.println("Количество филиалов "+fs.length);
for(Filial f:fs) {
System.out.println(f.getId()+"\t"+f.getName());
}
} else {
System.out.println("Нет филиалов.");
}
Объект Filial имеет два основных метода, для получения идентификатора филиала (цело-численное значение) и его названия. В коде Java, указанном выше, выводятся все филиалы, в которых сертификат имеет права.
Следующий шаг – настройка веб сервиса на работу с конкретным филиалом.
int n=14; // Номер Московского филиала.
PermissionForAuthBean p=os.getPermission(n);
После настройки на филиал можно получать информацию о клиентах и их счетах. Объект PermissionForAuthBean мы использовать не будем.
// Получаем список клиентов.
Client[] cs=os.getClients();
if(cs!=null) {
System.out.println("Количество клиентов "+cs.length);
for(Client c:cs) {
// Выводим идентификатор клиента и его название.
System.out.print("\t"+c.getId()+"\t'"+c.getDisplayName()+"' - \t");
// Получаем список счетов клиента.
Account[] as=c.getAccounts();
if(as!=null) {
// Выводим номера счетов через пробел.
for(Account a:as) {
System.out.print(a.getCode()+" ");
}
}
System.out.println();
}
} else {
System.out.println("Нет клиентов.");
}
Теперь, имея номер счета, мы можем получить выписку по нему за указанный период време-ни при помощи функции getExctract класса OLWS. Данная функция принимает три строко-вых параметра – номер счета, начальную дату и коечную дату и возвращает объект класса Exctract. Начальная и конечная даты должны быть в формате ДД.ММ.ГГГГ. Все документы конечной даты будут включены в выписку.
Exctract e=os. getExctract("00000000000000000000","24.05.2007","24.05.2007");
ExtractRow[] rs=e.getExctractRows();
В данном примере берется выписка по всем проводкам за 24 мая 2007 года.
Методы класса Exctract:
ExtractRow[] getExctractRows();
Date getFrom();
Date getTo();
String getAccount();
String getCurrency(); // Строковый код валюты
BigDecimal getInSaldo(); // Входящее сальдо
boolean isDebit(); // Дебет?
Методы класса ExctractRow:
String getPO(); // РО
DocHeader getDoc(); // Документ
String getAccount(); // Счет
BigDecimal getSummaRUR(); //
BigDecimal getConversion(); //
String getOuterAccount(); // Внешний счет
String getKB(); // КБ
String getDescription(); // Назначение
boolean isDebit(); // Дебет?
String getContragent(); // Контрагент
String getContragentINN(); // ИНН Контрагента