protected void CompletePaypalCheckout(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }

            var orderId            = string.Empty;
            var bCheckoutCompleted = false;

            try
            {
                // end create new user
                var newUser = CreateUser();

                _session.InCheckoutProccess     = false;
                _session.InOrderCreationProcess = true;

                AuthenticationService.UpdateSession(_session);

                if (_session.BasketId == null)
                {
                    Log("Invalid or missing basket in session. Id:" + _session.Id);
                    return;
                }

                //_basket = BasketService.GetBasket(_session.BasketId.Value);

                var isoCurrencyCode = CurrencyService.GetCurrencyIsoCodeById(_session.CurrencyId);

                Log("Paypal log- payment to take next, next is order");

                var payPalReturn = PaypalService.ConfirmPayment((_basket.Total.ToString(CultureInfo.InvariantCulture)), isoCurrencyCode, _session.PayPalToken, _session.PayPalPayerId);

                Log("Paypal log- payment taken, next is order, paypal return status: " + payPalReturn.ErrorMessage);

                _session.PayPalOrderId = payPalReturn.Transaction_Id;

                AuthenticationService.UpdateSession(_session);

                if (payPalReturn.IsError)
                {
                    throw new Exception(payPalReturn.ErrorMessage);
                }

                //create the order.
                var order = CheckoutService.CreateOrderPayPal(_session, _basket, newUser, GetClientIpAddress(), CurrentLanguageId,
                                                              MicrositeId);

                //persist address
                CheckoutService.CreateAddressPaypal(order, _session, newUser);

                //create barcodes
                Log("Payment success - Generate barcode");
                GenerateOrderBarcodes(order);

                //send booking to ECR.
                Log("Sending booking to ECR basketid: " + _basket.Id);
                var result = SendBookingToEcr(order);

                //result from booking must be there.
                if (result == null)
                {
                    JumpToOrderCreationError("Booking_failed", "SendBooking() to Ecr Failed");
                    return;
                }

                //clear cookie sessions and remove session from checkout mode
                ClearCheckoutCookies();

                //Prepare email notifications
                CreateOrderConfirmationEmail(order);
                orderId = order.Id.ToString();

                bCheckoutCompleted = true;
            }
            catch (Exception ex)
            {
                Log("Paypal Payment Error: " + ex.Message);
                bCheckoutCompleted = false;
            }
            finally
            {
                UnlockSessionFromOrderCreationLock(_session);
                Log("PayPal Payment - Session unlocked");
            }


            //Redirect user to order confirmation page or error
            Response.Redirect(bCheckoutCompleted
                ? string.Format("~/BookingCompleted.aspx?oid={0}", orderId)
                : @"~/ErrorPages/BookingError.aspx");
        }