Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2012, 17:33
Gerwal
 
Fecha de Ingreso: agosto-2012
Ubicación: Lima
Mensajes: 25
Antigüedad: 11 años, 8 meses
Puntos: 6
Web servicies con PHP

Hola gentita linda que tal?

Bueno me estoy rompiendo la cabeza implementado un WS, estoy haciendo una pasarela de pagos, para el hotel donde trabajo, el problema esta cuando intento cancelar con Tarjeta Visa, ya que ellos te devuelven la respuesta con un WS.

el error que sale es el siguiente:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://cal2testing.sytes.net/WSGenerarEticket/WSEticket.asmx?WSDL' : failed to load external entity "http://cal2testing.sytes.net/WSGenerarEticket/WSEticket.asmx?WSDL" in /var/www/html/vichayito/paginaUno.php:53 Stack trace: #0 /var/www/html/vichayito/paginaUno.php(53): SoapClient->SoapClient('http://cal2test...') #1 {main} thrown in /var/www/html/vichayito/paginaUno.php on line 53

el codigo es:


Código PHP:
<?php
    session_start
(); 
    include(
'lib.inc');

    
error_reporting(E_ALL);
    
ini_set("display_errors"1);
    
ini_set('date.timezone''America/Lima'); 
    
header'Content-Type: text/html;charset=utf-8' );
    
$total=$_POST['total'];
    
$tarjeta=$_POST['tarjeta'];
    
$habitacion=$_POST['tarjeta'];
?>
<?php

    
if ($tarjeta=='Visa') {
        include 
'conexion/connreservas.php';
        
conectar();
        
//Se asigna el código de comercio y Número de pedido
        
$consultaid=mysql_query("select ID from visa");
        while(
$idcon=mysql_fetch_row($consultaid)){
            
$numid=$idcon[0];
        }
        
        
$numid++;
        
//$numPedido= rand(1000,2000);//$_POST["numPedido"];//'622';
        
$numPedido=$numid;
        
        
mysql_query("INSERT INTO visa(reserva) VALUES ('$numPedido')");
        
desconectar();
        
$codTienda CODIGO_TIENDA;
        
$mount number_format(round($total*100)/100,2);
    
        
//Se arma el XML de requerimiento
        
$xmlIn "";
        
$xmlIn $xmlIn "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
        
$xmlIn $xmlIn "<nuevo_eticket>";
        
$xmlIn $xmlIn "    <parametros>";
        
$xmlIn $xmlIn "        <parametro id=\"CANAL\">3</parametro>";
        
$xmlIn $xmlIn "        <parametro id=\"PRODUCTO\">1</parametro>";
        
$xmlIn $xmlIn "        ";
        
$xmlIn $xmlIn "        <parametro id=\"CODTIENDA\">" $codTienda "</parametro>";
        
$xmlIn $xmlIn "        <parametro id=\"NUMORDEN\">" $numPedido "</parametro>";
        
$xmlIn $xmlIn "        <parametro id=\"MOUNT\">" $mount "</parametro>";
        
$xmlIn $xmlIn "        <parametro id=\"DATO_COMERCIO\">JOSE</parametro>";
        
$xmlIn $xmlIn "    </parametros>";
        
$xmlIn $xmlIn "</nuevo_eticket>";
        
        
//Se asigna la url del servicio
        //En producción cambiará la URL
        
$servicio URL_WSGENERAETICKET_VISA ;
        
        
//Invocación al web service
        
$client = new SoapClient($servicio);
        
//print_r($client->GeneraEticket);
        //exit;
        //parametros de la llamada
        
$parametros=array(); 
        
$parametros['xmlIn']= $xmlIn;
        
//Aqui captura la cadena de resultado
        
$result $client->GeneraEticket($parametros);
        
//Muestra la cadena recibida
        //echo 'Cadena de respuesta: ' . $result->GeneraEticketResult . '<br>' . '<br>';
        
echo file_get_contents('http://cal2testing.sytes.net/WSGenerarEticket/WSEticket.asmx?WSDL');
        
        
//Aqui carga la cadena resultado en un XMLDocument (DOMDocument)
        
$xmlDocument = new DOMDocument();
        
        if (
$xmlDocument->loadXML($result->GeneraEticketResult)){
            
/////////////////////////[MENSAJES]////////////////////////
            //Ejemplo para determinar la cantidad de mensajes en el XML
            
$iCantMensajesCantidadMensajes($xmlDocument);
            
//echo 'Cantidad de Mensajes: ' . $iCantMensajes . '<br>';
            
            //Ejemplo para mostrar los mensajes del XML 
            
for($iNumMensaje=0;$iNumMensaje $iCantMensajes$iNumMensaje++){
                echo 
'Mensaje #' . ($iNumMensaje +1) . ': ';
                echo 
RecuperaMensaje($xmlDocument$iNumMensaje+1);
                echo 
'<BR>';
            }
            
/////////////////////////[MENSAJES]////////////////////////
            
            
if ($iCantMensajes == 0){
                
$EticketRecuperaEticket($xmlDocument);
                
//echo 'Eticket: ' . $Eticket;
                
                
$htmlhtmlRedirecFormEticket($Eticket);
                echo 
$html;
                
                exit;
            }
                    
        }else{
            echo 
"Error cargando XML";
        }    
    }

?>


<!-- Localized -->

<?php
    
//Funcion de ejemplo que obtiene la cantidad de operaciones
    
function CantidadOperaciones($xmlDoc$numPedido){
        
$cantidaOpe0;
        
$xpath = new DOMXPath($xmlDoc);
        
$nodeList $xpath->query('//pedido[@id="' $numPedido '"]'$xmlDoc);
        
        
$XmlNode$nodeList->item(0);
        
        if(
$XmlNode==null){
            
$cantidaOpe0;
        }else{
            
$cantidaOpe$XmlNode->childNodes->length;
        }
        return 
$cantidaOpe
    }
    
    
//Funcion que recupera el valor de uno de los campos del XML de respuesta
    
function RecuperaCampos($xmlDoc,$sNumOperacion,$nomCampo){
            
$strReturn "";
            
            
$xpath = new DOMXPath($xmlDoc);
            
$nodeList $xpath->query("//operacion[@id='" $sNumOperacion "']/campo[@id='" $nomCampo "']");
            
            
$XmlNode$nodeList->item(0);
            
            if(
$XmlNode==null){
                
$strReturn "";
            }else{
                
$strReturn $XmlNode->nodeValue;
            }
            return 
$strReturn;
    }
    
//Funcion que muestra en pantalla los parámetros de cada operacion
    //asociada al Número de pedido consultado
    
function PresentaResultado($xmlDoc$iNumOperacion){
            
//ESTA FUNCION ES SOLAMENTE UN EJEMPLO DE COMO ANALIZAR LA RESPUESTA
            
$sNumOperacion "";
    
            
$sNumOperacion $iNumOperacion;
    
            
$strValor "";
            
$strValor $strValor "Respuesta: " RecuperaCampos($xmlDoc$sNumOperacion"respuesta") . "<BR>";
            
$strValor $strValor "cod_tienda: " RecuperaCampos($xmlDoc$sNumOperacion"cod_tienda") . "<BR>";
            
$strValor $strValor "nordent: " RecuperaCampos($xmlDoc$sNumOperacion"nordent") . "<BR>";
            
$strValor $strValor "cod_accion: " RecuperaCampos($xmlDoc$sNumOperacion"cod_accion") . "<BR>";
            
$strValor $strValor "pan: " RecuperaCampos($xmlDoc$sNumOperacion"pan") . "<BR>";
            
$strValor $strValor "eci: " RecuperaCampos($xmlDoc$sNumOperacion"eci") . "<BR>";
            
$strValor $strValor "cod_autoriza: " RecuperaCampos($xmlDoc$sNumOperacion"cod_autoriza") . "<BR>";
            
$strValor $strValor "ori_tarjeta: " RecuperaCampos($xmlDoc$sNumOperacion"ori_tarjeta") . "<BR>";
            
$strValor $strValor "nom_emisor: " RecuperaCampos($xmlDoc$sNumOperacion"nom_emisor") . "<BR>";
            
$strValor $strValor "dsc_eci: " RecuperaCampos($xmlDoc$sNumOperacion"dsc_eci") . "<BR>";
            
$strValor $strValor "cod_rescvv2: " RecuperaCampos($xmlDoc$sNumOperacion"cod_rescvv2") . "<BR>";
            
$strValor $strValor "imp_autorizado: " RecuperaCampos($xmlDoc$sNumOperacion"imp_autorizado") . "<BR>";
            
$strValor $strValor "fechayhora_tx: " RecuperaCampos($xmlDoc$sNumOperacion"fechayhora_tx") . "<BR>";
    
            echo(
$strValor);
    }
    
    
//Funcion de ejemplo que obtiene la cantidad de mensajes
    
function CantidadMensajes($xmlDoc){
        
$cantMensajes0;
        
$xpath = new DOMXPath($xmlDoc);
        
$nodeList $xpath->query('//mensajes'$xmlDoc);
        
        
$XmlNode$nodeList->item(0);
        
        if(
$XmlNode==null){
            
$cantMensajes0;
        }else{
            
$cantMensajes$XmlNode->childNodes->length;
        }
        return 
$cantMensajes
    }
    
//Funcion que recupera el valor de uno de los mensajes XML de respuesta
    
function RecuperaMensaje($xmlDoc,$iNumMensaje){
        
$strReturn "";
            
            
$xpath = new DOMXPath($xmlDoc);
            
$nodeList $xpath->query("//mensajes/mensaje[@id='" $iNumMensaje "']");
            
            
$XmlNode$nodeList->item(0);
            
            if(
$XmlNode==null){
                
$strReturn "";
            }else{
                
$strReturn $XmlNode->nodeValue;
            }
            return 
$strReturn;
    }
    
    
//Funcion que recupera el valor del Eticket
    
function RecuperaEticket($xmlDoc){
        
$strReturn "";
            
            
$xpath = new DOMXPath($xmlDoc);
            
$nodeList $xpath->query("//registro/campo[@id='ETICKET']");
            
            
$XmlNode$nodeList->item(0);
            
            if(
$XmlNode==null){
                
$strReturn "";
            }else{
                
$strReturn $XmlNode->nodeValue;
            }
            return 
$strReturn;
    }
?>
alguien me ayuda o da pistas de como se resuelve?