Git Product home page Git Product logo

delphi-example's Introduction

Delphi-example

Ejemplo de Timbrado con Delphi

Requerimientos

  • Delphi 10.2 comunity edition
  • Crear un recurso con el nombre CADENAORIGINAL33 que hara referencia a nuestro archivo cadenaoriginal_3_3.xslt que nos ayudara a crear la cadena original de nuestro cfdi

Delphi

El arhivo ClienteFormas.pas contiene el codigo para poder hacer el sellado del cdfi, y tambien es el codigo de la intefaz grafica que nos permite cargar los archivos necesarios para hacer el sellado.

function SellarXML(const xmlPath : string; const certPath : string; const keyPath : string) : string;

Contiene la funcion llamada SellarXML la cual recibe el archivo xml que queremos sellar, el certificado y la llave para poder crear el sello y enviarlo al servicio web, dentro de esta funcion hacemos las llamadas a las demas funciones para generar la cadena original, el sello, y enviarlo al servicio web.

function GetCadenaOriginal(const document: IXMLDocument) : string;

Esta funcion le enviamos el documento xml para que nos genere la cadena original del documento la cual utilizaremos para generar el sello del cfdi.

function GetCertificadoInfo(const certificadoStringPath : string) : TX509Certificate;

Esta funcion nos regresa la informacion del certificado el serialNumber que asignaremos a nuestro xml al atributo NoCertificado tambien el contenido del certificado que tenemos que convertir a base64 para enviarlo en el atributo Certificado para que sea posible hacer el timbrado.

function GetContenidoBase64(sCertificadoBase64 : string): string;

Nos regresa el contenido del certificado en base64.

Lo siguiente es generar el sello, para esto utilizaremos las siguientes funciones de la clase TOpenSSL que se encuentra en el archivo Facturacion.OpenSSL.pas

    procedure AsignarLlavePrivada(const aRutaArchivoLlavePrivada: String; const aContrasena: String);
    function HacerDigestion(const aCadena: WideString; const aTipoDigestion: TMetodoDigestion): String;

Primero asignamos la llave privada para luego utilizarla para generar el sello una vez obtenido el sello actualizamos los atributos en el xml para enviarlo al servicio soap de la siguiente forma:

timbradoWS := GetWSTimbradoCFDI(False, '', nil);
parameters := TimbrarCFDI.Create;

acc := accesos.Create;
acc.password := 'pruebasWS';
acc.usuario := 'pruebasWS';

parameters.accesos := acc;
parameters.comprobante := xmlString;

response := timbradoWS.TimbrarCFDI(parameters);

//response.acuseCFDI.xmlTimbrado;
if response.acuseCFDI.error.Equals('') then
  Result := response.acuseCFDI.xmlTimbrado
else
begin
    Result := response.acuseCFDI.codigoError + '----' + response.acuseCFDI.error
end;

Si todo sale bien el servicio nos respondera con un xml timbrado de lo contrario nos mostrara un error con la cuasa de este.

delphi-example's People

Contributors

formasdigitales avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.