package request import "encoding/xml" // SOAPRequestEnvelope define la estructura general del mensaje SOAP. type SOAPRequestEnvelope struct { XMLName xml.Name `xml:"soapenv:Envelope"` XmlnsSoapenv string `xml:"xmlns:soapenv,attr"` // URL del namespace SOAP XmlnsSiat string `xml:"xmlns:siat,attr"` // URL del namespace siat Header *SOAPRequestHeader `xml:"soapenv:Header,omitempty"` Body SOAPRequestBody `xml:"soapenv:Body"` } type SOAPRequestHeader struct{} type SOAPRequestBody struct { Operacion OperacionXML `xml:",any,omitempty"` } // /////////////////////////////// CUIS ////////////////////////////////////// type OperacionXML struct { XMLName xml.Name Solicitud SolicitudCuisCufd `xml:"SolicitudCuis"` } // permite controlar la serialización de OperacionXML para usar el nombre de etiqueta deseado. func (o OperacionXML) MarshalXML(e *xml.Encoder, start xml.StartElement) error { start.Name = o.XMLName // Encapsulamos la solicitud en una estructura anónima para que se serialice correctamente. return e.EncodeElement(struct { Solicitud SolicitudCuisCufd `xml:"SolicitudCuis"` }{o.Solicitud}, start) } // /////////////////////////////// CUIS ////////////////////////////////////// type SolicitudCuisCufd struct { CodigoAmbiente string `xml:"codigoAmbiente,omitempty" json:"codigoAmbiente"` CodigoModalidad string `xml:"codigoModalidad,omitempty" json:"codigoModalidad"` CodigoPuntoVenta string `xml:"codigoPuntoVenta,omitempty" json:"codigoPuntoVenta"` CodigoSistema string `xml:"codigoSistema,omitempty" json:"codigoSistema"` CodigoSucursal string `xml:"codigoSucursal,omitempty" json:"codigoSucursal"` Nit string `xml:"nit,omitempty" json:"nit"` Cuis string `xml:"cuis,omitempty" json:"cuis,omitempty"` KeyToken string `xml:"keyToken,omitempty" json:"keyToken,omitempty"` ValueToken string `xml:"valueToken,omitempty" json:"valueToken,omitempty"` NombreArchivoCertificado string `xml:"nombreArchivoCertificado,omitempty" json:"nombreArchivoCertificado,omitempty"` NombreArchivoClavePrivada string `xml:"nombreArchivoClavePrivada,omitempty" json:"nombreArchivoClavePrivada,omitempty"` }