public void InitiateCheckoutAuthenticationReturnNullTest() { CheckoutResponse response = null; JsonResult actResult = null; var randomKey = Guid.NewGuid().ToString("N"); var privateKey = ConfigurationManager.AppSettings["AppTestSecretKey"]; var signature = Md5Helper.GetMd5Hash(randomKey + privateKey + 123 + "AB-123" + 500); var request = new Mock <CheckoutRequest>().Object; request.type = "sale"; request.randomkey = randomKey; request.orderid = 123; request.invoice = "AB-123"; request.amounttotal = 500; request.signature = signature; _gatewayAuthenticationService.Setup(m => m.GetGatewayToken(It.IsAny <string>(), It.IsAny <string>())).Returns(() => null); actResult = _checkoutController.InitiateCheckout(request); Assert.IsNotNull(actResult); Assert.IsInstanceOf <JsonResult>(actResult); response = actResult.Data as CheckoutResponse; Assert.IsNotNull(response); Assert.IsInstanceOf <CheckoutResponse>(response); StringAssert.AreEqualIgnoringCase("101", response.errorcode); StringAssert.Contains("Gateway authentication transaction failed.", response.errormessage); }
void HandleCheckOutResponse(CheckoutResponse response) { checkOut.Invoke(new Action(() => { checkOut.HandleCheckOutResponse(response.Payload.Success, response.Payload.DueDate[0].Date); })); }
public void InitiateCheckoutSignatureValidationTest() { CheckoutResponse response = null; JsonResult actResult = null; // Signature validation var randomKey = Guid.NewGuid().ToString("N"); var request = new Mock <CheckoutRequest>().Object; request.type = "sale"; request.randomkey = randomKey; request.orderid = 123; request.invoice = "AB-123"; request.amounttotal = 500; request.signature = "4545A3SD22DD"; actResult = _checkoutController.InitiateCheckout(request); Assert.IsNotNull(actResult); Assert.IsInstanceOf <JsonResult>(actResult); response = actResult.Data as CheckoutResponse; Assert.IsNotNull(response); Assert.IsInstanceOf <CheckoutResponse>(response); Assert.That("100", Is.EqualTo(response.errorcode)); Assert.That("Bad Request. Invalid Signature.", Is.EqualTo(response.errormessage)); }
public CheckoutResponse ProcessCheckout(CheckoutRequest checkoutRequest) { CheckoutResponse response = new CheckoutResponse(); var customer = _messageMapper.MapToCustomer(checkoutRequest.CustomerDto); var person = customer.Person; _personRepositery.SavePerson(person); var address = _messageMapper.MapTopAddress(checkoutRequest.addressDto); _addressRespository.SaveAddress(address); customer.PersonId = person.Id; customer.Person = person; _customerRepository.SaveCustomer(customer); var cart = _cartService.GetCart(); if (cart != null) { var cartItems = _cartItemRepository.FindCartItemsById(cart.Id); var cartTotal = _cartService.GetCartTotal(); decimal shippingCharge = 0; var orderTotal = cartTotal + shippingCharge; var order = new Order { OrderTotal = orderTotal, OrderItemTotal = cartTotal, ShippingCharge = shippingCharge, AddressId = address.Id, DeliveryAddresses = address, CustomerId = customer.Id, Customer = customer, OrderStatus = OrderStatus.Submitted }; _orderRepository.SaveOrder(order); foreach (var cartItem in cartItems) { var orderItem = new OrderItem { Quantity = cartItem.Quantity, Order = order, OrderId = order.Id, Product = cartItem.product, ProductId = cartItem.ProductId }; _orderItemRepository.SaveOrderItem(orderItem); } _cartRepository.DeleteCart(cart); response.StatusCode = System.Net.HttpStatusCode.Created; response.Messages.Add(item: "Order Created"); } else { response.StatusCode = System.Net.HttpStatusCode.NoContent; response.Messages.Add(item: "Order Emptiy"); } return(response); }
public void TestInitiateCheckout() { Guid userId = new Guid("92A8AA97-294C-487F-8B82-4DA9836C1136"); User user = DbCommonManager.GetUser(userId); Configuration config = new Configuration(); PayUManager payUManager = new PayUManager(config); CheckoutRequest cr = new CheckoutRequest(); cr.User = user; cr.CheckoutItems = new CheckoutItems(); cr.CheckoutItems.TotalCalcPrice = 135; List <CheckoutItem> cil = new List <CheckoutItem>(); CheckoutItem ci = new CheckoutItem(); ci.SID = 1; ci.Qty = 1; ci.ID = 1; ci.IPID = 1; cil.Add(ci); cr.CheckoutItems.Items = cil.ToArray(); CheckoutResponse response = payUManager.InitiateCheckout(cr); }
public void OnCheckout(Session session, CheckoutRequest request, CheckoutResponse response) { Console.WriteLine("Checkout Message"); // обязательные поля response.Ok = true; response.RenewalOk = false; response.MagneticMedia = true; response.Desensitize = true; response.TransactionDate = DateTime.Now; response.InstitutionId = "The Institiotion Id"; response.PatronIdentifier = request.PatronIdentifier + " (took from request)"; response.ItemIdentifier = request.ItemIdentifier + " (also took from request)"; response.TitleIdentifier = "The MEGA Title"; response.DueDate = DateTime.Now; // необязательные поля response.FeeType = FeeType.OTHER_UNKNOWN; response.SecurityInhibit = true; response.CurrencyType = Currency.USD; response.FeeAmount = 100; response.MediaType = MediaType.BOOK_WITH_CD; response.ItemProperties = "The SUPA DUPA Properies"; response.TransactionId = "The Trans Id"; response.ScreenMessage = "F**K The Police"; response.PrintLine = "The Print Line"; }
public CheckoutResponse Checkout() { var response = new CheckoutResponse { CheckedOutBasket = _basket, Total = _basket.Sum(b => b.Price * b.Quantity) }; _basket = new List <BasketItem>(); return(response); }
public HttpResponseMessage InitiatePayUCheckout() { HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK); string strRequest = string.Empty; try { strRequest = Request.Content.ReadAsStringAsync().Result; if (string.IsNullOrWhiteSpace(strRequest)) { httpResponseMessage.StatusCode = System.Net.HttpStatusCode.InternalServerError; httpResponseMessage.Content = new StringContent(Constants.INVALID_REQUEST); return(httpResponseMessage); } JsonSerializerHelper serializer = new JsonSerializerHelper(); CheckoutRequest checkoutRequest = (CheckoutRequest)serializer.Deserialize(strRequest, typeof(CheckoutRequest)); if (checkoutRequest == null) { httpResponseMessage.StatusCode = System.Net.HttpStatusCode.InternalServerError; httpResponseMessage.Content = new StringContent(Constants.INVALID_REQUEST); return(httpResponseMessage); } Configuration config = new Configuration(); config.PayUFailureUrl = "FailureUrl"; config.PayUSuccessUrl = "SuccessUrl"; config.PayUSalt = "Salt"; config.PayUKey = "Key"; PayUManager payUManager = new PayUManager(config); CheckoutResponse response = payUManager.InitiateCheckout(checkoutRequest); if (response != null && response.Status == Status.Success) { string responseContent = serializer.Serialize(response); httpResponseMessage.Content = new StringContent(responseContent, Encoding.UTF8, "application/json"); } else { httpResponseMessage.StatusCode = System.Net.HttpStatusCode.InternalServerError; httpResponseMessage.Content = new StringContent(Constants.PROCESSING_ERROR); } } catch (Exception ex) { this.HandleException(ex, strRequest); httpResponseMessage.StatusCode = System.Net.HttpStatusCode.InternalServerError; httpResponseMessage.Content = new StringContent(Constants.PROCESSING_ERROR); } return(httpResponseMessage); }
protected void CreditCardButton_Click(object sender, EventArgs e) { if (Page.IsValid && CustomValidation()) { //CREATE THE PAYMENT OBJECT Payment payment = GetPayment(); //PROCESS CHECKING OUT EVENT bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(payment); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { //PROCESS A CHECKOUT ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(_Basket, payment); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest, false); if (checkoutResponse.Success) { if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } } else { CreditCardButton.Text = "Pay With Card"; } // IF NOT SUCCESSFULL / ENABLE THE CHECKOUT BUTTON CreditCardButton.Enabled = true; FormIsSubmitted.Value = "0"; }
public void CompleteCheckout() { //int id = this.transform.parent.parent.parent.parent.GetComponent<cartId>().cId; int id = 5; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://dc3e9063.ngrok.io/carts/" + id + "/checkout"); request.Method = "POST"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); string jsonResponse = reader.ReadToEnd(); CheckoutResponse parsedResponse = JsonUtility.FromJson <CheckoutResponse>(jsonResponse); StartCoroutine(updateCheckout(parsedResponse.message)); }
protected void CheckButton_Click(object sender, EventArgs e) { if (Page.IsValid) { //CREATE THE PAYMENT OBJECT Payment payment = GetPayment(); //PROCESS CHECKING OUT EVENT bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(payment); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { //PROCESS THE CHECKOUT ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(_Basket, payment); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest, false); if (checkoutResponse.Success) { if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } } else { CheckButton.Text = string.Format("Pay by {0}", _PaymentMethod.Name); } }
public void InitiateCheckoutPassedTest() { CheckoutResponse response = null; JsonResult actResult = null; var randomKey = Guid.NewGuid().ToString("N"); var privateKey = ConfigurationManager.AppSettings["AppTestSecretKey"]; var signature = Md5Helper.GetMd5Hash(randomKey + privateKey + 123 + "AB-123" + 500); var request = new Mock <CheckoutRequest>().Object; request.type = "sale"; request.randomkey = randomKey; request.orderid = 123; request.invoice = "AB-123"; request.amounttotal = 500; request.signature = signature; var token = new Mock <GatewayToken>().Object; token.token = Guid.NewGuid().ToString("N"); token.expiration_date = DateTime.Now.AddDays(1).ToString(); _gatewayAuthenticationService.Setup(m => m.GetGatewayToken(It.IsAny <string>(), It.IsAny <string>())).Returns(token); var gatewayCheckoutResponse = new Mock <GatewayCheckoutResponse>().Object; gatewayCheckoutResponse.checkout_url = "www.test.com"; _gatewayChekoutService.Setup(x => x.InitiateGatewayChechout(request, token)).Returns(gatewayCheckoutResponse); actResult = _checkoutController.InitiateCheckout(request); Assert.IsNotNull(actResult); Assert.IsInstanceOf <JsonResult>(actResult); response = actResult.Data as CheckoutResponse; Assert.IsNotNull(response); Assert.IsInstanceOf <CheckoutResponse>(response); Assert.IsEmpty(response.errorcode, string.Empty); Assert.IsEmpty(response.errormessage, string.Empty); Assert.IsNotEmpty(response.redirecturl); StringAssert.AreEqualIgnoringCase("www.test.com", response.redirecturl); StringAssert.AreEqualIgnoringCase(Md5Helper.GetMd5Hash(response.randomkey + privateKey + "" + response.redirecturl), response.signature); }
protected void PlaceOrderButton_Click(object sender, EventArgs e) { MethodInfo widgetMethod = _AmazonProvider.GetType().GetMethod("Checkout"); string purchaseContractId = Request.QueryString["purchaseContractId"]; object[] parameters = new object[] { AbleContext.Current.User.Basket, purchaseContractId }; CheckoutResponse result = (CheckoutResponse)widgetMethod.Invoke(_AmazonProvider, parameters); if (!result.Success) { PlaceOrderButton.Text = result.WarningMessages[0]; } else { Response.Redirect("~/Members/MyOrder.aspx?OrderNumber=" + result.Order.OrderNumber); } }
protected void PhoneCallButton_Click(object sender, EventArgs e) { // CREATE THE PAYMENT OBJECT Payment payment = GetPayment(); payment.ReferenceNumber = AbleContext.Current.User.PrimaryAddress.Phone; // PROCESS CHECKING OUT EVENT bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(payment); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { // CONTINUE TO PROCESS THE CHECKOUT Basket basket = AbleContext.Current.User.Basket; ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(basket, payment); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest); if (checkoutResponse.Success) { if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } }
void CheckedOut(object sender, CheckedOutEventArgs e) { CheckoutResponse response = e.CheckoutResponse; if (response.Success) { // STOP TRACKING THE ANONYMOUS USER Session["CreateOrder_AnonUserId"] = null; // CREATE / LINK USER ACCOUNT IF NEEDED if (RegisterPanel.Visible && CreateAccount.Checked) { if (_ExistingUser == null) { // THERE IS NO EXISTING ACCOUNT, SO CREATE A NEW USER string email = _User.PrimaryAddress.Email; _User.UserName = email; _User.Email = email; _User.IsApproved = true; _User.Save(); _User.SetPassword(Password.Text); _User.Passwords[0].ForceExpiration = ForceExpiration.Checked; _User.Save(); } else { // THERE IS AN EXISTING USER, SO MIGRATE THIS ORDER OrderDataSource.UpdateUser(_UserId, _ExistingUser.Id); AddressDataSource.UpdateUser(_UserId, _ExistingUser.Id); } } // REDIRECT TO THE FINAL ORDER Response.Redirect("~/Admin/Orders/ViewOrder.aspx?OrderNumber=" + response.Order.OrderNumber); } else { // SHOW ERRORS TO CUSTOMER WarningMessageList.DataSource = e.CheckoutResponse.WarningMessages; WarningMessageList.DataBind(); } }
public void InitiateCheckoutTransactionTypeValidationTest() { CheckoutResponse response = null; JsonResult actResult = null; //Transaction type validation var request = new Mock <CheckoutRequest>(); request.Object.type = "any wrong type"; actResult = _checkoutController.InitiateCheckout(request.Object); Assert.IsNotNull(actResult); Assert.IsInstanceOf <JsonResult>(actResult); response = actResult.Data as CheckoutResponse; Assert.IsNotNull(response); Assert.IsInstanceOf <CheckoutResponse>(response); Assert.That("100", Is.EqualTo(response.errorcode)); Assert.That("Bad Request. Invalid Transaction Type.", Is.EqualTo(response.errormessage)); }
public static void InitiateCheckout() { Guid userId = new Guid("92A8AA97-294C-487F-8B82-4DA9836C1136"); User user = DbCommonManager.GetUser(userId); Configuration config = new Configuration(); config.PayUFailureUrl = "FailureUrl"; config.PayUSuccessUrl = "SuccessUrl"; config.PayUSalt = "Salt"; config.PayUKey = "Key"; PayUManager payUManager = new PayUManager(config); CheckoutRequest cr = new CheckoutRequest(); cr.User = user; cr.DeliveryAddress = new OrderDeliveryAddressMap(); cr.DeliveryAddress.City = "Bangalore"; cr.DeliveryAddress.ZipCode = "560068"; cr.DeliveryAddress.State = "Karnataka"; cr.DeliveryAddress.Address = "No 204 Sunnyvale apartment, 15th main road, AECS layout block A, Singasandra/Kudlu"; CheckoutItems coi = new CheckoutItems(); cr.CheckoutItems = coi; List <CheckoutItem> cil = new List <CheckoutItem>(); CheckoutItem ci = new CheckoutItem(); ci.SID = 1; ci.Qty = 1; ci.ID = 1; ci.IPID = 1; ci.CalcPrice = 135; cil.Add(ci); cr.CheckoutItems.Items = cil.ToArray(); cr.CheckoutItems.TotalCalcPrice = 135; CheckoutResponse response = payUManager.InitiateCheckout(cr); }
public async Task <IActionResult> Post([FromBody] CheckoutRequest request) { if (request == null || request.PostalCode == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest()); } var checkoutResult = await _checkoutService.Checkout(request.PostalCode); var response = new CheckoutResponse() { PreTax = checkoutResult.PreTax, PostTax = checkoutResult.PostTax }; return(new OkObjectResult(response)); }
protected void CompleteButton_Click(object sender, EventArgs e) { bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { Basket basket = AbleContext.Current.User.Basket; //PROCESS THE CHECKOUT ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(basket); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest); if (checkoutResponse.Success) { if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } }
public CheckoutResponse InitiateCheckout(CheckoutRequest Request) { CheckoutResponse response = new CheckoutResponse(); // TODO - Logic to call TPro3 and get the response of it // create the responce to send to 3dcart with the responce recieved from TPro3 #region Test Data #if DEBUG response = new CheckoutResponse { paymenttoken = "abc123xyz321", redirecturl = "https://www.someurlpointingtotheircheckoutpage.com/script.asp", errorcode = "abc123", errormessage = "error message", randomkey = "999azswed23xyz", redirectmethod = "GET", signature = "md5(randomkey + app_privatekey + paymenttoken + redirecturl)" }; #endif #endregion return(response); }
protected void CompleteButton_Click(object sender, EventArgs e) { if (Page.IsValid) { bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { Basket basket = AbleContext.Current.User.Basket; //PROCESS THE CHECKOUT ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(basket); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest); if (checkoutResponse.Success) { GatewayPaymentProfile profile = null; this.Visible = true; if (ProfilesPH.Visible) { profile = GatewayPaymentProfileDataSource.Load(AlwaysConvert.ToInt(ProfilesList.SelectedValue)); } if (CardPH.Visible) { AccountDataDictionary cardDetails = new AccountDataDictionary(); cardDetails["AccountName"] = CardName.Text.Trim(); cardDetails["AccountNumber"] = CardNumber.Text.Trim(); cardDetails["ExpirationMonth"] = ExpirationMonth.SelectedItem.Value; cardDetails["ExpirationYear"] = ExpirationYear.SelectedItem.Value; cardDetails["SecurityCode"] = SecurityCode.Text.Trim(); profile = CreateProfile(cardDetails); } if (profile != null) { IList <Subscription> subscriptions = SubscriptionDataSource.LoadForOrder(checkoutResponse.Order.Id); foreach (Subscription subscription in subscriptions) { if (subscription.PaymentFrequency.HasValue && subscription.PaymentFrequencyUnit.HasValue) { subscription.PaymentProfile = profile; subscription.PaymentProcessingType = PaymentProcessingType.ArbProfileManaged; subscription.Save(); } } } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } } }
protected void GiftCertificateButton_Click(object sender, EventArgs e) { if (Page.IsValid) { bool checkOut = true; if (CheckingOut != null) { // CREATE THE PAYMENT OBJECT Payment payment = GetPayment(); CheckingOutEventArgs c = new CheckingOutEventArgs(payment); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { Basket basket = AbleContext.Current.User.Basket; GiftCertificateNumber.Text = StringHelper.StripHtml(GiftCertificateNumber.Text); GiftCertificate gc = GiftCertificateDataSource.LoadForSerialNumber(GiftCertificateNumber.Text); if (gc == null) { GiftCertPaymentErrors.Text = "This is not a valid gift certificate : " + GiftCertificateNumber.Text; } else if (gc.Balance <= 0) { GiftCertPaymentErrors.Text = "There is no balance left for this gift certificate : " + GiftCertificateNumber.Text; } else if (gc.IsExpired()) { GiftCertPaymentErrors.Text = "This gift certificate is expired : " + GiftCertificateNumber.Text; } else if (AlreadyInUse(basket, gc)) { GiftCertPaymentErrors.Text = "This gift certificate is already applied to your basket : " + GiftCertificateNumber.Text; } else { // process this gift certificate decimal basketTotal = basket.Items.TotalPrice(); BasketItem bitem = new BasketItem(); bitem.Basket = basket; bitem.OrderItemType = OrderItemType.GiftCertificatePayment; bitem.Price = -(gc.Balance > basketTotal ? basketTotal : gc.Balance); bitem.Quantity = 1; bitem.Name = gc.Name; bitem.Sku = gc.SerialNumber; basket.Items.Add(bitem); basket.Save(); decimal remBalance = basket.Items.TotalPrice(); if (remBalance > 0) { GiftCertPaymentErrors.Text = string.Format("A payment of {0} will be made using gift certificate {1}. It will leave a balance of {2} for this order. Please make additional payments.", gc.Balance.LSCurrencyFormat("lc"), GiftCertificateNumber.Text, remBalance.LSCurrencyFormat("lc")); } else { //payment done. process checkout ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(basket); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest); if (checkoutResponse.Success) { if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } } if (!string.IsNullOrEmpty(GiftCertPaymentErrors.Text)) { GiftCertErrorsPanel.Visible = true; } } } }
public CheckoutShippingRequest() { CheckoutResponse = new CheckoutResponse(); }
public void SetCheckout(CheckoutResponse checkout) { Add(Config.Keys.Checkout, checkout); }
public JsonResult InitiateCheckout(CheckoutRequest request) { CheckoutResponse response = null; var randomKey = Guid.NewGuid().ToString("N"); var privateKey = ConfigurationManager.AppSettings["AppTestSecretKey"]; var paymenttoken = ""; var checkouturl = ""; var errorMsg = ""; //validations if (!request.type.Equals("sale")) { errorMsg = "Bad Request. Invalid Transaction Type."; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "100", errorMsg); return(Json(response)); } if (request.signature != Md5Helper.GetMd5Hash(request.randomkey + privateKey + request.orderid + request.invoice + request.amounttotal)) { errorMsg = "Bad Request. Invalid Signature."; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "100", errorMsg); return(Json(response)); } //authentication GatewayToken token = null; try { token = _gatewayAuthenticationService.GetGatewayToken(request.username, request.password); } catch (Exception ex) { errorMsg = "Gateway authentication transaction failed. " + ex.Message; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "101", errorMsg); return(Json(response)); } if (token == null) { errorMsg = "Gateway authentication transaction failed."; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "101", errorMsg); return(Json(response)); } //checkout GatewayCheckoutResponse gatewayCheckoutResponse = null; try { gatewayCheckoutResponse = _gatewayChekoutService.InitiateGatewayChechout(request, token); } catch (Exception ex) { errorMsg = "Gateway checkout transaction failed. " + ex.Message; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "102", errorMsg); return(Json(response)); } if (gatewayCheckoutResponse == null) { errorMsg = "Gateway checkout transaction failed."; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "102", errorMsg); return(Json(response)); } checkouturl = gatewayCheckoutResponse.checkout_url; response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "", ""); return(Json(response)); }
public CheckoutResponse ProcessCheckout(CheckoutRequest request) { var response = new CheckoutResponse(); var customer = request.Customer.MapToCustomer(); var person = customer.Person; _personRepository.SavePerson(person); var address = request.Address.MapToAddress(); _addressRepository.SaveAddress(address); customer.PersonId = person.Id; customer.Person = person; _customerRepository.SaveCustomer(customer); var cart = _cartService.GetCart(); if (cart != null) { var cartItems = _cartItemRepository.FindCartItemsByCartId(cart.Id); var cartTotal = _cartService.GetCartTotal(); decimal shippingCharge = 0; var orderTotal = cartTotal + shippingCharge; var order = new Order { OrderTotal = orderTotal, OrderItemTotal = cartTotal, ShippingCharge = shippingCharge, AddressId = address.Id, DeliveryAddress = address, CustomerId = customer.Id, Customer = customer, OrderStatus = OrderStatus.Submitted }; _orderRepository.SaveOrder(order); foreach (var cartItem in cartItems) { var orderItem = new OrderItem { Quantity = cartItem.Quantity, Order = order, OrderId = order.Id, Product = cartItem.Product, ProductId = cartItem.ProductId }; _orderItemRepository.SaveOrderItem(orderItem); } _cartRepository.DeleteCart(cart); response.StatusCode = HttpStatusCode.Created; response.Messages.Add("Order created"); } else { response.StatusCode = HttpStatusCode.InternalServerError; response.Messages.Add("There is a problem creating the order"); } return(response); }
public CheckoutApplyCouponRequest() { CheckoutResponse = new CheckoutResponse(); }
public void Process() { TraceContext trace = WebTrace.GetTraceContext(); string traceKey = "GoogleCheckout.AC.NewOrderHandler"; trace.Write(traceKey, "Begin NewOrderHandler.Process, Google order number " + N1.googleordernumber); Order order = OrderDataSource.LoadForGoogleOrderNumber(N1.googleordernumber); if (order == null) // ordernumber not already entered { trace.Write(traceKey, "Google order not present in database, get basket"); Basket basket = AcHelper.GetAcBasket(N1.shoppingcart, true); if (basket == null) { trace.Write(traceKey, "Basket could not be obtained (End NewOrderHandler.Process)"); return; } //basket is ready. check if there are any order adjustments to be made trace.Write(traceKey, "Check for order adjustments"); OrderAdjustment orderAdj = N1.orderadjustment; if (orderAdj != null) { trace.Write(traceKey, "Order adjustments present, add to basket"); OrderAdjustmentHelper.DoOrderAdjustments(orderAdj, basket); } trace.Write(traceKey, "set billing address"); Users.Address primaryAddress = basket.User.PrimaryAddress; AcHelper.PopulateAcAddress(primaryAddress, N1.buyerbillingaddress); trace.Write(traceKey, "set shipping address"); Users.Address shipAddr = AcHelper.GetAcAddress(basket.User, N1.buyershippingaddress); basket.User.Addresses.Add(shipAddr); basket.User.Save(); trace.Write(traceKey, "package the basket"); basket.Package(false); if (basket.Shipments.Count > 0) { //there are shippable items / shipments //set shipment address and shipment method trace.Write(traceKey, "shippable items present, get shipping method"); ShipMethod shipMethod = AcHelper.GetShipMethod(basket); trace.Write(traceKey, "ship method is " + shipMethod.Name + " (ID" + shipMethod.ShipMethodId.ToString() + ")"); foreach (BasketShipment shipment in basket.Shipments) { shipment.AddressId = shipAddr.AddressId; shipment.ShipMethodId = shipMethod.ShipMethodId; shipment.Save(); } //have to link the shipping charges with some shipment. //we can't know which shipment. Just link to the first. trace.Write(traceKey, "assign shipping charges to first shipment"); BasketShipment basketShipment = basket.Shipments[0]; foreach (BasketItem item in basket.Items) { if (item.OrderItemType == OrderItemType.Shipping) { item.BasketShipmentId = basketShipment.BasketShipmentId; //update the sku and shipping method name so that scrubbed name is not used item.Name = shipMethod.Name; item.Sku = string.Empty; } } } trace.Write(traceKey, "save basket"); basket.Save(); //now checkout the order with null payment. //this will alow payment to be processed later trace.Write(traceKey, "submit basket checkout"); CheckoutRequest acCheckout = new CheckoutRequest(null); CheckoutResponse acResp = basket.Checkout(acCheckout); if (acResp.Success) { trace.Write(traceKey, "checkout was successful, update the google order number for AC order number " + acResp.OrderNumber.ToString()); order = OrderDataSource.Load(acResp.OrderId, false); if (order != null) { //update email address associated with order order.BillToEmail = N1.buyerbillingaddress.email; order.GoogleOrderNumber = N1.googleordernumber; bool isPaidByGc = false; //IF THERE IS ONE PAYMENT AND IT IS A GIFT CERTIFICATE //AND IT COVERS THE BALANCE OF THE ORDER THEN THIS IS THE GOOGLE PAYMENT if (order.Payments.Count == 1) { int gcPayMethodId = PaymentEngine.GetGiftCertificatePaymentMethod().PaymentMethodId; Payment payment = order.Payments[0]; if (payment.PaymentMethodId == gcPayMethodId) { if (payment.Amount == order.TotalCharges) { isPaidByGc = true; } } } if (!isPaidByGc) { //We need to create a new payment with status of authorization pending Payment payment = new Payment(); payment.PaymentMethodId = AcHelper.GetGCPaymentMethodId(this.GatewayInstance); payment.Amount = order.GetBalance(false); payment.OrderId = order.OrderId; payment.PaymentMethodName = "GoogleCheckout"; Transaction trans = new Transaction(); trans.TransactionType = TransactionType.Authorize; trans.TransactionStatus = TransactionStatus.Pending; trans.Amount = payment.Amount; trans.PaymentGatewayId = this.GatewayInstance.PaymentGatewayId; trans.ProviderTransactionId = N1.googleordernumber; trans.TransactionDate = N1.timestamp; payment.Transactions.Add(trans); payment.PaymentStatus = PaymentStatus.AuthorizationPending; order.Payments.Add(payment); } order.Save(); } else { OrderDataSource.UpdateGoogleOrderNumber(acResp.OrderId, N1.googleordernumber); } } else { trace.Write(traceKey, "checkout failed for google order"); CommerceBuilder.Utility.Logger.Warn("GoogleCheckout : New Order Checkout Failed."); } trace.Write(traceKey, "Send AC order number back to Google"); AcNotifier.AddMerchantOrderNumber(GatewayInstance, N1.googleordernumber, acResp.OrderNumber.ToString()); } else { //order number already entered. Just send notification trace.Write(traceKey, "Google order in database, send AC order number back to Google"); AcNotifier.AddMerchantOrderNumber(GatewayInstance, N1.googleordernumber, order.OrderNumber.ToString()); } trace.Write(traceKey, "End NewOrderHandler.Process"); }
public CheckedOutEventArgs(CheckoutResponse response) { this.CheckoutResponse = response; }
protected void CreditCardButton_Click(object sender, EventArgs e) { if (Page.IsValid && CustomValidation()) { // CREATE THE PAYMENT OBJECT Payment payment = GetPayment(); // PROCESS CHECKING OUT EVENT bool checkOut = true; if (CheckingOut != null) { CheckingOutEventArgs c = new CheckingOutEventArgs(payment); CheckingOut(this, c); checkOut = !c.Cancel; } if (checkOut) { // CONTINUE TO PROCESS THE CHECKOUT Basket basket = AbleContext.Current.User.Basket; ICheckoutService checkoutService = AbleContext.Resolve <ICheckoutService>(); CheckoutRequest checkoutRequest = new CheckoutRequest(basket, payment); CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest); if (checkoutResponse.Success) { GatewayPaymentProfile profile = null; if (trSaveCard.Visible && SaveCard.Checked) { AccountDataDictionary cardDetails = new AccountDataDictionary(); cardDetails["AccountName"] = CardName.Text.Trim(); cardDetails["AccountNumber"] = CardNumber.Text.Trim(); cardDetails["ExpirationMonth"] = ExpirationMonth.SelectedItem.Value; cardDetails["ExpirationYear"] = ExpirationYear.SelectedItem.Value; cardDetails["SecurityCode"] = SecurityCode.Text.Trim(); profile = CreateProfile(cardDetails); } if (AbleContext.Current.Store.Settings.ROCreateNewOrdersEnabled && OrderHelper.HasRecurringSubscriptions(checkoutResponse.Order)) { IList <Subscription> subscriptions = SubscriptionDataSource.LoadForOrder(checkoutResponse.Order.Id); foreach (Subscription subscription in subscriptions) { OrderItem oi = subscription.OrderItem; if (oi != null && oi.Price == 0 && OrderHelper.HasRecurringSubscriptions(oi) && subscription.PaymentProfile == null) { if (profile == null) { if (ProfilesPH.Visible) { profile = GatewayPaymentProfileDataSource.Load(AlwaysConvert.ToInt(ProfilesList.SelectedValue)); } if (CardPH.Visible) { AccountDataDictionary cardDetails = new AccountDataDictionary(); cardDetails["AccountName"] = CardName.Text.Trim(); cardDetails["AccountNumber"] = CardNumber.Text.Trim(); cardDetails["ExpirationMonth"] = ExpirationMonth.SelectedItem.Value; cardDetails["ExpirationYear"] = ExpirationYear.SelectedItem.Value; cardDetails["SecurityCode"] = SecurityCode.Text.Trim(); profile = CreateProfile(cardDetails); } } subscription.PaymentProfile = profile; subscription.PaymentProcessingType = PaymentProcessingType.ArbProfileManaged; subscription.Save(); } } } if (profile != null && payment.PaymentProfile == null) { payment.PaymentProfile = profile; payment.Save(); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber)); } else { IList <string> warningMessages = checkoutResponse.WarningMessages; if (warningMessages.Count == 0) { warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance."); } if (CheckedOut != null) { CheckedOut(this, new CheckedOutEventArgs(checkoutResponse)); } } } } }