Buenas practicas
Buenas practicas
De acuerdo con el acuerdo de términos de uso de IP-Connect firmado por el socio de OTA antes de que el desarrollo haya comenzado, estas pautas están establecidas para garantizar el uso eficiente y adecuado a IP-Connect.
Todas las OTA que cumplan o deseen tener una interfaz con IP-Connect deben cumplir con las siguientes prácticas de calidad.
Para los proveedores de OTA que ya se han implementado, lo siguiente puede requerir cambios en la configuración que tienen actualmente. Si bien IP-Connect podría ser flexible para acomodar excepciones en el pasado, el aumento constante en el número de instalaciones OTA está alcanzando un nivel en el que las excepciones ya no pueden permitirse.
El incumplimiento de estas pautas podría poner en peligro la interfaz OTA y, si el proveedor OTA no toma medidas para rectificar el incumplimiento dentro de los 3 meses posteriores a la notificación, IP-Connect se reserva el derecho de desactivar la interfaz hasta que se hayan realizado dichas correcciones.
Sin embargo, tenga en cuenta que si el incumplimiento de la OTA pone en riesgo el rendimiento de todo el entorno de producción de IP-Connect, se reserva el derecho de desactivar la interfaz de inmediato.
- EchoTokens
- Espaciado entre líneas
- Tipo de contenido
- SSL / TLS
- Funcionalidad obligatoria
- Certificación
- Acceso al entorno de pruebas
EchoTokens
Los EchoTokens son esenciales para todas las solicitudes (es decir, OTA_HotelResNotifRQ) que se realizan a través de IP-Connect. Los EchoTokens garantizan que cada solicitud se identifique de forma exclusiva para solucionar problemas tanto en entornos de prueba como de producción.
Todas las solicitudes que reciba de IP-Connect contendrán un EchoToken, y su respuesta (socio de IP-Connect) debe reflejar el EchoToken tal como se recibió en la solicitud.
NOTA: Asegúrese de implementar EchoTokens que sean tan únicos como sea posible para garantizar que la navegación de arrastre de log con fines de resolución de problemas sea rápida y eficiente. Se recomiendan los GUIDs de implementación y se puede encontrar más información sobre el GUID - http://en.wikipedia.org/wiki/Globally_unique_identifier.
Espaciado entre líneas
Todas las solicitudes de Soap XML realizadas a IP-Connect deben estar contenidas en una línea sin espaciado entre líneas. Pedimos esto para ayudar a nuestros equipos de soporte a extraer mensajes de nuestros registros.
SSL / TLS
IP-Connect es compatible con TLSv1.2.
Tipo de contenido
El 'Tipo de contenido' para todas las solicitudes de Soap XML realizadas a IP-Connect debe ser 'text / xml; charset = utf-8 '. Cualquier otro 'Tipo de contenido' no será aceptado.
Funcionalidad obligatoria
Todas las conexiones de IP-Connect deben ser una conexión XML bidireccional.
Las siguientes funcionalidades son obligatorias:
- Disponibilidad de inventario
- Actualización de tarifas
- Entrega de reserva
Acceso al entorno de pruebas
IP-Connect proporcionará una cuenta de prueba para usar durante el desarrollo. El acceso a la cuenta de prueba solo está garantizado durante el desarrollo activo y no debe utilizarse para pruebas continuas ni para demostraciones. Una vez completada la certificación de IP-Connect, la cuenta de prueba se desactivará.
Certificación
La certificación de IP-Connect se llevará a cabo una vez que se haya completado el desarrollo de toda la funcionalidad. Es importante tener en cuenta que las pruebas (incluidas las pruebas negativas) de todas las funciones desarrolladas de IP-Connect deben completarse antes de la certificación. El socio lleva a cabo el proceso de certificación utilizando una plataforma de certificación que proporcionará IP-Connect. El proceso de certificación debe completarse utilizando la información presentada en el sistema asociado, no la información presentada dentro de la cuenta de prueba de IP-Connect de los socios. No hay restricciones sobre la cantidad de veces que un socio puede intentar la certificación.
Una vez que se completa la certificación, los resultados serán revisados por el equipo de desarrollo API de IP-Connect. IP-Connect y el equipo de desarrollo de API se reservan el derecho de retrasar la implementación de los entornos de producción de IP-Connect hasta que estén satisfechos con los resultados.
Autenticación
Esta sección explica la autenticación y cómo enviar una solicitud a la interfaz IP-Connect. Para realizar la autenticación, IP-Connect intenta extraer la información de nombre de usuario y contraseña que debe incluirse en las solicitudes XML. Un elemento llamado "UserNameToken" se encuentra sobre el elemento raíz de cualquier tipo de solicitud y contiene dos componentes respectivamente para el nombre de usuario y contraseña.
Leyenda O = Opcional
| O | Número | Elemento /@Atributo | Tipo de dato | Descripción |
|---|---|---|---|---|
| 1 | Security | Nodo raíz | ||
| 1 | UsernameToken | Nodo | Contenedor de datos para identificación. | |
| 1 | Usarname | String | Usuario para solicitudes. | |
| 1 | Password | String | Contraseña de usuario para solicitudes. |
<Security xmlns="http://tempuri.org/">
<UsernameToken xmlns="">
<Username>UserTest</Username>
<Password>P4sswrdT3st</Password>
</UsernameToken>
</Security>
O bien, el nombre de usuario y la contraseña deben estar en texto claro en el mensaje XML para que IP-Connect los lea y otorgue acceso a la propiedad.
Para los socios que nunca antes trabajaron con IP-Connect, y no saben cómo comenzar, consulte la sección Cómo conectarse de la API de tarifas y disponibilidad.
Disponibilidad, solicitud de tarifas (RQ) y respuesta (RS)
Las solicitudes de disponibilidad y tarifas permiten a los socios de IP-Connect, enviar actualizaciones de IP-Connect sobre la disponibilidad y las tasas de hasta 1 año. A continuación se muestra un par de mensajes de solicitud y respuesta a modo de muestra para la disponibilidad y actualizaciones. Para los socios que deseen experimentar con la API, las siguientes solicitudes se pueden publicar directamente en la interfaz de IP-Connect en https:/services.expediapartnercentral.com/eqc/ar. Asegúrese de incluir content type = text / xml en su encabezado http.
Ejemplo de solicitud (RQ)
Leyenda O = Opcional
| O | Número | Elemento /@Atributo | Tipo de dato | Descripción |
|---|---|---|---|---|
| 1 | OTA_HotelAvailNotifRQ | Nodo raíz | ||
| 1 | @Version | Decimal | Versión.Actualmente 1.0. | |
| 1 | @TimeStamp | DateTime | Tiempo de transacción. | |
| 1 | @EchoToken | String | Identificador global único para la solicitud, esta debe ser reflejada como un EchoToken en la respuesta. | |
| Pos | Nodo | Información de origen de la petición. | ||
| Source | Nodo | Contiene información referente a la fuente de la petición. | ||
| RequestorID | Nodo | Contiene información del solicitante. | ||
| @Type | Integer | Tipo de solicitud. | ||
| @ID | String | Identificador de origen para petición. | ||
| AvailStatusMessages | Nodo | Contiene los mensajes de disponibilidad. | ||
| @HotelCode | String | Código de la propiedad a la que se actualiza la disponibilidad. | ||
| AvailStatusMessage | Nodo | Contiene los mensajes de disponibilidad. Puede haber varios de estos nodos por solicitud. | ||
| @BookinLimit | Integer | Establece el numero de habitaciones disponibles para venta. | ||
| StatusApplicationControl | Nodo | Contiene información del estado de la habitación. | ||
| @Start | Date | Fecha de inicio para disponibilidad. Esta es inclusiva. | ||
| @End | Date | Fecha de cierre para disponibilidad. Esta es inclusiva. | ||
| @RatePlanCode | String | Identifica la tarifa. RatePlanCode a usar en conjunto con InvTypeCode para identificar la habitación a actualizar. | ||
| @InvTypeCode | String | Identifica la habitación. InvTypeCode a usar en conjunto con RatePlanCode para identificar la habitación a actualizar. | ||
| RestrictionStatus | Nodo | Este representa el estado para ventas. | ||
| @Status | String | Obligatorio si RestrictionStatus esta presente. Puede ser Open: para venta de habitación o Close: para detener la venta de habitación. |
<soap:Envelope>
<soap:Header>
<Security xmlns="http://tempuri.org/">
<UsernameToken xmlns="">
<Username>UserMision</Username>
<Password>Un1v1s1t</Password>
</UsernameToken>
</Security>
</soap:Header>
<soap:Body>
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2005-08-01T09:30:47+08:00" EchoToken="abc123">
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source>
<RequestorID Type="22" ID="PMS1" />
</Source>
</POS>
<AvailStatusMessages HotelCode="6972" xmlns="http://www.opentravel.org/OTA/2003/05">
<AvailStatusMessage BookingLimit="50">
<StatusApplicationControl Start="20180901" End="20180930" RatePlanCode="BASE" InvTypeCode="D2D" />
<RestrictionStatus Status="Open" />
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
</soap:Body>
</soap:Envelope>
Ejemplo de respuesta (RS)
| O | Número | Elemento /@Atributo | Tipo de dato | Descripción |
|---|---|---|---|---|
| 1 | OTA_ResRetriveRS | Nodo raíz | ||
| @EchoToken | String | Identificador global único para la solicitud, esta debe ser reflejada como un EchoToken en la respuesta. | ||
| @Version | Decimal | Versión.Actualmente 1.0. | ||
| ReservationsList | Nodo | Contenedor de toda la información correspondiente a reservaciónes. | ||
| HotelReservation | Nodo | Este contiene los datos de reservación. de hotel | ||
| @CreateDateTime | String | Fecha de reserva. | ||
| @ResStatus | String | Estado de la reserva. | ||
| POS | Nodo | Información de origen de la petición. | ||
| Source | Nodo | Contiene información referente a la fuente de la petición. | ||
| RequestorID | Nodo | Contiene información del solicitante. | ||
| @Type | Integer | Tipo de solicitud. | ||
| @ID | String | Identificador de origen para petición. | ||
| BookingChannel | Nodo | Contiene información referente a los canales de reservación. | ||
| @Primary | Bool | Indicador para Canales primarios. | ||
| @Type | Integer | Id de canal. | ||
| CompanyName | Nodo | Contenedor para datos de compañía. | ||
| @Code | String | Código de website. | ||
| UniqueID | Nodo | Contenedor de identificadores. | ||
| @ID | String | Identificador UniqueId. | ||
| @Type | Integer | Tipo UniqueId. | ||
| @ID_Context | String | Mensaje de UniqueId. | ||
| RoomStays / RoomStay | Nodo | Contienen información de estancia. | ||
| @MarketCode | String | Código de referencia. | ||
| 1:n | RoomTypes /RoomType | Nodo | Contienen formación referente a los tipos de habitación. | |
| @RoomType | String | Nombre de la habitación. | ||
| @RoomTypeCode | String | Código de la habitación. | ||
| RatePlans /RatePlan | Nodo | Contenedores para información de planes tarifarios. | ||
| @EffectiveDate | String | Fecha de inicio para tarifa. | ||
| @ExpireDate | String | Fecha de expiración de tarifa. | ||
| @RatePlanCode | String | Código de plan tarifa. | ||
| @RatePlanName | String | Nombre del plan de tarifa. | ||
| RoomRates / RoomRate | Nodo | Contienen datos de tarifas por habitación. | ||
| @NumberOfUnits | Integer | Contador. | ||
| @RatePlanCode | String | Código de tarifa. | ||
| @RoomTypeCode | String | Código para tipo de habitación. | ||
| Rates / Rate | Nodo | Contenedores para datos de tarifas | ||
| @EffectiveDate | String | Fecha de inicio para tarifa. | ||
| @ExpireDate | String | Fecha de exploración de tarifa. | ||
| @RateTimeUnit | String | Formato de aplicación. | ||
| @UnitMultiplier | Integer | Multiplicador de aplicación. | ||
| Base | Nodo | Contiene montos de la estadía con o sin impuesto. | ||
| @AmountAfterTax | Double | Tarifa sin impuestos. | ||
| @AmountBeforeTax | Double | Tarifa con impuestos. | ||
| @CurrencyCode | String | Moneda. | ||
| 1:n | Total | Nodo | Total a pagar. | |
| @AmountAfterTax | Double | Tarifa sin impuestos. | ||
| @AmountBeforeTax | Double | Tarifa con impuestos. | ||
| @CurrencyCode | String | Moneda. | ||
| 1:n | GuestCounts /GuestCount | Nodo | Detalles del conteo para huéspedes. | |
| @AgeQualifyingCode | Integer | Código de huéspedes. 8: niños 10: adultos. | ||
| @Count | Integer | Conteo de huéspedes. | ||
| TimeSpan | Nodo | Contiene datos del tiempo de aplicación. | ||
| @End | String | Fecha de terminación. | ||
| @Start | String | Fecha de Inicio. | ||
| Taxes | Nodo | Contiene datos de impuestos. | ||
| @Amount | Double | Total de Impuestos. | ||
| BasicPropertyInfo | Nodo | Información básica de la propiedad. | ||
| @HotelCode | Integer | Código de hotel. | ||
| Comments /Comment | Nodo | Información de comentarios. | ||
| @Name | String | Nombre del huésped. | ||
| ResGuests /ResGuest | Nodo | Contiene datos sobre huéspedes. | ||
| @PrimaryIndicator | Bool | Indicador para huésped primario. | ||
| Profiles | Nodo | Información de perfiles. | ||
| ProfileInfo | Nodo | Información de perfiles. | ||
| Profile | Nodo | Información de perfiles. | ||
| @ProfileType | Integer | Identificador para el tipo de perfil de usuario. | ||
| Customer | Nodo | Datos del cliente. | ||
| PersonName | Nodo | Nombre del cliente. | ||
| GivenName | Nodo | Nombre del huésped. | ||
| Surname | Nodo | Apellido del huésped. | ||
| Telephone | Nodo | Teléfono. | ||
| @PhoneNumber | String | Numero de teléfono. | ||
| Nodo | Correo. | |||
| Address | Nodo | Dirección. | ||
| ResGlobalInfo | Nodo | Información global. | ||
| Comments /Comment | Nodo | Datos de comentarios. | ||
| @Name | String | Nombre del origen para el comentario | ||
| @Amount | Double | Total de impuestos. | ||
| HotelReservationIDs /HotelReservationID | Nodo | Identificadores de reservación. | ||
| @ResID_Type | Integer | Identificador para tipo de reserva. | ||
| @ResID_Value | String | Identificador de reservación. |
<OTA_ResRetriveRS EchoToken="bcad0d19-c300-45cc-a70b-040051d320d2" Version="0" xmlns="http://tempuri.org/">
<ReservationsList xmlns="http://www.opentravel.org/OTA/2003/05">
<HotelReservation CreateDateTime="2019-04-04T11:03:00" ResStatus="Book">
<POS>
<Source>
<RequestorID ID="" Type="22"/>
<BookingChannel Primary="true" Type="7">
<CompanyName Code="WebSite">WebSite</CompanyName>
</BookingChannel>
</Source>
</POS>
<UniqueID ID="13910042" Type="14"/>
<UniqueID ID="13910042" ID_Context="MESSAGE_UNIQUE_ID" Type="16"/>
<RoomStays>
<RoomStay MarketCode="R" >
<RoomTypes>
<RoomType RoomType="Double Room 2 Queen Beds" RoomTypeCode="D2Q"/>
</RoomTypes>
<RatePlans>
<RatePlan EffectiveDate="2019-05-01" ExpireDate="2019-05-03" RatePlanCode="RAC" RatePlanName="Tarifa Estandar"/>
</RatePlans>
<RoomRates>
<RoomRate NumberOfUnits="1" RatePlanCode="RAC" RoomTypeCode="D2Q">
<Rates>
<Rate EffectiveDate="2019-05-01" ExpireDate="2019-05-02" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountAfterTax="500.00" AmountBeforeTax="420.17" CurrencyCode="MXN"/>
<Total AmountAfterTax="500.00" AmountBeforeTax="420.17" CurrencyCode="MXN"/>
</Rate>
<Rate EffectiveDate="2019-05-02" ExpireDate="2019-05-03" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountAfterTax="500.00" AmountBeforeTax="420.17" CurrencyCode="MXN"/>
<Total AmountAfterTax="500.00" AmountBeforeTax="420.17" CurrencyCode="MXN"/>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
</GuestCounts>
<TimeSpan End="2019-05-03" Start="2019-05-01"/>
<Total AmountAfterTax="1000.00" AmountBeforeTax="840.34" CurrencyCode="MXN">
<Taxes Amount="159.66"/>
</Total>
<BasicPropertyInfo HotelCode="6538"/>
<Comments>
<Comment Name="Comments">
<Text/>
</Comment>
</Comments>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest PrimaryIndicator="true">
<Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>Jose</GivenName>
<Surname>Nuñez</Surname>
</PersonName>
<Telephone PhoneNumber="5555555555"/>
<Email>josealberto@internetpowerhotel.com</Email>
<Address>
<AddressLine/>
<CityName/>
<PostalCode/>
<StateProv/>
<CountryName>MX</CountryName>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<Comments>
<Comment Name="Comments">
<Text/>
</Comment>
</Comments>
<Total AmountAfterTax="3000.00" AmountBeforeTax="2521.01" CurrencyCode="MXN">
<Taxes Amount="478.99"/>
</Total>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="1391004"/>
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</ReservationsList>
</OTA_ResRetriveRS>
Conexión a producción
Cuando los socios de IP-Connect estén listos para comenzar a enviar mensajes de solicitudes a IP-Connect para actualizar sus tarifas y disponibilidad, deben ponerse en contacto con su Administrador de cuentas de conectividad o comunicarse con nosotros en soporte@internetpowerhotel.com para obtener el derecho a utilizar IP-Connect. IP-Connect luego proporcionará la información necesaria para conectarse a nuestro entorno en vivo.
