FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Factura Electronica AFIP Resuelto/Funcionando
Sin ocx, sin componentes 100% codigo delphi
Tengo el codigo en delphi para solicitar cae y demas funciones del webservice de Afip funcionando 100% codigo puro de delphi sin OCX ni Componentes Raros. Saludos.. PD: Enseguida pondré enlace al código, que lo subiré al FTP. . Última edición por Casimiro Notevi fecha: 15-07-2015 a las 00:01:43. Razón: Quitar email |
#2
|
|||
|
|||
Cita:
Felicitaciones entonces |
#3
|
|||
|
|||
Claro lo que hice fue importar los WDSL y luego utilizarlos en mi codigo.
|
#4
|
|||
|
|||
Cita:
Saludos y felicidades.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#5
|
|||
|
|||
En el firmado lo unico que hago es usar el shellExecute llamando a un Bat que lo que hace es ejecutar las lineas de Openssl.
tenes que tener instalado el Openssl en la ruta donde lo llamas Última edición por Casimiro Notevi fecha: 15-07-2015 a las 22:18:14. |
#6
|
||||
|
||||
Recuerda poner los tags al código fuente, ejemplo:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Cita:
Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#8
|
|||
|
|||
hola, en que seccion del ftp esta el archivo con los fuentes y como se llama dicho archivo?
gracias! saludos |
#9
|
||||
|
||||
OpenSSL
Hola Amigo, gracias por el aporte.
Estoy interesado en ver como llamas al webservices "logincms", yo estoy haciendo lo siguiente , pero obtengo siempre el mensaje de error "El CMS es inválido".
La unit uLogincms es el wdsl importado de https://wsaahomo.afip.gov.ar/ws/services/LoginCms?wsdl Podrías darme una mano con esto por favor? , no encontré en el FTP el código que habias dicho que lo subirías . Gracias Cita:
__________________
Q Onda? |
#10
|
|||
|
|||
OpensslUtils
Hola, soy nuevo en este Foro, les dejo algo que puede servirles, quizás no esté muy claro. Es para firmar el ticket sin usar un Bat a la librería Openssl.
Deben conseguir OpensslUtils, que no recuerdo donde la encontré e incorporarla al proyecto. Les adjunto el código que uso yo. Espero les sea útil. Código:
function Tcomprobante.crearfirma: string; var signer: TMessageSigner; camino: String; ruta: Pwidechar; firma: String; position: integer; begin camino := ExpandFileName(application.ExeName + '\..\keys'); ruta := Pwidechar(camino); fgeneracion := now(); fexpiracion := inchour(fgeneracion,1); signer := TMessageSigner.Create; signer.LoadPrivateKey(ruta +'\'+ responsable.edita_responsables['llave'], ''); signer.LoadCertificate(ruta + '\'+ responsable.edita_responsables['cert']); signer.PlainMessage := '<?xml version="1.0" encoding="UTF-8" ?>'+ '<loginTicketRequest version="1.0">'+ '<header>'+ '<uniqueId>123456</uniqueId>'+ '<generationTime>'+formatdatetime('yyyy-MM-dd',fgeneracion)+'T'+formatdatetime('hh:mm',fgeneracion)+':00-03:00</generationTime>'+ '<expirationTime>'+formatdatetime('yyyy-MM-dd',fexpiracion)+'T'+formatdatetime('hh:mm',fexpiracion)+':00-03:00</expirationTime>'+ '</header>'+ '<service>wsfe</service>'+ '</loginTicketRequest>'; signer.MIMESign; firma := signer.SignedMessage; firma := rightstr(firma,length(firma)-186); position := ansipos('==', firma); if position <> 0 then begin delete(firma,position,length(firma)); end; result := firma; end; |
#11
|
|||
|
|||
Hola también soy nuevo en el foro. Pude implementar una interface de factura electrónica con éxito y rápidamente sobre Delphi 7 gracias al gran aporte de adripugliesso, pero me interesa generar el CMS directamente sin la intervención de openssl como binario externo, es decir con la OpensslUtils que ya conseguí de la web de la universidad de Genoa de Marco Ferrante para la versión .7b de openssl (dll).
La consulta es para seti.roman, hay alguna otra rutina para implementar además de la que ya compartiste? Porque no logro validar el CMS generado. Llego a crear el smime.p7m que es el archivo firmado con signed-data en formato Email, luego quito la cabecera, codifico en base64 y envío pero algo estoy haciendo mal o está faltando porque me devuelve "CMS inválido". Saludos |
#12
|
|||
|
|||
Hola, estuve probando hoy nuevamente y me pasó que la firma es inválida (antes funcionaba).
1) Estoy modificando el código a ver si lo hago andar nuevamente. 2) Yo uso la librería OpenSSLUtils.pas (0.9.6b) que también necesita libeay32.pas (0.9.6b) y las agrego al proyecto (agregala a uses: OpenSSLUtils y libeay32 en tu form o módulo) Última edición por seti.roman fecha: 30-10-2017 a las 21:05:32. Razón: Error e el código |
#13
|
|||
|
|||
Ahora va corregido y (por ahora) funcionando:
Código:
function Tcomprobante.crearfirma: string; var signer: TMessageSigner; ruta: Pwidechar; firma: String; position: integer; begin ruta := Pwidechar(ExpandFileName(application.ExeName + '\..\keys')); fgeneracion := now(); fexpiracion := inchour(fgeneracion,1); signer := TMessageSigner.Create; signer.LoadPrivateKey(ruta +'\'+ responsable.edita_responsables['llave'], ''); signer.LoadCertificate(ruta + '\'+ responsable.edita_responsables['cert']); signer.PlainMessage := '<?xml version="1.0" encoding="UTF-8" ?>'+ '<loginTicketRequest version="1.0">'+ '<header>'+ '<uniqueId>123456</uniqueId>'+ '<generationTime>'+formatdatetime('yyyy-MM-dd',fgeneracion)+'T'+formatdatetime('hh:mm',fgeneracion)+':00-03:00</generationTime>'+ '<expirationTime>'+formatdatetime('yyyy-MM-dd',fexpiracion)+'T'+formatdatetime('hh:mm',fexpiracion)+':00-03:00</expirationTime>'+ '</header>'+ '<service>wsfe</service>'+ '</loginTicketRequest>'; signer.MIMESign; firma := signer.SignedMessage; firma := rightstr(firma,length(firma)-188); //*********** AGREGUE 2 position := ansipos('==', firma); if position <> 0 then begin delete(firma,position+2,length(firma)); //******** SUME 2 A LA POSICION PARA QUE INCLUYA LOS == end; xgs.observartexto(firma); result := firma; end; |
#14
|
|||
|
|||
Cita:
dado que venian con etiquetas y algún caractér raro, no me acuerdo muy bien. Te lo paso: Código:
function Tcomprobante.autenticar: Tstringlist; var autenticar: Tstringlist; begin autenticar := Tstringlist.Create; autenticar.Text := (HTautenticar as LoginCms).loginCms(crearfirma); result := autenticar; end; function Tcomprobante.obteneraut: Tstringlist; var cms: Tstringlist; i: Integer; token: String; sign: String; begin cms := Tstringlist.Create; cms := autenticar; for i := 0 to cms.Count-1 do begin cms[i] := Trimleft(cms[i]); if StartsText('<token>',cms[i]) then begin cms[i] := cms[i].Replace('<token>', ''); cms[i] := cms[i].Replace('</token>', ''); token := cms[i]; cms[i+1] := cms[i+1].Replace('<sign>', ''); cms[i+1] := cms[i+1].Replace('</sign>', ''); sign := cms[i+1]; end; end; cms.Clear; cms.Add(Trimleft(token)); cms.Add(Trimleft(sign)); guardaraut(cms[0],cms[1]); end; |
#15
|
|||
|
|||
Muchas gracias por la pronta respuesta. Aún no lo he probado, pero intuía que estaba firmando mal por la comparación que yo hacía con la firma generada por openssl por línea de comandos. Sólo me faltaba la firma (para no hacerlo con openssl.exe), lo demás está todo implementado. Muchísimas gracias también por el código de la recuperación del token y sign. En un momento lo pruebo y posteo como me fue.
|
#16
|
|||
|
|||
Integrarlo con aplicación y base de datos .ABS
buenas tardes a todos, estoy viendo el código, mi pregunta es como puedo integrarlo o conectarlo a una base de datos . ABS para que tome los datos de la base y la factura quede tanto registrada en la aplicación como en afip, gracias y disculpen si se me pasa algo de antemano!!
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Factura Electronica - Afip Argentina | Joe_Balda | Varios | 30 | 30-01-2021 05:10:34 |
Factura Electrónica AFIP Argentina | SergioFrey | Noticias | 2 | 19-05-2017 22:02:03 |
xml+xsl a pdf(Factura Electronica) | jgutti | Varios | 4 | 21-02-2012 17:08:23 |
factura electronica | cmm07 | Varios | 4 | 02-04-2009 18:46:03 |
factura electronica | spia | Varios | 2 | 22-02-2009 22:30:06 |
|