PHP - Problema WebService NuSOAP + Certificado.

   
Vista:

Problema WebService NuSOAP + Certificado.

Publicado por Niko (2 intervenciones) el 16/01/2015 13:00:03
Hola buenos días, inicio este tema por la razón que describe el título.
En mi lugar de trabajo estamos implementando un web service para el pago online de diversas cuestiones.

El punto es el siguiente: si realizo la acción sin implementar el certificado, el WS se conecta perfectamente con el server externo, pero no me deja realizar nada (correctamente) por tratarme de un ente inhabilitado o inválido.
Si la conexión la realizo adjuntando el certificado, me da como error lo siguiente "Error: wsdl error: Getting https://XXX.XX.XX.XXX/gpservices/GPService?wsdl - HTTP ERROR: cURL ERROR: 77: error setting certificate verify locations: CAfile: CA.cer CApath: /etc/ssl/certs" (el certificado se encuentra instalado correctamente en nuestro servidor en el directorio que ahí se apunta).

Dejo el código .php de ambas opciones.

Sin implementar certificado:

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
require_once('lib/nusoap.php');
 
$client = new nusoap_client('https://200.45.17.242/gpservices/GPService?wsdl','wsdl');
 
$err = $client -> getError();
 
if($err){
    echo 'Error en Constructor: ' . $err ;
}
 
$ip_cliente = saberIp();
 
$armo_hash = $ip_cliente + $fecha + 'SECRET_KEY';
$armo_hash = sha1($armo_hash);
 
$request = array('SolicitudDePago' => array(
                                            'Producto' => array(
                                                                'IdProducto' => 'XX',
                                                                'Version' => '0000.0000',
                                            ),
                                            'Ente' => array(
                                                                'IdEnte' => 'XXX',
                                                                'Version' => '0000.0000',
                                            ),
                                            'TokenAutEnte' => array(
                                                                'TokenValue' => "'" . $armo_hash . "'",
                                                                'Timestamp' => "'" . $fecha . "'",
                                                                'ClienteIP' => "'" . $ip_cliente . "'",
                                            ),
                                            'Detalles' => array(
                                                                'FacturaLinkPagos' => array(
                                                                                        'Cpe' => '00000000000',
                                                                                        'Concepto' => '000',
                                                                                        'Referencia' => '000000000000000000',
                                                                                        'Importe' => '000000000000',
                                                                )
                                            )
                                        )
            );
                                    
$response = $client->call('solicitarPago', $request);                                    

if($client->fault){
    echo 'Fallo: ';
    print_r($response);
}
else{    
    //BUSCO ERRORES
    $err = $client->getError();
    if($err){        
        //MUESTRO ERROR
        echo 'Error: ' . $err ;
    } 
    else{        
        //MUESTRO RESULTADO
        echo '';
        print_r ($response);
    }
}  


Implementando certificado:

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
require_once('lib/nusoap.php');
 
$certificado = "CA_Red_Link.cer";
$certRequest = array('cainfofile' => $certificado);
 
$client = new nusoap_client('https://200.45.17.242/gpservices/GPService?wsdl','wsdl');
 
$err = $client -> getError();
 
if($err){
    echo 'Error en Constructor: ' . $err ;
}
 
$autentico = $client -> setCredentials('','','certificate',$certRequest);
 
$ip_cliente = saberIp();
 
$armo_hash = $ip_cliente + $fecha + 'SECRET_KEY';
$armo_hash = sha1($armo_hash);
 
$request = array('SolicitudDePago' => array(
                                            'Producto' => array(
                                                                'IdProducto' => 'XX',
                                                                'Version' => '0000.0000',
                                            ),
                                            'Ente' => array(
                                                                'IdEnte' => 'XXX',
                                                                'Version' => '0000.0000',
                                            ),
                                            'TokenAutEnte' => array(
                                                                'TokenValue' => "'" . $armo_hash . "'",
                                                                'Timestamp' => "'" . $fecha . "'",
                                                                'ClienteIP' => "'" . $ip_cliente . "'",
                                            ),
                                            'Detalles' => array(
                                                                'FacturaLinkPagos' => array(
                                                                                        'Cpe' => '00000000000',
                                                                                        'Concepto' => '000',
                                                                                        'Referencia' => '000000000000000000',
                                                                                        'Importe' => '000000000000',
                                                                )
                                            )
                                        )
            );
                                    
$response = $client->call('solicitarPago', $request);                                    

if($client->fault){
    echo 'Fallo: ';
    print_r($response);
}
else{    
    //BUSCO ERRORES
    $err = $client->getError();
    if($err){        
        //MUESTRO ERROR
        echo 'Error: ' . $err ;
    } 
    else{        
        //MUESTRO RESULTADO
        echo '';
        print_r ($response);
    }
}  


Espero puedan darme una pista, ya que hace días estamos parados en el mismo lugar. Googleando mucho no encontré la verdad, posiblemente buscando mal, y desde el ente "prestador" del WS se obtuvieron muchas menos opciones que las encontradas en el buscador.

Muchas gracias de antemano, y aguardo respuestas.
Saludos!
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

Problema WebService NuSOAP + Certificado.

Publicado por Niko (2 intervenciones) el 19/01/2015 12:00:36
Ninguna posible solución?
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