• Domingo 22 de Diciembre de 2024, 14:32

Autor Tema:  Leer XML con nuSoap  (Leído 5749 veces)

JuanImp

  • Visitante
Leer XML con nuSoap
« en: Martes 22 de Febrero de 2011, 23:36 »
0
Hola, llevo todo el día buscando por internet y rompiéndome la cabeza y no he encontrado la solución a este problema:
necesito crear un servidor SOAP para la recepción de la notificación de pagos de un TPV virtual, la página del TPV envía un string con formato XML y en mi servidor nusoap tengo que comprobar el código de error, el problema es que no consigo leer este string desde el servidor.
Este es el código del servidor:
Código: PHP
  1. <?php
  2. require_once('libs/nusoap.php');
  3. $server = new nusoap_server;
  4. $server->configureWSDL('InotificacionSIS', 'url_del_namespace');
  5. $server->wsdl->schemaTargetNamespace = 'url_del_namespace';
  6. $server->register('procesaNotificacionSIS',
  7.             array('value' => 'xsd:string'),
  8.             array('return' => 'xsd:string'),
  9.             'urn:InotificacionSIS',
  10.             'urn:InotificacionSIS#procesaNotificacionSIS');
  11.  
  12. function procesaNotificacionSIS($value){
  13.    
  14.     if($value['Ds_Response'] == '0000'){
  15.         return "No ha habido ningun error";
  16.     }
  17.     else{
  18.          return "Ha ocurrido un error";
  19.     }
  20. }
  21.  
  22. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  23.  
  24. $server->service($HTTP_RAW_POST_DATA);
  25. ?>
  26.  

y este es el código del cliente:
Código: PHP
  1. <?php
  2. require_once('libs/nusoap.php');
  3.  
  4. $url = "./soap/server.php?wsdl";
  5. $client = new nusoap_client($url);
  6.  
  7. $err = $client->getError();
  8.  
  9. if ($err) {
  10.     echo '<p><b>Error: ' . $err . '</b></p>';
  11. }
  12.  
  13. $return = $client->call('procesaNotificacionSIS', "<Message><Request Ds_Version='0.0'>
  14.        <Fecha>01/04/2011</Fecha>
  15.        <Hora>16:57</Hora>
  16.        <Ds_SecurePayment>1</Ds_SecurePayment>
  17.        <Ds_Amount>345</Ds_Amount>
  18.        <Ds_Currency>978</Ds_Currency>
  19.        <Ds_Order>165446</Ds_Order>
  20.        <Ds_MerchantCode>123456</Ds_MerchantCode>
  21.        <Ds_Terminal>001</Ds_Terminal>
  22.        <Ds_Card_Country>724</Ds_Card_Country>
  23.        <Ds_Response>0000</Ds_Response>
  24.        <Ds_MerchantData>Alfombrilla para raton</Ds_MerchantData>
  25.        <Ds_Card_Type>C</Ds_Card_Type>
  26.        <Ds_TransactionType>1</Ds_TransactionType>
  27.        <Ds_ConsumerLanguage>1</Ds_ConsumerLanguage>
  28.    </Request>
  29. </Message>");
  30.  
  31. echo $return;
  32. ?>
  33.  


Agradezco vuestras respuestas.
Saludos.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Leer XML con nuSoap
« Respuesta #1 en: Miércoles 23 de Febrero de 2011, 12:17 »
0
Pero que error te devuelve?

retorna el string que envias como parametro para asegurar que si estas recibiendo el parametro.

Código: PHP
  1.  function procesaNotificacionSIS($value){
  2.     return $value;
  3.  }
  4.  

si es asi, puedes leer la cadena como  XML, usando simplexml,

http://www.php.net/manual/es/function.s ... string.php

o si requiere un manejo mas complejo de XML

http://www.php.net/manual/es/refs.xml.php


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

JuanImp

  • Visitante
Re: Leer XML con nuSoap
« Respuesta #2 en: Jueves 24 de Febrero de 2011, 17:19 »
0
Hola,
lo primero gracias por la respuesta, efectivamente al final conseguí leer la cadena con SimpleXMLElement y ahora se que la conexión al servicio es correcta lo que me da problemas ahora es el envió de otro XML de vuelta al TPV y no se si tiene que ver con la forma de enviar el string:
Código: PHP
  1. $server->register('procesaNotificacionSIS',
  2.             array('value' => 'xsd:string'),
  3.             array('return' => 'xsd:string'),
  4.             'urn:InotificacionSIS',
  5.             'urn:InotificacionSIS#procesaNotificacionSIS');
  6.  
o será un problema de recepción de los datos, me he puesto en contacto con el soporte del TPV y cuando tenga una respuesta la publicaré aquí por si alguien tiene el mismo problema.
Saludos.

arkascr

  • Nuevo Miembro
  • *
  • Mensajes: 1
  • Nacionalidad: mx
    • Ver Perfil
Re: Leer XML con nuSoap
« Respuesta #3 en: Sábado 26 de Febrero de 2011, 15:23 »
0
Hola que tal, me gustaria que pudieras postear tu codigo JuanImp, ya que tengo el mismo problema y necesito realizar la misma funcion, el recibir un String que contiene un XML y en donde tengo que devolver como respuesta otro XML.

Saludos y gracias

JuanImp

  • Visitante
Re: Leer XML con nuSoap
« Respuesta #4 en: Viernes 4 de Marzo de 2011, 10:45 »
0
Hola, pues de momento no he conseguido solucionarlo, el código es el mismo solo que el return es la cadena que el servidor del TPV me pide.
arkascr estas trabajando con un TPV de sermepa?