Промсвязьбанк online

Другие вопросы

Открытое 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(); // ИНН Контрагента