Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/10/2011, 13:55
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Erro con soap "Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERRO

¿Cuál es el código?

Edito:

También traté la dirección que colocas en el enlace y me dió problemas al cargarla, ¿como resolví? Usé file_get_contents para obtener los datos. Primero debes crear un archivo e indicarle solo esto
Código PHP:
Ver original
  1. <?php
Buscas la parte que dice Registered PHP Streams y debe decir https. Si no aparece debes activar el SSL. Para window una forma como muchos mencionan que resolvieron un problema que tiene file_get_contents con url seguras es primero verificando si existe el dll php_openssl.dll y descomendando en el php.ini la extensión. Cuando ya en Registered PHP Streams aparezca https, solo es cuestión de añadir un archivo que tenga
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml; charset=iso-8859-1');
  3. echo file_get_contents('https://esitef-homologacao.softwareexpress.com.br/e-sitef/Payment2?wsdl');

Y luego en el archivo que verifica el Soap solo tienes que hacer algo como
Código PHP:
Ver original
  1. <?php
  2. $soap = new SoapClient('http://localhost/archivoConFileGetContents.php');
  3. var_dump($soap->__getFunctions());
Y me muestra algo como
Cita:

array(5) {
[0]=>
string(77) "beginTransactionResponse beginTransaction(beginTransaction $beginTransaction)"
[1]=>
string(69) "confirmPaymentResponse confirmPayment(confirmPayment $confirmPayment)"
[2]=>
string(65) "doHashPaymentResponse doHashPayment(doHashPayment $doHashPayment)"
[3]=>
string(49) "doPaymentResponse doPayment(doPayment $doPayment)"
[4]=>
string(49) "getStatusResponse getStatus(getStatus $getStatus)"
}
De ahí puedes continuar con lo demás...

Nota: No tienes que usar file_get_contents, puedes usar cURL, un ejemplo sencillo sería algo como
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml; charset=iso-8859-1');
  3. $request = curl_init();
  4. (
  5.     CURLOPT_URL => 'https://esitef-homologacao.softwareexpress.com.br/e-sitef/Payment2?wsdl',
  6.     CURLOPT_RETURNTRANSFER => true,
  7.     CURLOPT_SSL_VERIFYPEER => false
  8. ));
  9. $response = curl_exec($request);
  10. curl_close($request);
  11. echo $response;
Si te da problemas cURL, entonces debes indicar un archivo que tenga los certificados en ese caso este código te debería servir
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml; charset=iso-8859-1');
  3. $request = curl_init();
  4. (
  5.     CURLOPT_URL => 'https://esitef-homologacao.softwareexpress.com.br/e-sitef/Payment2?wsdl',
  6.     CURLOPT_RETURNTRANSFER => true,
  7.     CURLOPT_SSL_VERIFYPEER => true,
  8.     CURLOPT_CAINFO => 'cacert.pem',
  9. ));
  10. $response = curl_exec($request);
  11. curl_close($request);
  12. echo $response;
El archivo cacert.pem lo debes guardar en el mismo lugar o si quieres guardarlo en otro lugar lo importante es que le digas la dirección completa en CURLOPT_CAINFO. Para conseguir el archivo cacert.pem puedes hacerlo en http://curl.haxx.se/docs/caextract.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 23/10/2011 a las 14:52