Foros del Web » Programando para Internet » PHP »

Web servicies con PHP

Estas en el tema de Web servicies con PHP en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 04/10/2012, 17:33
 
Fecha de Ingreso: agosto-2012
Ubicación: Lima
Mensajes: 25
Antigüedad: 11 años, 7 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?
  #2 (permalink)  
Antiguo 05/10/2012, 00:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Web servicies con PHP

Donde te aparece ele error en etu servidor local o en el remoto?

Si es el remoto asegurate que tienes habilitado el acceso a URL externas. Usa phpinfo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 05/10/2012, 10:35
 
Fecha de Ingreso: agosto-2012
Ubicación: Lima
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: Web servicies con PHP

me sale en mi servidor remoto, lo curioso es que estuvo funcionando por 2 semanas y dejo de funcionar.

en mi phpinfo esta así:

curl

cURL support enabled
cURL Information 7.15.5
Age 2
Features
AsynchDNS No
Debug No
GSS-Negotiate Yes
IDN Yes
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols tftp, ftp, telnet, dict, ldap, http, file, https, ftps
Host x86_64-redhat-linux-gnu
SSL Version OpenSSL/0.9.8b
ZLib Version 1.2.3

Etiquetas: html, mysql, registro, sql
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 19:09.