Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2021
Galaxian Galaxian is offline
Miembro
 
Registrado: mar 2021
Posts: 52
Poder: 6
Galaxian Va por buen camino
Ejemplo (parte3)

Código PHP:
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyQualifiers|xades:SigPolicyQualifier|xades:SPURI','h_t_t_p_s://w_w_w.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf');
CkXml_UpdateAttrAt(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat',True,'ObjectReference','#Reference-7e6f3481-4acc-47de-90fd-67878ad15e8e');
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Description','');
CkXml_UpdateAttrAt(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Identifier',True,'Qualifier','OIDAsURN');
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Identifier','urn:oid:1.2.840.10003.5.109.10');
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:ObjectIdentifier|xades:Description','');
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:MimeType','text/xml');
CkXml_UpdateChildContent(object1,'xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Encoding','');

CkXmlDSigGen_AddObject(gen,'',CkXml__getXml(object1),'',''); 
Responder Con Cita
  #2  
Antiguo 12-04-2021
Galaxian Galaxian is offline
Miembro
 
Registrado: mar 2021
Posts: 52
Poder: 6
Galaxian Va por buen camino
Ejemplo (parte4)

Código PHP:
//  -------- Reference 1 --------
CkXmlDSigGen_AddSameDocRef(gen,'','sha512','C14N','','h_t_t_p://w_w_w.w3.org/2000/09/xmldsig#Object');
CkXmlDSigGen_SetRefIdAttr(gen,'','Reference-7e6f3481-4acc-47de-90fd-67878ad15e8e');

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

//  -------- Reference 3 --------
CkXmlDSigGen_AddSameDocRef(gen,'Signature-63c35f38-2b5f-4600-b3da-3ddee86d62b3-KeyInfo','sha512','','','');

//  Load a certificate that has been pre-installed on the Windows system
//  This includes certificates on smartcards and USB tokens
cert := CkCert_Create();
success := CkCert_LoadByCommonName(cert,'The cert Subject CN');
if (
success <> Truethen
  begin
    Memo1
.Lines.Add(CkCert__lastErrorText(cert));
    Exit;
  
end;
CkXmlDSigGen_SetX509Cert(gen,cert,True);

CkXmlDSigGen_putKeyInfoType(gen,'X509Data+KeyValue');
CkXmlDSigGen_putX509Type(gen,'Certificate');

//  Load XML to be signed...
sbXml := CkStringBuilder_Create();
CkXml_GetXmlSb(xmlToSign,sbXml);

CkXmlDSigGen_putBehaviors(gen,'IndentedSignature,TransformSignatureXPath');

//  Sign the XML...
success := CkXmlDSigGen_CreateXmlDSigSb(gen,sbXml);
if (
success <> Truethen
  begin
    Memo1
.Lines.Add(CkXmlDSigGen__lastErrorText(gen));
    Exit;
  
end;
//  -----------------------------------------------

//  Save the signed XML to a file.
success := CkStringBuilder_WriteFile(sbXml,'qa_output\signedXml.xml','utf-8',False);

Memo1.Lines.Add(CkStringBuilder__getAsString(sbXml)); 
Responder Con Cita
  #3  
Antiguo 12-04-2021
Galaxian Galaxian is offline
Miembro
 
Registrado: mar 2021
Posts: 52
Poder: 6
Galaxian Va por buen camino
El ejemplo anterior crea una firma digital prácticamente idéntica a la original.
Para rizar el rizo se pueden generar dos UUID (los de 'signature' y 'reference') y modificar el código para que cada vez tenga unos UUID distintos
Responder Con Cita
  #4  
Antiguo 12-04-2021
Galaxian Galaxian is offline
Miembro
 
Registrado: mar 2021
Posts: 52
Poder: 6
Galaxian Va por buen camino
Para enviar (es código C++, que es el lenguaje que uso, aunque su traducción a Pascal/Delphi no el muy complicada porque la estructura es la misma, aunque su sintaxis difiera un poco:

Código PHP:
CkRest rest;
CkSocket socket;

success socket.SetSslClientCertPfx("d:\\xxx.pfx","xxxxxxxxxx");
if (
success != true) {std::cout << socket.lastErrorText() << "\r\n"; return;}

bool bTls true;
int port 443;
int maxWaitMs 5000;

success socket.Connect("pruesarrerak.bizkaia.eus",port,bTls,maxWaitMs);

if (
success != true
{
    
std::cout << "Connect Failure Error Code: " << socket.get_ConnectFailReason() << "\r\n";
    
std::cout << socket.lastErrorText() << "\r\n";
    return;
}

bool bAutoReconnect true;

// Use the connection:
success rest.UseConnection(socket,bAutoReconnect);
if (
success != true) {std::cout << rest.lastErrorText() << "\r\n"; return;}

CString jsn="{\"con\":\"LROE\",\"apa\":\"1.1\",\"inte\":{\"nif\":\"XXXXXXXXXX\",\"nrs\":\"XXXXXXXXXX\"},\"drs\":{\"mode\":\"140\",\"ejer\":\"2020\"}}";
cTexto dat=cFicheroBase::Leer("D:\\Ejemplo_LROE_140.xml").Texto();

rest.put_Utf8(SI);

rest.AddHeader("Accept-Encoding","gzip");
rest.AddHeader("Content-Encoding","gzip");
rest.AddHeader("Content-Type","application/octet-stream");
rest.AddHeader("eus-bizkaia-n3-version","1.0");
rest.AddHeader("eus-bizkaia-n3-content-type","application/xml");
rest.AddHeader("eus-bizkaia-n3-data",jsn);

int rst=rest.SendReqStringBody("POST","/N3B4000M/aurkezpena",dat);
rst=rest.ReadResponseHeader();
cchar *cr=rest.responseHeader();

CkByteData rb;
rst=rest.ReadRespBodyBinary(rb);
const 
uchar *dta=rb.getData();
int lng=rb.getSize();

cBinario rb2(dta,lng);
rb2=cCompresion::Descomprimir::Gzip(rb2);

return; 
Hay que tener en cuenta que la librería chilkat reconoce la cabecera 'Content-Encoding: gzip" y COMPRIME el envío y DESCOMPRIME la respuesta, que, a su vez, está comprimida, por lo que habrá que descomprimirla.

Los certificados no solo pueden cargarse de pfx, sino también del almacén de Windows o usar uno cargado anteriormente
Responder Con Cita
  #5  
Antiguo 12-04-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Galaxian Ver Mensaje
Hay que tener en cuenta que la librería chilkat reconoce la cabecera 'Content-Encoding: gzip" y COMPRIME el envío y DESCOMPRIME la respuesta, que, a su vez, está comprimida, por lo que habrá que descomprimirla.
Los certificados no solo pueden cargarse de pfx, sino también del almacén de Windows o usar uno cargado anteriormente

Gracias nuevamente.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 13-04-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 668
Poder: 18
espinete Va camino a la fama
Hola a tod@s.

Después de tanto tiempo y de tener encaminado el desarrollo del TicketBAI (al menos el envío y consulta de facturas), me surge una pregunta un poco tonta pero necesito estar seguro...

Para el envío de información del LROE existen varios métodos: ingresos con software garante, facturas con software garante, anulación...

Pero hay otros que indican "sin software garante", o "ingresos sin factura" y otros más.

Teniendo en cuenta que en mi caso estaría haciendo la integración en un software de facturación, es obvio pensar que solo tendría que implementar aquellos esquemas/envíos "con software garante", no? ¿O estoy obviando algo que no he entendido del todo?

No sé si existe información sobre para qué se usa cada caso exactamente, pero imagino que en mi caso concreto solo tendría que preocuparme por implementar el envío de facturas hechas con mi software, nada más.

¿Es correcto?
Responder Con Cita
  #7  
Antiguo 13-04-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aquí en preguntas frecuentes hay esto (a ver si te aclara algo):





__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 3716 19-01-2026 20:01:34
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 12:59:53.


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