Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Обмен данными с банком в формате xml.


Рекомендуемые сообщения

Привет всем!!

Помогите пожалуйста разобраться со следующей проблемкой:

Обмен данными с банком в формате xml. :)

Как это выполняется, с помощью какой програмки....???

Помигите пожалуйта, это очень важно, в долгу не останусь :)

Ссылка на комментарий
Поделиться на другие сайты

В каком смисле "с какой програмки". Да вы вопрос в программирование задали, а о готовой программе спрашиваете? И вообще у банка надо спросить? Что хотите сделать, обично xml пользують за обмен информации между серверов - сервер банка и ваший уеб-сервер, но тогда вопрос вообще не о программе, а как сделать ваш уеб-сайт ( или вашу программу если вопрос не о веб ) работать с ним.

Уточните пожалуйста, xml - понятие большое, даже NotePad можеть сделать xml документа

Ссылка на комментарий
Поделиться на другие сайты

Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :)

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

Обьясните, если не сложно. :)

Ссылка на комментарий
Поделиться на другие сайты

Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :)

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

Обьясните, если не сложно. :)

Обично пользують для этого SOAP ( Simple Object Access Protocol ), но возможно пользуват любой XML протокол.

Для SOAP вам нужно подключить NuSOAP

Отправляете запрос, получаете ответ

У банка должен быт SOAP Server и описание протокола ( WSDL, сам SOAP server содержет его и показиваеть имена методов и параметры которые вам нужно отправлявать)

Чуть поподробнее про SOAP и как пользуват его в PHP могу обяснить вам завтро, так как мое време изтекло

Пока :)

Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

Значить есть сервер ( банк ) и клиент ( твой сайт )

Сервер поддерживаеть функции ( method )

Какие описано в WSDL

Пример можно просмотреть здесь:

https://www.smsbug.com/api/webservice.asmx

Клиент делаеть запрос к серверо, отсилая имя method-a которого хочеть пользуват и его параметри и получаеть ответь

Все это делаеться в виде XML, но NuSOAP делаеть из массива XML и из XML массив. это значить что ти просто отправляеш массив с параметров, которые нужни, и получаеш тоже массив.

Примерчик. Здесь WSDLUrl - адрес сервиса, hello - имя method-а, а массив name=>Scott - эго параметри, в этом случае 1 параметр с имены name и значение Scott.

<?phprequire_once('nusoap.php');$client = new soapclient( WSDLUtl, true);$result = $client->call('hello', array('name' => 'Scott'));print_r($result);?>

Если напишеш nusoap examples в поисковике, найдеш много примеров.

Надеюсь понял, если есть еще вопроси - пиши, я с SOAP много работал :blink:

Ссылка на комментарий
Поделиться на другие сайты

Привет, возник еще один вопросик:

как узнать где находиться WSDL файл?

или можеть я его сам должен написать?

Еще раз огромное спасибо!

Жду ответа... :(

Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

Привет,

Если ты делаеш сервер, то тебе нужно и сделать wsdl ( в общем WSDL - адрес самого сервера, надо только к адресу добавить ?WSDL )

Если работаеть с сервером другой организации, например банк, то они должни тебе сказать где находиться их WSDL

Например если работаеш с smsbug, то сервер у них https://www.smsbug.com/api/webservice.asmx а адрес, который нужно дать soapclient будеть:

$client = new soapclient( "https://www.smsbug.com/api/webservice.asmx?WSDL" , true);

Здесь есть примерчики создания и сервера, и клиента

http://www.scottnichol.com/nusoapprogwsdl.htm

В общем NuSOAP делаеть все, что нужно :(

Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

А что такое

content-length: zna4enie

в xml, какие значения он может принимать и как их задать из PHP?

это размер в байтов теле докуемнта

Рак работаеть http, сначало у тебе headers, потом body

в headers надо указать размер этого body

Если отправляеш файл, то это будеть filesize( имя-файла )

В случае с XML-ом, или любого текста, это будеть strlen( $data ), где $data - переменная, содержащая текста

Например:

$body = "<?xml version='1.0'?><response><test>OK</test></response>";header("Content-Type: text/xml; charset=ISO-8859-1");header("Content-Length: ".strlen($body) );echo $body;
Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

Можно ли запихнуть эти строки с размером тела в посылаемый XML пакет?

Нет ;)

Они должни быт в HTTP Header, а посылаемый пакет это убе тело.

Ничего сложного неть, если пользуеш NuSOAP он сам пропишеть content-type и content-length, если нет - надо просто сначало сгенерировать xml и записать его гдето, потом прочитать размер ( функция strlen() или filesize() ) отправить заголовки ( наконецто вспомнил как header по русски ), а потом и сам xml документ

Ссылка на комментарий
Поделиться на другие сайты

Попробовал встроить nusoap, сервер стал выводить ошибку:Fatal error: Cannot redeclare class soapclient in /home/vhosts/www.glousmob.md/public_html/nusoap/nusoap.php on line 7240

Что делать?

P.S. Мне уже стыдно, я столько вопросов задаю... надеюсь это последний :blushing:

Ссылка на комментарий
Поделиться на другие сайты

Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient?

Ссылка на комментарий
Поделиться на другие сайты

Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient?

Так если нельзя делать свой класс, как же тогда ввести параметры и их значения?

Ссылка на комментарий
Поделиться на другие сайты

Так если нельзя делать свой класс, как же тогда ввести параметры и их значения?

Назовыте его по другом, например MySoap :bye1:

А в общем, параметри массив ( аrray ), клас для их не нужен.... :g:

Ссылка на комментарий
Поделиться на другие сайты

Короче написал я скрипт без nusoap, посылает запрос, и даже без ошибок, но ответ не содержит информации, которую я запрашиваю...

<?php $client = new SoapClient("https://somehost.net/ClientAuthorization/BankPartnersWS.asmx?WSDL",array("trace"	  => 1,"exceptions" => 0));$param=array("Login"=>"login",	  "Password"=>"pass",	  "DateFrom"=>"01/05/07",	  "DateTo"=>"16/05/07");$client->getRegisters($param);print ($client); print "<pre>\n"; print "<table><tr><td width='200'><b>Request</b> :\n".htmlspecialchars($client->__getLastRequest()) ."\n"; print "<b>Response:</b>\n".htmlspecialchars($client->__getLastResponse())."\n";print "</td></tr></table>";  print "</pre>";?>

вот результат:

Object id #1Request : <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:getRegisters><ns1:Login>login</ns1:Login><ns1:Password>pass</ns1:Password><ns1:DateFrom>01/05/07</ns1:DateFrom><ns1:DateTo>16/05/07</ns1:DateTo></ns1:getRegisters></SOAP-ENV:Body></SOAP-ENV:Envelope> Response: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getRegistersResponse xmlns="http://tempuri.org/"><getRegistersResult /></getRegistersResponse></soap:Body></soap:Envelope>  

:bye1::g:

прочёл десятки статей, вроде правильно написал, а она не работает, что не так, не пойму...

Ссылка на комментарий
Поделиться на другие сайты

Кажеться здесь проблема надо искат в сервере и в документации его методах. Вы получаете ответь но ответь - пустой :g:

P.S. Попробувал отркыт tempuri.org - если это ваш сервиз, но он не работаеть, выдаеть ошибку

Ссылка на комментарий
Поделиться на другие сайты

Нет-нет, tempuri.com не сервер, вот сервер.

Хотя я зашёл на темпури.ком - ошибки не выдаёт.

Просмотрел документацию, даже на русский перевёл - вроде всё правильно. :g:

Изменено пользователем Artiom
Ссылка на комментарий
Поделиться на другие сайты

Так в чём же проблема, что не так? Почему ответ приходит пустой, если не трудно помоги разобраться до конца. :nerd:

Ссылка на комментарий
Поделиться на другие сайты

Вообщем с провайдером сервиса надо разговаривать?

Возможно вам нужен клиентский сертификать чтоб пользуват их сервис?

Ссылка на комментарий
Поделиться на другие сайты

У меня в офисе есть пропаченая версия NuSOAP, которая умеет работать с клиентских сертификатов. Прийду в понедельник на работе, залю изходники.

А пока можно поискать в интернете

Думаю это поможеть:

http://osdir.com/ml/php.nusoap.general/2006-12/msg00020.html

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...