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"); }