Foros del Web » Programando para Internet » PHP »

PHP y Web Service del SII

Estas en el tema de PHP y Web Service del SII en el foro de PHP en Foros del Web. Hola gente, a alguno le toco trabajar alguna vez con los web services del SII (Servicios de Impuestos Internos) de Chile? Consegui una libreria (xmlseclib) ...
  #1 (permalink)  
Antiguo 22/09/2009, 06:08
Avatar de sebasnob  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 27
Antigüedad: 16 años, 3 meses
Puntos: 0
PHP y Web Service del SII

Hola gente,
a alguno le toco trabajar alguna vez con los web services del SII (Servicios de Impuestos Internos) de Chile? Consegui una libreria (xmlseclib) para firmar facturas, que aparentemente las firma de manera correcta, pero no hay forma que el SII me las acepte, me devuelve siempre error.
Si a alguno le toco lidiar con esto y conoce la solucion, me daria una mano enorme.

Gracias.
  #2 (permalink)  
Antiguo 22/09/2009, 08:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: PHP y Web Service del SII

Pero cual es el error que te aparece. Puede ser un error basico que no necesariamente uno tiene que haber trabajado con ese servicio.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 22/09/2009, 11:00
Avatar de sebasnob  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 27
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: PHP y Web Service del SII

El problema que tengo es q no es algo basico, te cuento un poquito. Para trabajar en los servidores de ellos, primero me tengo q autenticar, para esto me dan 2 webservices, uno al cual se le solicita una semilla y otro al cual se le envia la semilla firmada y te devuelve un token, que es una especie de sesion con la cual podes operar con sus servidores. La semilla la pude obtener y con la libreria xmlsec la pude firmar, pero al enviarla al segundo webservice, este me retorna un error de que el xml enviado es invalido. Ya probe de enviarselo de mil formas pero no encuentro una q le guste. Lo peor es q no hay mucha info, ni siquiera algun schema contra el cual validarlo, por lo q se me esta haciendo muy pesado.
  #4 (permalink)  
Antiguo 22/09/2009, 11:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: PHP y Web Service del SII

¿Pero te indicaron algun formato de que debes como debes enviarlo? Te sugiero que postees el codigo que haces para crear la firma, tal vez alguien haya trabajado con xmlsec y te pueda indicar
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 23/09/2009, 05:21
Avatar de sebasnob  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 27
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: PHP y Web Service del SII

Gracias por interesarte...

Pego el codigo q utilizo para firmar:

Código PHP:
require(dirname(__FILE__) . '/../xmlseclibs.php');

if (
file_exists(dirname(__FILE__) . '/sign-basic-test.xml')) {
    
unlink(dirname(__FILE__) . '/sign-basic-test.xml');
}

$doc = new DOMDocument();

$doc->load(dirname(__FILE__) . '/basic-doc.xml');

$doc->loadXML($xml);

$objDSig = new XMLSecurityDSig();

$objDSig->setCanonicalMethod(XMLSecurityDSig::C14N);

$objDSig->addReference($docXMLSecurityDSig::SHA1);

$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
/* load private key */
$objKey->loadKey(dirname(__FILE__) . '/privkey.pem'TRUE);

/* if key has Passphrase, set it using $objKey->passphrase = <passphrase> " */

$objDSig->sign($objKey);

/* Add associated public key */
$objDSig->add509Cert(file_get_contents(dirname(__FILE__) . '/mycert.pem'));

$objDSig->appendSignature($doc->documentElement);
$doc->save(dirname(__FILE__) . '/sign-basic-test.xml');

$sign_output file_get_contents(dirname(__FILE__) . '/sign-basic-test.xml');
$sign_output_def file_get_contents(dirname(__FILE__) . '/sign-basic-test.res');
if (
$sign_output != $sign_output_def) {
    
//echo "NOT THE SAME";

y el xml que firmo (basic-doc.xml), es

Código HTML:
<?xml version="1.0"?>
<getToken>
	<item>
		<Semilla>1234567890123</Semilla>
	</item>
</getToken> 
Bueno gracias por cualquier ayuda q me puedan dar...
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:39.