Buenos días tengo que pasarle unos datos por xml 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 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