![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(VB.NET) Create SOAP with multiple VeriFactu Digitally Signed Registration RecordsSee more Verifactu ExamplesCreates a SOAP message containing a multiple digitally signed invoice registration records, formatted according to the specifications for Spain's Veri*Factu system.
Dim success As Boolean = False success = True ' Begin with the following SOAP XML: ' <?xml version="1.0" encoding="utf-8"?> ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> ' <soapenv:Header/> ' <soapenv:Body> ' <sum:RegFactuSistemaFacturacion> ' <sum:Cabecera> ' <sum1:ObligadoEmision> ' <sum1:NombreRazon>XYZ STORE SL</sum1:NombreRazon> ' <sum1:NIF>B99999999</sum1:NIF> ' </sum1:ObligadoEmision> ' <sum1:RemisionRequerimiento> ' <sum1:RefRequerimiento>3333333333</sum1:RefRequerimiento> ' <sum1:FinRequerimiento>S</sum1:FinRequerimiento> ' </sum1:RemisionRequerimiento> ' </sum:Cabecera> ' ' </sum:RegFactuSistemaFacturacion> ' </soapenv:Body> ' </soapenv:Envelope> Dim xml As New Chilkat.Xml xml.Tag = "soapenv:Envelope" xml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/") xml.AddAttribute("xmlns:sum","https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd") xml.AddAttribute("xmlns:sum1","https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd") xml.AddAttribute("xmlns:xd","http://www.w3.org/2000/09/xmldsig#") xml.UpdateChildContent("soapenv:Header","") xml.UpdateChildContent("soapenv:Body|sum:RegFactuSistemaFacturacion|sum:Cabecera|sum1:ObligadoEmision|sum1:NombreRazon","XYZ STORE SL") xml.UpdateChildContent("soapenv:Body|sum:RegFactuSistemaFacturacion|sum:Cabecera|sum1:ObligadoEmision|sum1:NIF","B99999999") xml.UpdateChildContent("soapenv:Body|sum:RegFactuSistemaFacturacion|sum:Cabecera|sum1:RemisionRequerimiento|sum1:RefRequerimiento","3333333333") xml.UpdateChildContent("soapenv:Body|sum:RegFactuSistemaFacturacion|sum:Cabecera|sum1:RemisionRequerimiento|sum1:FinRequerimiento","S") ' Prior to this code, we created N signed SOAP messages, each containing a single signed record. ' Load each of these signed SOAP messages into a StringBuilder and insert after the "</sum:Cabecera>" ' Note: We must NOT use Chilkat.Xml for this. We must do string operations using Chilkat StringBuilder to prevent whitespace or formatting modifications which would break the signatures. Dim sbXml As New Chilkat.StringBuilder xml.GetXmlSb(sbXml) ' --------------------------------------------------------------------------------------------- ' Load the previously signed XML containing just one signed record. Dim sbSignedSoap As New Chilkat.StringBuilder success = sbSignedSoap.LoadFile("c:/temp/qa_output/signedSoapXml1.xml","utf-8") If (success = False) Then Debug.WriteLine(sbSignedSoap.LastErrorText) Exit Sub End If ' Remove everything before "</sum:Cabecera>", including the "</sum:Cabecera>" sbSignedSoap.RemoveBefore("</sum:Cabecera>") ' Remove everything after the "</sum:RegFactuSistemaFacturacion>", including the "</sum:RegFactuSistemaFacturacion>" sbSignedSoap.RemoveAfterFinal("</sum:RegFactuSistemaFacturacion>") ' We now have the portion of the signed SOAP xml from <sum:RegistroFactura> to </sum:RegistroFactura> ' Insert it after the </sum:Cabecera> sbSignedSoap.Prepend("</sum:Cabecera>") sbXml.ReplaceFirst("</sum:Cabecera>",sbSignedSoap.GetAsString()) ' --------------------------------------------------------------------------------------------- ' Add the next signed SOAP containing a single signed record. success = sbSignedSoap.LoadFile("c:/temp/qa_output/signedSoapXml2.xml","utf-8") If (success = False) Then Debug.WriteLine(sbSignedSoap.LastErrorText) Exit Sub End If ' Remove everything before "</sum:Cabecera>", including the "</sum:Cabecera>" sbSignedSoap.RemoveBefore("</sum:Cabecera>") ' Remove everything after the "</sum:RegFactuSistemaFacturacion>", including the "</sum:RegFactuSistemaFacturacion>" sbSignedSoap.RemoveAfterFinal("</sum:RegFactuSistemaFacturacion>") ' We now have the portion of the signed SOAP xml from <sum:RegistroFactura> to </sum:RegistroFactura> ' Insert it after the </sum:Cabecera> sbSignedSoap.Prepend("</sum:Cabecera>") sbXml.ReplaceFirst("</sum:Cabecera>",sbSignedSoap.GetAsString()) ' --------------------------------------------------------------------------------------------- ' Continue adding more signed records if needed. ' Save the SOAP containing multiple signed records.. sbXml.WriteFile("c:/temp/qa_output/soap_combined.xml","utf-8",False) |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.