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 de el servidor:
<?php
require_once('libs/nusoap.php');
$server = new nusoap_server;
$server->configureWSDL('InotificacionSIS', 'https://sis.sermepa.es/sis/InotificacionSIS.wsdl');
$server->wsdl->schemaTargetNamespace = 'https://sis.sermepa.es/sis/InotificacionSIS.wsdl';
$server->register('procesaNotificacionSIS',
array('value' => 'xsd:string'),
array('return' => 'xsd:string'),
'urn:InotificacionSIS',
'urn:InotificacionSIS#procesaNotificacionSIS');
function procesaNotificacionSIS($value){
if($value['Ds_Response'] == '0000'){
return "No ha habido ningun error";
}
else{
return "Ha ocurrido un error";
}
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
y este es el código del cliente:
<?php
require_once('libs/nusoap.php');
$url = "http://localhost/soap/server.php?wsdl";
$client = new nusoap_client($url);
$err = $client->getError();
if ($err) {
echo '<p><b>Error: ' . $err . '</b></p>';
}
$return = $client->call('procesaNotificacionSIS', "<Message><Request Ds_Version='0.0'>
<Fecha>01/04/2011</Fecha>
<Hora>16:57</Hora>
<Ds_SecurePayment>1</Ds_SecurePayment>
<Ds_Amount>345</Ds_Amount>
<Ds_Currency>978</Ds_Currency>
<Ds_Order>165446</Ds_Order>
<Ds_MerchantCode>123456</Ds_MerchantCode>
<Ds_Terminal>001</Ds_Terminal>
<Ds_Card_Country>724</Ds_Card_Country>
<Ds_Response>0000</Ds_Response>
<Ds_MerchantData>Alfombrilla para raton</Ds_MerchantData>
<Ds_Card_Type>C</Ds_Card_Type>
<Ds_TransactionType>1</Ds_TransactionType>
<Ds_ConsumerLanguage>1</Ds_ConsumerLanguage>
</Request>
</Message>");
echo $return;
?>
Agradezco vuestras respuestas.
Saludos.