Foros del Web » Programando para Internet » PHP »

DUPLICADO: Webservice

Estas en el tema de DUPLICADO: Webservice en el foro de PHP en Foros del Web. Buenas tardes tengo que pasar unos datos xml por webservice a una pasarela de pago, y el envio me lanza el siguiente error: PHP Fatal ...
  #1 (permalink)  
Antiguo 20/03/2015, 09:00
 
Fecha de Ingreso: julio-2002
Mensajes: 83
Antigüedad: 21 años, 9 meses
Puntos: 0
DUPLICADO: Webservice

Buenas tardes tengo que pasar unos datos xml por webservice a una pasarela de pago, y el envio me lanza el siguiente error:

PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\XVRT\dominio.com\Html\paygold\envio.php:55
Stack trace:
#0 D:\XVRT\dominio.com\Html\paygold\envio.php(55): SimpleXMLElement->__construct('')
#1 {main}
thrown in D:\XVRT\dominio.com\Html\paygold\envio.php on line 55
(El error es la ejectura la instrucción: $oXML = new SimpleXMLElement($sXML);)



El código es el siguiente:
inicio<br />
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require("sql-filtre.php");
$email = "[email protected]";
$movil = "333333333";
$dinero = 1500;

$Codigo_Comercio = '1111111111';
$Order_Id = '151';
$url = 'https://sis-i.redsys.es:25443/sis/services/SerClsWSEntrada';
$Clave_Comercio = 'qweryasdf0123456789';

//Funcion que hace el curl
function download_page($url,$xml){
$url = 'https://sis-i.redsys.es:25443/sis/services/SerClsWSEntrada';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "entrada=$xml");
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//End funcion que hace el curl

//...

$firma_comercio = sha1($dinero.$Order_Id.$Codigo_Comercio.'978'.$url .$movil.$email.$Order_Id.$Clave_Comercio);

$xml = "<?xml version='1.0' encoding='UTF-8'?>";
$xml .= "<DATOSENTRADA>";
$xml .= "<DS_MERCHANT_AMOUNT>$dinero</DS_MERCHANT_AMOUNT>";
$xml .= "<DS_MERCHANT_ORDER>$Order_Id</DS_MERCHANT_ORDER>";
$xml .= "<DS_MERCHANT_MERCHANTCODE>$Codigo_Comercio</DS_MERCHANT_MERCHANTCODE>";
$xml .= "<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>";
$xml .= "<DS_MERCHANT_MERCHANTURL>$url</DS_MERCHANT_MERCHANTURL>";
$xml .= "<DS_MERCHANT_TERMINAL>001</DS_MERCHANT_TERMINAL>";
$xml .= "<DS_MERCHANT_MOBILE>$movil</DS_MERCHANT_MOBILE>";
$xml .= "<DS_MERCHANT_MAIL>$email</DS_MERCHANT_MAIL>";
$xml .= "<DS_MERCHANT_TRANSACTIONTYPE>F</DS_MERCHANT_TRANSACTIONTYPE>";
$xml .= "<DS_MERCHANT_MERCHANTSIGNATURE>$firma_comerci o</DS_MERCHANT_MERCHANTSIGNATURE>";
$xml .= "</DATOSENTRADA>";
echo $xml;

$url = 'https://sis-i.redsys.es:25443/sis/services/SerClsWSEntrada';

$sXML = download_page($url,$xml);
$oXML = new SimpleXMLElement($sXML);
//The service response code
echo '<br><xmp>'.$sXML.'</xmp>';
$arryaOxml = get_object_vars($oXML);
$codigo = $arryaOxml['CODIGO'];

if(isset($arrayOperacion['Ds_Response']))
$respuesta = $arrayOperacion['Ds_Response'];

if(isset($arrayOperacion['Ds_Response']) && (int)$codigo == 0 && (int)$respuesta == 0 ){
$string_to_save = 'Operacion exitosa.';
$status = 1;
}elseif(isset($arrayOperacion['Ds_Response']) && (int)$respuesta == 190){
$string_to_save = 'Operacion denegada por el banco.';
$status = 0;
}else{
$string_to_save = 'Error en la operacion: '.$codigo;
$status = 0;
}



?>


Alguien sabe porqué sucede.

Gracias y un saludo
  #2 (permalink)  
Antiguo 20/03/2015, 09:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Webservice

Tema duplicado: http://www.forosdelweb.com/f18/probl...l-xml-1123581/

Por favor, evita duplicar temas, que nadie te haya respondido aún significa que es probable que no se entienda bien tu problema, o bien, no todos tienen la experiencia en descifrar lo que sucede.

Es obvio que $sXML viene vacío y por eso no construye nada, el error te da la pista:
Código PHP:
Ver original
  1. #0 D:\XVRT\dominio.com\Html\paygold\envio.php(55): SimpleXMLElement->__construct('')

Entonces el problema es tu función que descarga dicho XML, así que primero debes asegurarte de que eso funcione.

Corrige un problema a la vez.

PDTA: y evita duplicar temas, por favor lee las normas del foro.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: html, sql, webservice
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:25.