Closed apokalipto closed 6 years ago
Ya intentó cambiando la versión del esquema en la URL a 4.2?
El problema no era con la firma. El problema era con el XML, y su codificación en base64 a la hora de enviarlo. La respuesta de rechazo debido a que "la firma del comprobante electrónico no es válida, NO NECESARIAMENTE se refiere a la firma digital en sí. Puede estar asociada a problemas con el XML. Adjunto algunas de las posibles causas.
2018-02-12T04:05:06-07600
<FacturaElectronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica.xsd">
Estoy con el tema del firmado de mis xml con la API de CRLibre y veo que aqui hablan del tema he indican que la firma se ejecuta correctamente con el codigo de abajo pero me quedan las dudas sobre los valores que van en los parametros podrian darme una luz de donde los consigo ya que no logro encontrar informacion de que debe ir ahi de antemano gracias
$cert = $argv[1]; // QUE INFORMACION COLOCO AQUI, DONDE LA CONSIGO?
$pin = $argv[2]; // QUE INFORMACION COLOCO AQUI DONDE LA CONSIGO?
$xmlIn = $argv[3]; //ESTA ES LA RUTA DEL XML QUE DESEO FIRMAR CORRECTO ?
$xmlOut = $argv[4];// ESTO ES DONDE DESEO QUE SE GUARDE MI XML FIRMADO?
`<?php include 'Firmadohaciendacr.php';
$cert = $argv[1]; // QUE INFORMACION COLOCO AQUI, DONDE LA CONSIGO?
$pin = $argv[2]; // QUE INFORMACION COLOCO AQUI DONDE LA CONSIGO?
$xmlIn = $argv[3]; //ESTA ES LA RUTA DEL XML QUE DESEO FIRMAR CORRECTO ?
$xmlOut = $argv[4];// ESTO ES DONDE DESEO QUE SE GUARDE MI XML FIRMADO?
$signer = new Firmadocr();
echo "Certificado: " . $cert . "\n";
echo "PIN: " . $pin . "\n";
echo "IN: " . $xmlIn . "\n";
echo "OUT: " . $xmlOut . "\n";
$signer->firmar($cert,$pin,$xmlIn,$xmlOut);
?>`
creo que me contesto solo, si no me equivoco los parámetros para firmar los obtenemos a a la hora de obtener el usuario y contraseña del ATV, primero vamos a ATV https://www.hacienda.go.cr/atv/login.aspx
luego seguimos los pasos para obtener el certificado digital llengo al menu COMPROBANTE ELECTRONICO/LLAVE CRIPTOGRAFICA DE PRUEBA/GENERAR LLAVE CRIPTOGRAFICA .
después de llenar la información del formulario con el PIN que solicita el cual colocamos en el parámetros $pinP12 y descargar el archivo que lleva como nombre la cedula del contribuyente , emisor y o persona que necesita el usuario y clave del atv y este archivo lleva extencion .p12 ejem: 310120005785.p12 el cual necesitamos guardar y luego debemos indicar la ruta de ese archivo en el parematro $p12Url . los otros 2 parámetros imagino que es mas fácil identificarlos, el parámetros $xmlIn solo es la ruta donde tenemos el XML que deseamos firmar y $xmlOut es la ruta donde se almacenara el xml ya firmado o al menos eso es lo que entiendo
`function signFE(){
require 'Firmadohaciendacr.php';
modules_loader("files");
$p12Url= filesGetUrl(params_get('p12Url')); //URL del archivo descargado del ATV de hacienda con extencion .p12 y lleva como nombre la cedula del controbuyente
$pinP12= params_get('pinP12'); //Pin del certificado, este el el pin que solicita la llave criptografica cuando ejecutamos el archivo .p12 que descargamos de ATV
$inXmlUrl= filesGetUrl(params_get('inXmlUrl')); //URL en el servidor donde esta el XML que se va a firmar
$outXmlUrl= params_get('outXmlUrl');//almacena la URL donde se almacena el XML con la firma
$tipodoc=params_get('tipodoc');// URL en el servidor donde va a salir el XML firmado
$fac = new Firmadocr();
$fac->firmar($p12Url, $pinP12,$inXmlUrl,$outXmlUrl,$tipodoc );
return $outXmlUrl;
} ?>`
@apokalipto Me podrías ayudar.. Seguí todos los consejos anteriores pero sigo sin poder tener respuesta acertada de hacienda. ind-estado": "rechazado" La firma del comprobante electrónico no es válida. Algún consejo?
eso a mi me paso y lo corregi revisa los encabezados de cada documento, todos los xml son iguales lo unico que varia son los encabezados y el tag de cierre, en CRLibre whatsapp publicaron una clase en php con cada encabezado, te lo pasaria pero ahorita estoy fuera de la compu,puede ser eso, algun espacio mal dado o enter mal dado. o usuarios y clave;de ATV malos , podrias volverlos a generar y volver a instalar el archivo .p12
El vie., 25 de may. de 2018 9:24 PM, asegurabadilla < notifications@github.com> escribió:
@apokalipto https://github.com/apokalipto Me podrías ayudar.. Seguí todos los consejos anteriores pero sigo sin poder tener respuesta acertada de hacienda. ind-estado": "rechazado" La firma del comprobante electrónico no es válida. Algún consejo?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/CRLibre/API_Hacienda/issues/5#issuecomment-392229017, or mute the thread https://github.com/notifications/unsubscribe-auth/AF94RLhbk9HxumI29JM5L_AhOhDSA-Kfks5t2LzpgaJpZM4SBDMG .
@lurobaca gracias por su respuesta. Este es el encabezado que estoy utilizando.
<FacturaElectronica
xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica.xsd">
Además cuando se codifica a Base64, también lo he echo como indica @apokalipto sin retornos de carro(\n). Estoy utilizando xades4j el código de @edennish.
Han encontrado una soluccion sobre este tema, me muestra un error al enviar el xml:
Saludos
vuelva a generar el certificado o verifique la ruta de acceso al mismo
2018-05-28 1:14 GMT-06:00 jparajeles notifications@github.com:
Han encontrado una soluccion sobre este tema, me muestra un error al enviar el xml:
:SSL certificate problem: unable to get local issuer certificate
Saludos
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/CRLibre/API_Hacienda/issues/5#issuecomment-392440489, or mute the thread https://github.com/notifications/unsubscribe-auth/AF94RJaX3OCswlNY_CSGRnwqRueSdQXYks5t26PmgaJpZM4SBDMG .
-- Luis Roberto Bastos C Bach.Informatica Empresarial Tecnico y desarrollador de software http://esneitec.com/
Alguno tiene un ejemplo de un documento valido que hayan probado contra staging? Este es lo genero yo, pero de igual forma no es valido para hacienda. Documento Firmado
Lo validamos contra https://apis.gometa.org/validar/ y es valido, la verdad no tenemos idea xq hacienda retorna ese error de manera generica
Cambiamos el formato de la fecha, corregimos unos montos, encabezados como los que mencionan arriba. Pero no tenemos la menor idea
Estoy en el mismo caso de nayrban.
Ya no se que más hacer más que arrancarme el pelo lol.
Alguno pudo firmar y enviar el comprobantwe exitosamente?
Me sucedió el mismo problema, al xml le faltaba la declaración de xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
estaba codificando en base64 el string
<FacturaElectronica xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/FacturaElectronica_V.4.2.xsd">
<Clave>
en lugar de codificar el string con la declaración de xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<FacturaElectronica xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/FacturaElectronica_V.4.2.xsd">
<Clave>
Al codificar en base64 la hilera que incluye la declaración de xml no me da el error :)
@gutiman, @nehemiascr: En la última actualización del API siguen presentando este problema?
Al final mi problema era similar al de @nehemiascr.
Yo guardaba el XML firmado en la DB y luego lo leía de ahí para enviarlo a hacienda. Resulta que la DB lo manoseaba y me le perdía la integridad a la firma.
Saludos.
La firma no es válida. Aquí adjunto los pasos que he estado siguiendo, para corroborar si a ustedes les sucede lo mismo cuando intenan firmar el documento.
Primero para efectos prácticos, hice un script en PHP para encapsular la funcionalidad del Firmador, y poder firmar el XML desde la línea de comando.
Los pasos concretos para reproducir el error:
php -q firmar.php <keyPath> <keyPassword> <xmlInPath> <xmlOutPath>
La respuesta es la siguiente:
Les comento que he estado teniendo el mismo problema con varias soluciones. También con implementaciones en Java:
Saben que podría estar pasando? A ustedes les da el mismo error? De antemano se les agradecen sus comentarios.