Reserva de productos
Este método permite reservar los productos añadidos al carrito de la compra durante un periodo de tiempo.
Una vez que se ha confirmado la reserva, ya no es posible añadir más productos al carrito.
Método de acceso
POST /ShoppingCart/Confirm
Estructura de la petición
ShoppingCartId: (string)Requerido. Identificador del carrito.LanguageCode: (string)Opcional. Idioma de los textos devueltos. Formato ISO 639-1.
En este paso pueden enviarse, opcionalmente, las respuestas a las preguntas de niveles venta, proveedor y cliente. También pueden enviarse al confirmar la venta. Consulta la introducción a los perfiles de preguntas.
-
QuestionsProfiles: (list)Opcional. Listado de perfiles de preguntas con sus respuestas. Se utiliza para responder a las preguntas de nivel venta, proveedor y cliente. Las preguntas de nivel ticket se responden al añadir el producto al carrito, no aquí. Consulta la introducción a los perfiles de preguntas para entender cada nivel.QuestionsProfileId: (string)Requerido. Identificador del perfil de preguntas. Se obtiene del catálogo (SaleQuestionProfileIds,ClientQuestionProfileIds,ProviderQuestionsProfileIds) y de consultar perfiles de preguntas.Questions: (list)Requerido. Respuestas a las preguntas del perfil.QuestionId: (string)Requerido. Identificador de la pregunta (campoIdde la pregunta devuelto al consultar perfiles de preguntas).Question: (string)Opcional. Texto de la pregunta. Informativo.- Propiedad de valor: según el
DataTypede la pregunta, debe rellenarse una de las siguientes propiedades:StringValue(string) /StringCollectionValue(list).BooleanValue(boolean) /BooleanCollectionValue(list).IntegerValue(int) /IntegerCollectionValue(list).DecimalValue(decimal) /DecimalCollectionValue(list).DateTimeValue(dateTime) /DateTimeCollectionValue(list).BinaryValue(string) /BinaryCollectionValue(list). Contenido del archivo codificado en base64.
BinaryMimeType: (string)Opcional. Tipo MIME del archivo. Solo paraDataType= 12 o 13.BinaryExtension: (string)Opcional. Extensión del archivo. Solo paraDataType= 12 o 13.
Tipo de dato (
DataType) → propiedad de respuestaEl
DataTypedetermina en qué propiedad debe enviarse la respuesta de la pregunta.DataTypeTipo Propiedad de respuesta 0 Texto StringValue1 Lista de textos StringCollectionValue2 Booleano BooleanValue3 Lista de booleanos BooleanCollectionValue4 Fecha DateTimeValue5 Lista de fechas DateTimeCollectionValue6 Número entero IntegerValue7 Lista de enteros IntegerCollectionValue8 Número decimal DecimalValue9 Lista de decimales DecimalCollectionValue10 Selección de un valor entre un conjunto predefinido ( Values)StringValue11 Selección de varios valores entre un conjunto predefinido ( Values)StringCollectionValue12 Archivo BinaryValue(+BinaryMimeType,BinaryExtension)13 Lista de archivos BinaryCollectionValue(+BinaryMimeType,BinaryExtension)
Ejemplos de llamadas
Examples
{
"ShoppingCartId": "j7gjproc9c6sw",
"QuestionsProfiles": [
{
"QuestionsProfileId": "prv8q2k9wla3c",
"Questions": [
{
"QuestionId": "q1mat5kz9p2rt",
"StringValue": "1234ABC"
}
]
}
]
}
Estructura de la respuesta
ExpirationDateTime: (dateTime). Indica cuándo la reserva expirará. Formato IS0 8601 (YYYY-MM-DDThh:mm:ss.d).-
Activities: (object). Información sobre la actividad añadida.-
Products: (list). Listado de productos añadidos.ProductId: (string). Identificador del producto añadido.CombinedProductId: (string). Identificador del producto combinado añadido.ProductName: (string). Nombre del producto añadido.AccessDateTime: (dateTime). Fecha y hora de acceso. Formato IS0 8601 (YYYY-MM-DDThh:mm:ss.d).Price: (decimal). Precio de la tarifa.-
PriceMode: (int). Tipo de precio.Posibles valores
- 1: PVP
- 2: Neto
-
Success: (boolean). Si ha sido correctamente reservado. Tickets: (list). Listado de tickets que conforman este producto.Ticket: (object). Información sobre el ticket.TicketId: (string). Identificador del ticket.
CancellationPolicy: (object). Indica las políticas de cancelación que se aplican al cancelar este producto.IsRefundable: (boolean). Indica si la cancelación gratuita está disponible en algún momento.Rules: (list). Listado de reglas que se aplican al efectuar la cancelación.Rule: Información sobre la regla a aplicar.HoursInAdvanceOfAccess: (int). Indica la cantidad de horas de antelación con respecto a la fecha de acceso a partir de las cuales se aplicará la penalización de precio indicada enPercentage.Percentage: (decimal). Porcentaje de penalización sobre el precio de la entrada.Amount: (decimal). Valor total de la penalización que se aplicará.FromInclusiveDateTime: (dateTime). Fecha/hora a partir de la cual se aplicará esta regla.ToExclusiveDateTime: (dateTime). Fecha/hora hasta la cual se aplicará esta regla.
-
-
Accommodations: (list). Información sobre los alojamientos/habitaciones añadidas al carrito.-
Accommodation: (object). Información sobre el alojamiento.ProductId: (string). Identificador de la tarifa.ProductConditions: (string). Condiciones del producto.AccessDateTime: (dateTime). Fecha de entrada.AccessEndDateTime: (dateTime). Fecha de salida.Quantity: (int). Cantidad de unidades añadidas.Price: (decimal). Precio de la tarifa.-
PriceMode: (int). Tipo de precio.Posibles valores
- 1: PVP
- 2: Neto
-
Success: (boolean). Si ha sido correctamente reservado. ErrorMessage: (boolean). En caso de error en la reserva, mensaje asociado.ChildrenAges: (list). Listado con las edades de los bebés/niños.int: Edad del bebé/niño
NumberOfAdults: (int). Número de adultos en esta habitación.NumberOfChildren: (int). Número de niños en esta habitación.NumberOfSenior: (int). Número de seniors en esta habitación.NumberOfBabies: (int). Número de bebés en esta habitación.NumberOfGeneric: (int). Número de personas (sin definir) en esta habitación.CancellationPolicy: (object). Indica las políticas de cancelación que se aplican al cancelar este producto.IsRefundable: (boolean). Indica si la cancelación gratuita está disponible en algún momento.Rules: (list). Listado de reglas que se aplican al efectuar la cancelación.Rule: Información sobre la regla a aplicar.HoursInAdvanceOfAccess: (int). Indica la cantidad de horas de antelación con respecto a la fecha de acceso a partir de las cuales se aplicará la penalización de precio indicada enPercentage.Percentage: (decimal). Porcentaje de penalización sobre el precio de la entrada.Amount: (decimal). Valor total de la penalización que se aplicará.FromInclusiveDateTime: (dateTime). Fecha/hora a partir de la cual se aplicará esta regla.
-
-
PaymentMethodsNotApplicable: (boolean). Indica si los método de pago serán aplicables o no a este colaborador. Los colaboradores con contrato "débito" tendrán que aplicar los métodos de pago (PaymentMethodsNotApplicable = false). -
PaymentMethods: (list). Métodos de pago soportados para el colaborador en caso de ser a débito.PaymentMethod: (object). Información sobre el método de pago.Id: (string). Identificador del método de pago.Type: (byte). Tipo de método de pago.Name: (string). Nombre del método de pago.CommercialName: (string)Opcional. Nombre comercial del método de pago.EnableSendByEmail: (boolean)Opcional. Indica si es posible utilizar este método de cobro para el envío automático de enlace de cobro por correo.Fields: (list). Array de campos rellenables asociados al método de pago. Estos campos se pueden especificar en el momento de crear una transacción.Id: (string). Identificador del campo.Name: (string). Nombre del campo.IsRequired: (boolean). Indica si se obligatorio rellenar el campo.RegexValidation: (string)Opcional. Expresión regular que se debe cumplir al rellenar el valor del campo.RegexValidationErrorMessage: (string)Opcional. Mensaje de error a mostrar al usuario en caso de que no se cumpla la expresión regular.DefaultValue: (string)Opcional. Valor por defecto del campo que se debe mostrar al usuario.-
DataType: (byte). Indica el tipo de datos que debe tener el valor del campo.Posibles valores
- 0: Texto
- 1: Númerico
- 2: Fecha
- 3: Booleano
-
Success: (boolean). Valor que indica si la llamada ha sido procesada correctamente o no. Errors: (list). Array de errores.Error: (object).ErrorMessage: (string). Mensaje de error explicando por qué la petición no ha sido correcta. En caso que haya sido correcta, devolveránull.ErrorCode: (int). Código que identifica al error.
ErrorEntityBreakDown(list): Lista que contiene objetos con el nombre e ID en caso de error.Id(string): IdentificadorName(string): Nombre relacionado del identificador.
Ejemplos de respuestas
Examples
{
"Activities": {
"Products": [
{
"ProductId": "yt1pgb1k61wdc",
"ProductName": "Forfait Adulto + Alquiler snow 2 días ",
"AccessDateTime": "2023-01-25T00:00:00",
"Quantity": 1,
"Price": 119.60,
"PriceMode": 1,
"Success": true,
"Tickets": [
{
"TicketId": "na19qnrm8zh3e"
}
],
"CancellationConditions": {
"IsRefundable": true,
"Rules": [
{
"Percentage": 100.000000000000,
"Amount": 119.60,
"FromInclusiveDateTime": "2023-01-22T00:00:00",
"HoursInAdvanceOfAccess": 72.000000000000
}
]
}
}
]
},
"Accommodations": [
{
"ProductId": "gmw4uitqxsg91",
"ProductConditions": "Reception is opened from 08:00 to 11:00 & from 16:00 to 19:00 all week except Wednesday afternoon it is closed. If client has to arrive out of this hours, pls contact the hotel by phone Importe total estimado de tasas y recargos para esta reserva:22.23 Euro pagaderas a la llegada. Recogida de llaves 17:00-19:00.Hora de entrada 18:00-.Aparcamiento 8.00 EUR Por unidad/noche.Identificación a la llegada.Depósito a la llegada.",
"AccessDateTime": "2023-01-25T00:00:00",
"Quantity": 1,
"Price": 273.0100,
"PriceMode": 1,
"Success": true,
"ErrorMessage": "",
"NumberOfAdults": 1,
"NumberOfChildren": 0,
"NumberOfSenior": 0,
"NumberOfBabies": 0,
"NumberOfGeneric": 0,
"CancellationConditions": {
"IsRefundable": true,
"Rules": [
{
"Percentage": 100.0,
"Amount": 273.0100,
"FromInclusiveDateTime": "2023-01-22T00:00:00",
"HoursInAdvanceOfAccess": 72.0
}
]
}
},
{
"ProductId": "5msetyd6q4rqa",
"ProductConditions": "Reception is opened from 08:00 to 11:00 & from 16:00 to 19:00 all week except Wednesday afternoon it is closed. If client has to arrive out of this hours, pls contact the hotel by phone Importe total estimado de tasas y recargos para esta reserva:22.23 Euro pagaderas a la llegada. Recogida de llaves 17:00-19:00.Hora de entrada 18:00-.Aparcamiento 8.00 EUR Por unidad/noche.Identificación a la llegada.Depósito a la llegada.",
"AccessDateTime": "2023-01-25T00:00:00",
"Quantity": 1,
"Price": 273.0100,
"PriceMode": 1,
"Success": true,
"ErrorMessage": "",
"ChildrenAges": [
5
],
"NumberOfAdults": 2,
"NumberOfChildren": 1,
"NumberOfSenior": 0,
"NumberOfBabies": 0,
"NumberOfGeneric": 0,
"CancellationConditions": {
"IsRefundable": true,
"Rules": [
{
"Percentage": 100.0,
"Amount": 273.0100,
"FromInclusiveDateTime": "2023-01-22T00:00:00",
"HoursInAdvanceOfAccess": 72.0
}
]
}
}
],
"ExpirationDateTime": "2023-01-13T01:19:16.067",
"PaymentMethodsNotApplicable": false,
"PaymentMethods": [
{
"Type": 1,
"Name": "Tarjeta bancaria",
"EnableSendByEmail": true
},
{
"Type": 9,
"Name": "TPV Externo",
"EnableSendByEmail": false
},
{
"Type": 13,
"Name": "Bizum",
"EnableSendByEmail": true
},
{
"Type": 4,
"Name": "Reserva online",
"EnableSendByEmail": false
}
],
"Success": true
}
Cabeceras HTTP adicionales
- Esta llamada acepta una cabecera adicional, para indicar el usuario del colaborador que lleva a cabo la confirmación del carrito:
| Nombre de la cabecera | Valor de la cabecera |
|---|---|
AdminPartnerUserId |
Identificador del usuario del AdminPartner |