PHP - Web service y xml

 
Vista:
sin imagen de perfil

Web service y xml

Publicado por Ramon (1 intervención) el 20/03/2015 16:16:48
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
require("sql-filtre.php");
$email = "loquesea@hotmail.com";
$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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Web service y xml

Publicado por tatigoliat (1 intervención) el 22/09/2017 03:03:14
Verifica la estructura del XML que debes enviar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar