Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2021
Galaxian Galaxian is offline
Miembro
 
Registrado: mar 2021
Posts: 52
Poder: 4
Galaxian Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
Hola,
Estoy usando los componentes de chilkat, he generado el xml pero a la hora firmarlo estoy usando el ejemplo que hay para factura electronica, pero creo que no es lo mismo, alguien que lo tenga funcionando puede indicarme como hacerlo o algún ejemplo?


Saludos
Échale un vistazo a esto: https://tools.chilkat.io/xmlDsigGen.cshtml

Solo tienes que coger la firma de uno de los ejemplos de TBAI y pegarla en la ventana. Después de generar la firma digital (la clava) puedes usar el ejemplo de factura-e para enviarlo.
Responder Con Cita
  #2  
Antiguo 13-07-2021
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Cita:
Empezado por Galaxian Ver Mensaje
Échale un vistazo a esto: https://tools.chilkat.io/xmlDsigGen.cshtml

Solo tienes que coger la firma de uno de los ejemplos de TBAI y pegarla en la ventana. Después de generar la firma digital (la clava) puedes usar el ejemplo de factura-e para enviarlo.

Muchisimas gracias, no conocia esa utilidad, es maravillosa :-)
Responder Con Cita
  #3  
Antiguo 13-07-2021
Avatar de b4aronDeLaBirr4
b4aronDeLaBirr4 b4aronDeLaBirr4 is offline
Miembro
 
Registrado: jul 2021
Posts: 67
Poder: 3
b4aronDeLaBirr4 Va por buen camino
Prueba firma XML Chilkat Tools C#

Anda, una herramienta bastante interesante! ¿Alguna directriz de alguien que la haya usado? He cogido un ejemplo oficial (Ejemplo_TicketBAI_79732487C_A2022_0399.xml) y me muestra esto con las opciones de .pfx/.p12 file y en C#:

Código PHP:
//  ----------------------------------------------------------------------
//  IMPORTANT: This generated example may require Chilkat v9.5.0.80 or later.
//  ----------------------------------------------------------------------
bool success true;
//  Load the XML to be signed from a string...
Chilkat.Xml xmlToSign = new Chilkat.Xml();
xmlToSign.LoadXml("...");

Chilkat.XmlDSigGen gen = new Chilkat.XmlDSigGen();

gen.SigLocation "T:TicketBai";
gen.SigLocationMod 0;
gen.SigId "Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-Signature";
gen.SigNamespacePrefix "ds";
gen.SigNamespaceUri "http://www.w3.org/2000/09/xmldsig#";
gen.SigValueId "Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-SignatureValue";
gen.SignedInfoCanonAlg "C14N";
gen.SignedInfoDigestMethod "sha256";

//  Set the KeyInfoId before adding references..
gen.KeyInfoId "Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-KeyInfo";

//  Create an Object to be added to the Signature.
Chilkat.Xml object1 = new Chilkat.Xml();
object1.Tag "xades:QualifyingProperties";
object1.AddAttribute("xmlns:xades","http://uri.etsi.org/01903/v1.3.2#");
object1.AddAttribute("Id","Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-QualifyingProperties");
object1.AddAttribute("Target","#Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-Signature");
object1.AddAttribute("xmlns:ds","http://www.w3.org/2000/09/xmldsig#");
object1.UpdateAttrAt("xades:SignedProperties",true,"Id","Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-SignedProperties");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningTime","TO BE GENERATED BY CHILKAT");
object1.UpdateAttrAt("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestMethod",true,"Algorithm","http://www.w3.org/2001/04/xmlenc#sha512");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestValue","TO BE GENERATED BY CHILKAT");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509IssuerName","TO BE GENERATED BY CHILKAT");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509SerialNumber","TO BE GENERATED BY CHILKAT");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Identifier","https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Description","");
object1.UpdateAttrAt("xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestMethod",true,"Algorithm","http://www.w3.org/2001/04/xmlenc#sha256");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestValue","Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyQualifiers|xades:SigPolicyQualifier|xades:SPURI","https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf");
object1.UpdateAttrAt("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat",true,"ObjectReference","#Reference-7e6f3481-4acc-47de-90fd-67878ad15e8e");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Description","");
object1.UpdateAttrAt("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Identifier",true,"Qualifier","OIDAsURN");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Identifier","urn:oid:1.2.840.10003.5.109.10");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Description","");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:MimeType","text/xml");
object1.UpdateChildContent("xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Encoding","");

gen.AddObject("",object1.GetXml(),"","");

//  -------- Reference 1 --------
gen.AddSameDocRef("","sha512","C14N","","http://www.w3.org/2000/09/xmldsig#Object");
gen.SetRefIdAttr("","Reference-7e6f3481-4acc-47de-90fd-67878ad15e8e");

//  -------- Reference 2 --------
gen.AddObjectRef("Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-SignedProperties","sha512","","","http://uri.etsi.org/01903#SignedProperties");

//  -------- Reference 3 --------
gen.AddSameDocRef("Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-KeyInfo","sha512","","","");

//  Provide a certificate + private key. (PFX password is test123)
Chilkat.Cert cert = new Chilkat.Cert();
success cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123");
if (
success != true) {
    
Debug.WriteLine(cert.LastErrorText);
    return;
}

gen.SetX509Cert(cert,true);

gen.KeyInfoType "X509Data+KeyValue";
gen.X509Type "Certificate";

//  Load XML to be signed...
Chilkat.StringBuilder sbXml = new Chilkat.StringBuilder();
xmlToSign.GetXmlSb(sbXml);

gen.Behaviors "CompactSignedXml,TransformSignatureXPath";

//  Sign the XML...
success gen.CreateXmlDSigSb(sbXml);
if (
success != true) {
    
Debug.WriteLine(gen.LastErrorText);
    return;
}

//  -----------------------------------------------

//  Save the signed XML to a file.
success sbXml.WriteFile("qa_output/signedXml.xml","utf-8",false);

Debug.WriteLine(sbXml.GetAsString());

//  ----------------------------------------
//  Verify the signatures we just produced...
Chilkat.XmlDSig verifier = new Chilkat.XmlDSig();
success verifier.LoadSignatureSb(sbXml);
if (
success != true) {
    
Debug.WriteLine(verifier.LastErrorText);
    return;
}

int numSigs verifier.NumSignatures;
int verifyIdx 0;
while (
verifyIdx numSigs) {
    
verifier.Selector verifyIdx;
    
bool verified verifier.VerifySignature(true);
    if (
verified != true) {
        
Debug.WriteLine(verifier.LastErrorText);
        return;
    }

    
verifyIdx verifyIdx 1;
}

Debug.WriteLine("All signatures were successfully verified."); 
Responder Con Cita
  #4  
Antiguo 13-07-2021
jamematen jamematen is offline
Registrado
 
Registrado: jun 2021
Posts: 1
Poder: 0
jamematen Va por buen camino
Firma desde el navegador

Hola a todos.
He llegado aquí buscando información sobre Tickebai y sin ninguna duda es el sitio con la mayor y mejor cantidad.
Después de repasar los mas de mil mensajes de este hilo y hacer algunas pruebas con vuestras aportaciones he llegado a un punto donde me atasco. A ver si me podéis echar una mano.
Necesito firmar el xml de ticketbai desde el navegador, veo que Chilkat genera código para Node.js pero no acabo de entender si ese código podría usarlo desde la parte del cliente (navegador) y tampoco tengo claro que tipo de licencia usa.
Por otra parte he encontrado un librería en github que si se puede usar desde el navegador: PeculiarVentures-xadesjs pero no acabo de encontrar la combinación de parámetros para que me genere la firma tal y como se muestra en los ejemplos. En concreto no consigo que me incluya la transformación: <ds:Transform Algorithm="h t t p://w w w. w3.org/TR/1999/REC-xpath-19991116">
<ds:XPath xmlns:ds="h t t p://w w w .w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath>
</ds:Transform>

Muchas gracias.
Responder Con Cita
  #5  
Antiguo 13-07-2021
Avatar de Eric Mtz
Eric Mtz Eric Mtz is offline
Miembro
 
Registrado: jun 2021
Ubicación: Vitoria-Gasteiz
Posts: 43
Poder: 0
Eric Mtz Va por buen camino
Cita:
Empezado por jamematen Ver Mensaje
Hola a todos.
He llegado aquí buscando información sobre Tickebai y sin ninguna duda es el sitio con la mayor y mejor cantidad.
Después de repasar los mas de mil mensajes de este hilo y hacer algunas pruebas con vuestras aportaciones he llegado a un punto donde me atasco. A ver si me podéis echar una mano.
Necesito firmar el xml de ticketbai desde el navegador, veo que Chilkat genera código para Node.js pero no acabo de entender si ese código podría usarlo desde la parte del cliente (navegador) y tampoco tengo claro que tipo de licencia usa.
Por otra parte he encontrado un librería en github que si se puede usar desde el navegador: PeculiarVentures-xadesjs pero no acabo de encontrar la combinación de parámetros para que me genere la firma tal y como se muestra en los ejemplos. En concreto no consigo que me incluya la transformación: <ds:Transform Algorithm="h t t p://w w w. w3.org/TR/1999/REC-xpath-19991116">
<ds:XPath xmlns:ds="h t t p://w w w .w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath>
</ds:Transform>

Muchas gracias.

¡¡Sangre nueva!!, sacrifiquémosle y hagamos la danza de BATUZ para que el pálpito de Keys se haga realidad.

Nah, es broma, bienvenido al foro, yo no te sé responder pero te deseo suerte igualmente.
Responder Con Cita
  #6  
Antiguo 13-07-2021
Avatar de b4aronDeLaBirr4
b4aronDeLaBirr4 b4aronDeLaBirr4 is offline
Miembro
 
Registrado: jul 2021
Posts: 67
Poder: 3
b4aronDeLaBirr4 Va por buen camino
Problema FirmaXadEsNet

Buenas! Estoy intentando firmar el documento en C# utilizando FirmaXadEsNet y cuando va a firmar con el certificado seleccionado, aparece este error:

Código PHP:
ERROR 2021-07-13 14:13:47,193 [26   Mvc.ExceptionHandling.AbpExceptionFilter Unable to cast object of type 'System.Security.Cryptography.RSACng' to type 'System.Security.Cryptography.RSACryptoServiceProvider'.
System.InvalidCastExceptionUnable to cast object of type 'System.Security.Cryptography.RSACng' to type 'System.Security.Cryptography.RSACryptoServiceProvider'.
   
at FirmaXadesNet.Crypto.Signer.SetSigningKey(X509Certificate2 certificate)
   
at FirmaXadesNet.Crypto.Signer..ctor(X509Certificate2 certificate
No sé si a alguien le ha ocurrido o le suena. He estado leyendo por ahí cosillas pero de momento nada lo ha resuelto así que cualquier comentario sobre el tema sería de ayuda!
Responder Con Cita
  #7  
Antiguo 13-07-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 129
Poder: 4
tejano Va por buen camino
Hola, no sé si os ha pasado alguno, cuando una de las bases es negativa me da EL error : B4_2000149-ImporteTotalFactura: El Importe total de la factura tiene un valor incorrecto para el valor de los campos Base imponible, Cuota IVA soportada e Importe compensación REAGYP suministrados, cuando realmente el importe total si es correcto.

Me esta pasando en todas en las que hay alguna base/cuota en negativo

<DatosFactura>
<DescripcionOperacion>MATERIAL SEGURIDAD</DescripcionOperacion>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
<ImporteTotalFactura>3770.65</ImporteTotalFactura>
</DatosFactura>
<IVA>
<DetalleIVA>
<CompraBienesCorrientesGastosBienesInversion>C</CompraBienesCorrientesGastosBienesInversion>
<InversionSujetoPasivo>N</InversionSujetoPasivo>
<BaseImponible>3152.24</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaIVASoportada>661.97</CuotaIVASoportada>
<CuotaIVADeducible>661.97</CuotaIVADeducible>
</DetalleIVA>
<DetalleIVA>
<CompraBienesCorrientesGastosBienesInversion>G</CompraBienesCorrientesGastosBienesInversion>
<InversionSujetoPasivo>N</InversionSujetoPasivo>
<BaseImponible>-36.00</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaIVASoportada>-7.56</CuotaIVASoportada>
<CuotaIVADeducible>-7.56</CuotaIVADeducible>
</DetalleIVA>
</IVA>
Responder Con Cita
  #8  
Antiguo 13-07-2021
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Cita:
Empezado por Galaxian Ver Mensaje
Échale un vistazo a esto: https://tools.chilkat.io/xmlDsigGen.cshtml

Solo tienes que coger la firma de uno de los ejemplos de TBAI y pegarla en la ventana. Después de generar la firma digital (la clava) puedes usar el ejemplo de factura-e para enviarlo.

No consigo encontrar el ejemplo para enviar el xml con Chilkat, alguien me puede indicar?
Responder Con Cita
  #9  
Antiguo 13-07-2021
yaedev yaedev is offline
Miembro
 
Registrado: ene 2020
Posts: 23
Poder: 0
yaedev Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
No consigo encontrar el ejemplo para enviar el xml con Chilkat, alguien me puede indicar?
Aquí hay un ejemplo para el envío para Bizkaia: https://www.example-code.com/vbnet/t..._send_POST.asp
Responder Con Cita
  #10  
Antiguo 15-07-2021
Avatar de Eric Mtz
Eric Mtz Eric Mtz is offline
Miembro
 
Registrado: jun 2021
Ubicación: Vitoria-Gasteiz
Posts: 43
Poder: 0
Eric Mtz Va por buen camino
Socorro

AYUDA: Necesito a alguien que haya logrado cruzar el corredor de Kessel en menos de 12 parsecs.
Estoy seriamente desesperado así que intentaré documentar mi situación lo mejor que pueda.

Estoy pausado con el envío del 140 de BATUZ desde hace una maldita eternidad, he visto lunas pasar sin lograr avances, así que recurro a vosotros para mendigar un poco de sensatez.

Os pongo en situación, hace ya un tiempo que he logrado realizar envíos exitosos a BATUZ con el modelo 240, así que todo el tema pre-envío de construir, almacenar, encadenar, comprimir, parsear y todas las gilipolleces que se les han podido ocurrido a batuz están correctamente implementadas.

El tema es que adapté las clases relacionadas con el 240 al 140, eso incluye la clase donde van insertadas las facturas, la cabecera del propio envío y hasta la clase a la que parseo la respuesta. Pues aún así y tras decenas de comprobaciones me devuelve un “Error 505” vamos que el servidor me manda a freír puñetas sin mirar tan siquiera el contenido del envío.

Supongo que detecta algo mal dentro de la propia solicitud pero de verdad que ya no sé que hacer, a mi juicio solo hay dos cosas que juegan un papel importante a la hora de ser rechazados por el servidor (¡Ojo! rechazados, ni siquiera devuelto con errores) una es el certificado y la otra es la información de la cabecera del envío.

CABECERA:
Lo único que cambié en la cabecera frente al 240 es el campo de "eus-bizkaia-n3-data" que tal y como indican en la documentación les he añadido el nombre y los apellidos.
(Creo que sobra decirlo pero en las pruebas uso datos reales)

Código:
request.Headers["Accept-Encoding"] = "gzip";
request.Headers["Content-Encoding"] = "gzip";
request.ContentType = "application/octet-stream";
request.Headers["eus-bizkaia-n3-version"] = "1.0";
request.Headers["eus-bizkaia-n3-content-type"] = "application/xml";
request.Headers["eus-bizkaia-n3-data"] = "{\"con\": \"LROE\", \"apa\": \"1.1\", \"inte\": {\"nif\": \"00000000N\",\"nrs\":\"Perico\",\"ap1\": \"De los\",\"ap2\": \"Palotes\"},\"drs\": {\"mode\": \"140\",\"ejer\": \"2021\"}}";
CERTIFICADO:
Preparaos que vienen curvas, probé con varios DNIs electrónicos, de autónomos y todo por si acaso fuera ese el error, solicité mi propio certificado de persona física y hasta con los certificados de pruebas que me han recomendado en éste foro, TODOS ME HAN DEVUELTO "Error 505"!!

Ando perdidísimo, no se si el error está en el certificado o he insertado en algún momento el correcto y hay algún otro dato mal, o si BATUZ me tiene manía... Ya no sé nada, al menos con el 240 el servidor me decía cosas como "El modelo está mal introducido" o "Faltan datos en tal sitio" pero ahora me rechazan cual leproso sin mirarme ni a la cara, ayuda, estoy a un par de envíos incorrectos de enviar un mensaje a batuz... pero de esos con la cara encapuchada y la voz distorsionada.
Responder Con Cita
  #11  
Antiguo 16-07-2021
Avatar de b4aronDeLaBirr4
b4aronDeLaBirr4 b4aronDeLaBirr4 is offline
Miembro
 
Registrado: jul 2021
Posts: 67
Poder: 3
b4aronDeLaBirr4 Va por buen camino
Al no haber empezado con Batuz pues lo único que pruebes con el "sello_entidad_act.p12" de desarrollo de Izenpe (link) porque no te puedo ayudar con mucho más sorry...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3557 Hace 2 Semanas 17:42:47
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 13:08:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi