diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx index 2ab29ae71..9b7247385 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx @@ -100,6 +100,7 @@ export default async function PaymentCallbackPage( refId={refId} sig={sig} successRedirectUrl={confirmationUrl} + cardType={booking.guaranteeInfo?.cardType} /> ) } diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx index f2273abac..96d3808e2 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/HandleSuccessCallback.tsx @@ -7,10 +7,9 @@ import { BookingStatusEnum, MEMBERSHIP_FAILED_ERROR } from "@/constants/booking" import LoadingSpinner from "@/components/LoadingSpinner" import { useHandleBookingStatus } from "@/hooks/booking/useHandleBookingStatus" -import { trackEvent } from "@/utils/tracking/base" -import { clearGlaSessionStorage, readGlaFromSessionStorage } from "./helpers" import TimeoutSpinner from "./TimeoutSpinner" +import { trackGuaranteeBookingSuccess } from "./tracking" const validBookingStatuses = [ BookingStatusEnum.PaymentSucceeded, @@ -21,12 +20,14 @@ interface HandleStatusPollingProps { refId: string sig: string successRedirectUrl: string + cardType?: string } export default function HandleSuccessCallback({ refId, sig, successRedirectUrl, + cardType, }: HandleStatusPollingProps) { const router = useRouter() @@ -57,23 +58,7 @@ export default function HandleSuccessCallback({ bookingStatus.booking.reservationStatus as BookingStatusEnum ) ) { - const glaSessionData = readGlaFromSessionStorage() - if (glaSessionData) { - trackEvent({ - event: "guaranteeBookingSuccess", - hotelInfo: { - lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee, - hotelId: glaSessionData.hotelId, - guaranteedProduct: "room", - }, - paymentInfo: { - hotelId: glaSessionData.hotelId, - type: glaSessionData.paymentMethod, - isSavedCreditCard: glaSessionData.isSavedCreditCard, - }, - }) - clearGlaSessionStorage() - } + trackGuaranteeBookingSuccess(cardType) // a successful booking can still have membership errors const membershipFailedError = bookingStatus.booking.errors.find( (e) => e.errorCode === MEMBERSHIP_FAILED_ERROR @@ -84,7 +69,7 @@ export default function HandleSuccessCallback({ router.replace(`${successRedirectUrl}${errorParam}`) } - }, [bookingStatus, successRedirectUrl, router]) + }, [bookingStatus, cardType, successRedirectUrl, router]) if (isTimeout || error) { return diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/tracking.ts b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/tracking.ts new file mode 100644 index 000000000..16e7409ad --- /dev/null +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentCallback/tracking.ts @@ -0,0 +1,23 @@ +import { trackEvent } from "@/utils/tracking/base" + +import { clearGlaSessionStorage, readGlaFromSessionStorage } from "./helpers" + +export function trackGuaranteeBookingSuccess(cardType?: string) { + const glaSessionData = readGlaFromSessionStorage() + if (glaSessionData) { + trackEvent({ + event: "guaranteeBookingSuccess", + hotelInfo: { + lateArrivalGuarantee: glaSessionData.lateArrivalGuarantee, + hotelId: glaSessionData.hotelId, + guaranteedProduct: "room", + }, + paymentInfo: { + hotelId: glaSessionData.hotelId, + type: cardType ?? glaSessionData.paymentMethod, + isSavedCreditCard: glaSessionData.isSavedCreditCard, + }, + }) + } + clearGlaSessionStorage() +}