2025-05-17 11:36:26 -04:00

50 lines
2.3 KiB
Go

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"`
}