package api2

import (
	"encoding/xml"
)

// TransactionRequest es la solicitud para procesar una transacción
type TransactionRequest struct {
	XMLName       xml.Name `xml:"TransactionRequest"`
	Namespace     string   `xml:"xmlns,attr,omitempty"`
	TransactionID string   `xml:"TransactionId,omitempty"`
	AccountID     string   `xml:"AccountId,omitempty"`
	Amount        float64  `xml:"Amount,omitempty"`
	Currency      string   `xml:"Currency,omitempty"`
	Description   string   `xml:"Description,omitempty"`
	// Otros campos según sea necesario
}

// TransactionResponse es la respuesta para una solicitud de transacción
type TransactionResponse struct {
	XMLName          xml.Name `xml:"TransactionResponse"`
	ResultCode       string   `xml:"ResultCode,omitempty"`
	ResultMessage    string   `xml:"ResultMessage,omitempty"`
	TransactionID    string   `xml:"TransactionId,omitempty"`
	ConfirmationCode string   `xml:"ConfirmationCode,omitempty"`
	Timestamp        string   `xml:"Timestamp,omitempty"`
	// Otros campos según sea necesario
}

// TransactionSoapRequest envuelve la solicitud para SOAP
type TransactionSoapRequest struct {
	XMLName xml.Name           `xml:"api2:ProcessTransaction"`
	Request TransactionRequest `xml:",omitempty"`
}

// TransactionSoapResponse envuelve la respuesta para SOAP
type TransactionSoapResponse struct {
	XMLName  xml.Name            `xml:"ProcessTransactionResponse"`
	Response TransactionResponse `xml:",omitempty"`
}
