Jump to content
СофтФорум - всё о компьютерах и не только

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


Recommended Posts

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

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

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

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

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

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

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

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

Пока :)

Edited by Darhazer
Link to comment
Share on other sites

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

Сервер поддерживаеть функции ( 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:

Link to comment
Share on other sites

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

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

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

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

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

Edited by Darhazer
Link to comment
Share on other sites

Привет,

Если ты делаеш сервер, то тебе нужно и сделать 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 делаеть все, что нужно :(

Edited by Darhazer
Link to comment
Share on other sites

А что такое

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;
Edited by Darhazer
Link to comment
Share on other sites

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

Нет ;)

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

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

Link to comment
Share on other sites

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

Что делать?

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Короче написал я скрипт без 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:

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

Edited by Artiom
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...