Inheritance: IPaymentDetails, IEquatable
Example #1
0
        public void SendTotalAmountToCreditCardProcessor()
        {
            var paymentProcessor    = new FakePaymentProcessor();
            var reservationService  = new FakeReservationService();
            var notificationService = new FakeNotificationService();

            _cart.Add(new OrderItem()
            {
                Quantity = 5, Sku = "B4GO_APPLE"
            });
            _cart.Add(new OrderItem()
            {
                Quantity = 6, Sku = "SPECIAL_CANDYBAR"
            });
            var paymentDetails = new PaymentDetails()
            {
                PaymentMethod = PaymentMethod.CreditCard
            };
            var order = new LosselyCoupled.OnlineOrder(_cart,
                                                       paymentDetails,
                                                       paymentProcessor,
                                                       reservationService,
                                                       notificationService);

            order.Checkout();

            Assert.IsTrue(paymentProcessor.WasCalled);
            Assert.AreEqual(_cart.TotalAmount(), paymentProcessor.AmountPassed);
        }
        public int BookEvent(PaymentDetails PaymentDetail)
        {
            try
            {
                if (PaymentDetail != null)
                {
                    _context.PaymentDetails.Add(PaymentDetail);
                    _context.SaveChanges();

                    var currentBookingID = _context.PaymentDetails.OrderByDescending(u => u.PaymentDetailID).FirstOrDefault();

                    var no = currentBookingID.PaymentDetailID.ToString() == "0" ? "1" : currentBookingID.PaymentDetailID.ToString();

                    var seq = "BK" + "-" + DateTime.Now.Year + "-" + no;

                    PaymentDetail.PaymentNo = seq;
                    _context.PaymentDetails.Attach(PaymentDetail);
                    _context.Entry(PaymentDetail).Property(x => x.PaymentNo).IsModified = true;
                    _context.SaveChanges();

                    return(PaymentDetail.PaymentDetailID);
                }
                else
                {
                    return(0);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.Ordinal) {
				{"Merchant_Number",Account},
				{"Card_Details_Transmit","0"},
				{"Language","FI"},
				{"Device_Category","1"},
				{"Order_ID",identifier},
				{"Amount",Math.Floor(amount*100).ToString(CultureInfo.InvariantCulture)},
				{"Currency_Code","978"},
				{"Order_Description",message},
				{"Success_Url",returnUrl},
				{"Failure_Url",errorUrl},
				{"Cancel_Url",errorUrl},
				{"Transaction_Type","1"}
			}
			};
			details.Fields["Authentication_Mac"] = 
				String.Format("{0}&{1}&{2}&{3}&{4}&{5}",
					details.Fields["Merchant_Number"],
					details.Fields["Order_ID"],
					details.Fields["Amount"],
					details.Fields["Currency_Code"],
					details.Fields["Transaction_Type"],
					Secret).Hash("SHA256").ToUpperInvariant();
			return details;
		}
Example #4
0
        public async Task <TransactionPayment> ProcessPayment(MerchantPaymentDetails details)
        {
            var httpRequest = new HttpRequestMessage()
            {
                RequestUri = new Uri(new Uri(baseUrl), $"api/payment/{SupplierId}")
            };

            httpRequest.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            httpRequest.Method = HttpMethod.Post;

            var content = new PaymentDetails(details);

            var contentStr = JsonConvert.SerializeObject(content);

            httpRequest.Content = new StringContent(
                contentStr,
                System.Text.Encoding.UTF8,
                "application/json");

            var httpResponse = await client.SendAsync(httpRequest);

            var response = JsonConvert.DeserializeObject <TransactionPayment>(
                await httpResponse.Content.ReadAsStringAsync());

            return(response);
        }
Example #5
0
        /// <summary>
        /// Used to submit new Payment
        /// </summary>
        /// <param name="paymentDetails">payment Details</param>
        /// <returns>true/False</returns>
        public bool SubmitPayment(PaymentDetails paymentDetails)
        {
            try
            {
                PaymentTypeFactory paymentFactory = null;
                paymentFactory = GenerateType(paymentDetails.TypeofPayment);
                if (paymentFactory == null)
                {
                    return(false);
                }

                bool insertStatus = buisnessRuleEngineDB.SubmitPayment(paymentDetails);
                if (insertStatus)
                {
                    PaymentTypesBaseClass paymentTypesBaseClass = paymentFactory?.GenerateTypeClass();
                    paymentTypesBaseClass.FillMinDetail(paymentDetails.Name, paymentDetails.PhoneNumber);
                    paymentTypesBaseClass.PerformOperations(paymentDetails);
                }

                return(insertStatus);
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #6
0
 public FormPaymentDetails1()
 {
     InitializeComponent();
     PaymentDetails.ButtonsEditEnabled(ButtonsPayment(), LabelsPayment(), TextBoxesPayment(),
                                       RichTextBoxesPayment(), ComboBoxPayment(), buttonsEdit = false);;
     Payments.ComboBoxTitleElements(comBoxTitle);
 }
Example #7
0
        public void Update(ListView listViewPayment)
        {
            lista = listViewPayment;
            int i = listViewPayment.SelectedIndices[0];

            selectedIndex = i;
            using (var context = new BCEntities())
            {
                List <Button> buttons     = this.Controls.OfType <Button>().Where(a => a.Name.StartsWith("btn")).ToList();
                var           paymentList = context.Payments.ToList();
                comBoxTitle.Text  = paymentList[i].Title;
                txtPrice.Text     = Math.Round(Convert.ToDecimal(paymentList[i].Price), 2).ToString();
                txtBuyerName.Text = paymentList[i].BuyerName;
                txtShopName.Text  = paymentList[i].ShopName;
                richTxtPaymentDescription.Text = paymentList[i].Description;
                lblPaymentDate.Text            = paymentList[i].PaymentDay.ToString();
                lblPurchaseDate.Text           = paymentList[i].PurchaseDate.ToString();
                txtBillNo.Text = paymentList[i].InvoiceNo;
                if (paymentList[i].Scan != null)
                {
                    pbxBillScan.Image = PaymentDetails.ConvertBinaryToImage(paymentList[i].Scan);
                }
                else
                {
                    pbxBillScan.Image = null;
                }
            }
        }
        public ByteString GetPaymentRequest(string finalAccount, ulong amount)
        {
            PaymentDetails paymentDetails = new PaymentDetails();
            paymentDetails.Network = isMainNet ? "main" : "test";
            paymentDetails.Time = GetTimestamp(DateTime.UtcNow);
            paymentDetails.Expires = GetTimestamp(DateTime.UtcNow.AddHours(1));
            paymentDetails.Memo = $"Funding Openchain account {finalAccount}";

            Output paymentOutput = new Output();
            paymentOutput.Amount = amount;
            paymentOutput.Script = Google.Protobuf.ByteString.CopyFrom(NBitcoin.Script.CreateFromDestinationAddress(destinationAddress).ToBytes());

            Output dataOutput = new Output();
            dataOutput.Amount = dustValue;
            dataOutput.Script = Google.Protobuf.ByteString.CopyFrom(
                new[] { (byte)OpcodeType.OP_RETURN }.Concat(Op.GetPushOp(Encoding.UTF8.GetBytes("OG" + finalAccount)).ToBytes()).ToArray());

            paymentDetails.Outputs.Add(paymentOutput);
            paymentDetails.Outputs.Add(dataOutput);

            PaymentRequest request = new PaymentRequest();
            request.SerializedPaymentDetails = paymentDetails.ToByteString();
            request.PkiType = "none";

            return new ByteString(request.ToByteArray());
        }
        public async Task ReturnPaymentDetails()
        {
            //Arrange
            var controller     = new PaymentDetailsController(_paymentService);
            var paymentId      = Guid.NewGuid();
            var bankResponseId = Guid.NewGuid();
            var paymentResult  = new PaymentDetails()
            {
                Id = paymentId, BankResponseId = bankResponseId, PaymentMethod = new PaymentMethod()
                {
                    CardExpiry = "12/22",
                    CardNumber = "1000200030004000",
                    Cvv        = "000"
                }
            };
            await _dbRepository.AddNewItem(paymentResult);

            //Act
            var response = await controller.Get(bankResponseId);

            var result          = response as OkObjectResult;
            var paymentResponse = (PaymentResponse)result.Value;

            //Assert
            result.Should().NotBeNull();
            paymentResponse.BankResponseId.Should().Be(bankResponseId);
        }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var referenceNumber = ReferenceCalculator.GenerateReferenceNumber(identifier);
			var formattedAmount = amount.ToString("N2", CultureInfo.CreateSpecificCulture("fi-fi"));
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.Ordinal) {
					{ "KNRO",     Account },
					{ "SUMMA",    formattedAmount },
					{ "VIITE",    referenceNumber },
					{ "VALUUTTA", Currency },
					{ "VERSIO",   "4" },
					{ "ALG",      "03" },
					{ "ERAPAIVA", DateTime.Now.ToString("dd.MM.yyyy") },
					{ "OKURL",    returnUrl },
					{ "VIRHEURL", errorUrl }
				}
			};
			details.Fields["TARKISTE"] =
				String.Format("{0}&{1}&{2}&{3}&{4}&{5}&{6}&{7}&{8}&",
					Secret,
					details.Fields["SUMMA"],
					details.Fields["VIITE"],
					details.Fields["KNRO"],
					details.Fields["VERSIO"],
					details.Fields["VALUUTTA"],
					details.Fields["OKURL"],
					details.Fields["VIRHEURL"],
					details.Fields["ERAPAIVA"]).Hash("SHA256").ToUpperInvariant();
			return details;
		}
        public int Add(PaymentDetails newPay)
        {
            this.paymentDetails.Add(newPay);
            this.paymentDetails.Save();

            return newPay.Id;
        }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var referenceNumber = ReferenceCalculator.GenerateReferenceNumber(identifier);
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.Ordinal) {
					{"NET_STAMP",identifier},
					{"NET_SELLER_ID",Account},
					{"NET_AMOUNT",amount.ToString("N2",CultureInfo.CreateSpecificCulture("fi-fi"))},
					{"NET_CUR","EUR"},
					{"NET_REF",referenceNumber},
					{"NET_DATE","EXPRESS"},
					{"NET_MSG",message},
					{"NET_RETURN",returnUrl},
					{"NET_CANCEL",errorUrl},
					{"NET_REJECT",errorUrl},
					{"NET_CONFIRM","YES"},
				}
			};
			if(Version==1) {
				SignV1(details.Fields);
			} else if(Version==3) {
				SignV3(details.Fields);
			} else if(Version==10) { 
				SignV10(details.Fields);
			} else {
				throw new InvalidOperationException(String.Format("Specified version {0} is not supported, supported values are 1, 3, and 10", Version));
			}
			return details;
		}
Example #13
0
        public ActionResult <string> GeneratePaykey([FromBody] PaymentRequest request)
        {
            string payKey = Utils.Utils.GenerateRandomId(10);

            int collisions = 0;

            while (_db.Exists(payKey))
            {
                payKey = Utils.Utils.GenerateRandomId(10);
                collisions++;
            }

            if (collisions > 0)
            {
                _logger.LogWarning($"Generate paykey with {collisions} collisions.");
            }

            var paymentDetails = new PaymentDetails
            {
                Amount                    = request.total,
                InvoiceNo                 = request.invoiceno,
                Currency                  = request.currency,
                PayKey                    = payKey,
                Gateway                   = request.gateway,
                Hashkey                   = request.hashkey,
                TransactionStatus         = TransactionStatus.New,
                ArcadierTransactionStatus = TransactionStatus.New
            };

            _db.SaveDetails(payKey, paymentDetails);

            return(payKey);
        }
        public async Task <IActionResult> ProcessPayment([FromBody] PaymentDetails paymentDetails)
        {
            // TODO: Relying on the bank to check the validity of the currency. We only ensure it's 3 letters.
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                // Create our own ID to track the request
                var paymentId = Guid.NewGuid();

                // Attempt to pay via the bank
                PaymentResponse response = await _bank.ProcessPaymentAsync(paymentDetails.CardDetails, paymentDetails.TransactionDetails);

                // Store history of both failed and succeeded payments
                var request = new PaymentRequestLog
                {
                    Id = paymentId,
                    MaskedCardDetails  = new MaskedCardDetails(paymentDetails.CardDetails),
                    TransactionDetails = paymentDetails.TransactionDetails,
                    PaymentResponse    = response
                };
                await _store.LogPaymentRequest(request);

                return(Ok(new ProcessPaymentResult(paymentId, response)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error occurred Processing Payment");
                return(InternalServerError());
            }
        }
Example #15
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var            pm      = new PaymentMediator();
            PaymentDetails details = new PaymentDetails(new PaymentItem("Total", new PaymentCurrencyAmount(selectedProduct.UnitPrice.ToString(), "USD")), new List <PaymentItem>()
            {
                new PaymentItem(selectedProduct.ProductName, new PaymentCurrencyAmount(selectedProduct.UnitPrice.ToString(), "USD"))
            })
            {
                ShippingOptions = CreateShippingOptions()
            };
            List <PaymentMethodData> methods = new List <PaymentMethodData>()
            {
                new PaymentMethodData(new List <String>()
                {
                    "basic-card"
                })
            };
            PaymentMerchantInfo merchantInfo = new PaymentMerchantInfo(new Uri("http://www.contoso.com"));
            PaymentOptions      options      = new PaymentOptions()
            {
                RequestShipping = true, ShippingType = PaymentShippingType.Delivery, RequestPayerEmail = PaymentOptionPresence.Optional, RequestPayerName = PaymentOptionPresence.Required, RequestPayerPhoneNumber = PaymentOptionPresence.None
            };

            var paymentRequest = new PaymentRequest(
                details,
                methods,
                merchantInfo,
                options);

            var result = await pm.SubmitPaymentRequestAsync(paymentRequest);

            UpdateUserStatus(result);
        }
        public int Add(PaymentDetails newPay)
        {
            this.paymentDetails.Add(newPay);
            this.paymentDetails.Save();

            return(newPay.Id);
        }
        bool saveDeal(Int64 bidId)
        {
            var order = Order.FetchByBidId(bidId);

            if (order != null && order.SupplierId > 0)
            {
                return(false);
            }

            decimal TotalPrice = order.TotalPrice;
            var     discount   = BidController.GetDiscountForUser(TotalPrice, order.AppUserId);
            var     supplier   = AppSupplier.FetchByID(312);
            string  response   = "";

            decimal PriceAfterDiscount = Convert.ToDecimal(discount["PriceAfterDiscount"]);
            decimal PrecentDiscount    = Convert.ToDecimal(discount["PrecentDiscount"]);
            Int64?  CampaignId         = Convert.ToInt64(discount["CampaignId"]);
            var     paymentDetails     = new PaymentDetails
            {
                Amount        = (float)PriceAfterDiscount * 100,
                CreditId      = order.Transaction,
                Exp           = order.ExpiryDate,
                AuthNumber    = order.AuthNumber,
                NumOfPayments = order.NumOfPayments,
                SupplierToken = supplier.MastercardCode
            };

            try
            {
                response = CreditGuardManager.CreateMPITransaction(paymentDetails);
            }
            catch
            {
                Notification.SendNotificationAppUserCreditRejected(order.AppUserId, bidId);
                return(false);
            }
            if (response != "000")
            {
                Notification.SendNotificationAppUserCreditRejected(order.AppUserId, bidId);
                return(false);
            }
            order.IsSendRecived = false;
            if (CampaignId != 0)
            {
                order.CampaignId = CampaignId;
            }
            order.TotalPrice         = TotalPrice;
            order.PriceAfterDiscount = PriceAfterDiscount;
            order.PrecentDiscount    = PrecentDiscount;
            // order.SpecialInstructions = special_instructions;
            order.UserPaySupplierStatus = UserPaymentStatus.Payed;
            order.SupplierId            = 312;
            order.Save();
            var bid = Bid.FetchByID(bidId);

            bid.IsActive = false;
            bid.Save();
            Notification.SendNotificationAppUserSupplierApproved(Snoopi.web.Localization.PushStrings.GetText("SupplierApproved"), bid.AppUserId.Value, order.OrderId);
            return(true);
        }
        public void CreatePaymentDetailsDto_WithValidPaymentDetails_ReturnsCorrectPaymentDetailsDto()
        {
            var paymentDetails = new PaymentDetails
            {
                CardNumber      = "1234",
                Currency        = Currency.EUR,
                CardCvv         = 123,
                CardExpiryMonth = 12,
                CardExpiryYear  = 2020,
                Success         = true,
                UserId          = "1234",
                Amount          = 12,
                CreatedAt       = DateTime.Now,
                Id = "1234"
            };

            var result = _paymentDetailsDtoFactory.CreatePaymentDetailsDto(paymentDetails);

            Assert.Equal(paymentDetails.Amount, result.Amount);
            Assert.Equal(paymentDetails.Currency, result.Currency);
            Assert.Equal(paymentDetails.Id, result.PaymentId);
            Assert.Equal(paymentDetails.Success, result.Success);
            Assert.Equal(paymentDetails.CreatedAt, result.PaymentCreatedAt);
            Assert.Equal(paymentDetails.CardCvv, result.CardDetails.Cvv);
            Assert.Equal(paymentDetails.CardExpiryMonth, result.CardDetails.ExpiryMonth);
            Assert.Equal(paymentDetails.CardExpiryYear, result.CardDetails.ExpiryYear);
        }
        public async Task ProcessPayment_ShouldReturnFailedResult_WhenBankReturnsFailedResponse()
        {
            var expectedTransactionID = 9998;

            var paymentDetails = new PaymentDetails
            {
                CardNumber     = "1234123412341234",
                ExpiryMonth    = 5,
                ExpiryDate     = 23,
                CardHolderName = "Y LI",
                Amount         = 18.99M,
                Currency       = "GBP",
                CVV            = "111"
            };

            _mockPaymentRepository.Setup(x => x.SavePaymentDetails(It.IsAny <PaymentDetailsDTO>())).ReturnsAsync(123);
            _mockSimulatedBankService.Setup(x => x.GetBankResponse(paymentDetails))
            .ReturnsAsync(new SimulatedBankResponse(expectedTransactionID, TransactionStatus.Fail));
            _mockTransactionService
            .Setup(x => x.SaveTransactionDetails(It.IsAny <TransactionDetails>()))
            .ReturnsAsync(true);

            var actual = await _paymentService.ProcessPayment(paymentDetails);

            Assert.False(actual.Success);
            Assert.Equal(expectedTransactionID, actual.TransactionID);
        }
Example #20
0
        public ResponseData AddPayments(PaymentDetails payment)
        {
            try{
                response = new ResponseData();
                if (payment.TransactionAmount == 0)
                {
                    response.Message = CustomMessage.MinAmt;
                    response.Code    = (int)HttpStatusCode.BadRequest;
                    return(response);
                }
                AccountDetails act;
                act = db.AccountDetails.Find(payment.AccountId);
                int currentMonth = DateTime.Now.Month;

                IQueryable <PaymentDetails> objPayments = db.PaymentDetails.Where(x => x.AccountId == payment.AccountId && payment.TransactionDate.Value.Month == currentMonth);
                int usedLimit = objPayments.Select(x => x.TransactionAmount.Value).Sum();
                if (usedLimit + payment.TransactionAmount <= act.MontlyCl)
                {
                    db.PaymentDetails.Add(payment);
                    db.SaveChanges();
                    response.Message = CustomMessage.Paid;
                    response.Code    = (int)HttpStatusCode.OK;
                }
                else
                {
                    response.Message = CustomMessage.NoBalance;
                    response.Code    = (int)HttpStatusCode.BadRequest;
                }
                return(response);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #21
0
        public void AddPaymentDetails(PaymentDetails paymentDetails, int requestID)
        {
            using (SqlConnection connection = new SqlConnection(CONNECTION_STRING))
            {
                try
                {
                    connection.Open();

                    SqlCommand insertCmd = new SqlCommand("spAddPaymentDetails", connection);
                    insertCmd.CommandType = CommandType.StoredProcedure;
                    insertCmd.Parameters.Add("@RequestID", SqlDbType.Int).Value                  = requestID;
                    insertCmd.Parameters.Add("@BillingFirstName", SqlDbType.NVarChar).Value      = paymentDetails.FirstName;
                    insertCmd.Parameters.Add("@BillingLastName", SqlDbType.NVarChar).Value       = paymentDetails.LastName;
                    insertCmd.Parameters.Add("@CardNum", SqlDbType.NChar).Value                  = paymentDetails.CardNum;
                    insertCmd.Parameters.Add("@SecurityCode", SqlDbType.NChar).Value             = paymentDetails.SecurityCode;
                    insertCmd.Parameters.Add("@BillingAddressLine1", SqlDbType.NVarChar).Value   = paymentDetails.BillingAddress.Line1;
                    insertCmd.Parameters.Add("@BillingAddressLine2", SqlDbType.NVarChar).Value   = paymentDetails.BillingAddress.Line2;
                    insertCmd.Parameters.Add("@BillingAddressCity", SqlDbType.NVarChar).Value    = paymentDetails.BillingAddress.City;
                    insertCmd.Parameters.Add("@BillingAddressState", SqlDbType.NVarChar).Value   = paymentDetails.BillingAddress.State;
                    insertCmd.Parameters.Add("@BillingAddressZipCode", SqlDbType.NVarChar).Value = paymentDetails.BillingAddress.Zip;

                    insertCmd.ExecuteNonQuery();

                    connection.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                    connection.Close();
                }
            }
        }
        public async Task <ActionResult <PaymentDetails> > SavePaymentDetails(PaymentDetails paymentDetails)
        {
            _context.paymentDetail.Add(paymentDetails);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetPaymentDetails", new { id = paymentDetails.PMId }, paymentDetails));
        }
Example #23
0
        public IHttpActionResult PutPaymentDetails(int id, PaymentDetails paymentDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != paymentDetails.PMId)
            {
                return(BadRequest());
            }

            db.Entry(paymentDetails).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PaymentDetailsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var referenceNumber = ReferenceCalculator.GenerateReferenceNumber(identifier);
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.Ordinal) {
					{"action_id","701"},
					{"VERSIO","1"},
					{"MAKSUTUNNUS",identifier},
					{"MYYJA",Account},
					{"SUMMA",amount.ToString("N2",CultureInfo.CreateSpecificCulture("fi-fi"))},
					{"VIITE",referenceNumber},
					{"VIESTI",message},
					{"TARKISTE-VERSIO","1"},
					{"PALUULINKKI",returnUrl},
					{"PERUUTUSLINKKI",errorUrl},
					{"VAHVISTUS","Y"},
					{"VALUUTTALAJI","EUR"}
				}
			};
			details.Fields["TARKISTE"] =
				String.Format("{0}{1}{2}{3}{4}{5}{6}{7}",
					details.Fields["VERSIO"],
					details.Fields["MAKSUTUNNUS"],
					details.Fields["MYYJA"],
					details.Fields["SUMMA"],
					details.Fields["VIITE"],
					details.Fields["VALUUTTALAJI"],
					details.Fields["TARKISTE-VERSIO"],
					Secret).Hash("MD5").ToUpperInvariant();
			return details;
		}
        public async Task <IActionResult> PutPaymentDetails(int id, PaymentDetails paymentDetails)
        {
            if (id != paymentDetails.PMId)
            {
                return(BadRequest());
            }

            _context.Entry(paymentDetails).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PaymentDetailsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public void MakePayment(PaymentDetails paymentDetails)
        {
            var paymentService =
                Services.GetRequiredService <IPaymentService>();

            // ...
        }
        public async Task <ActionResult> FinalizeOrder(PaymentDetails paymentDetails)
        {
            if (ModelState.IsValid)
            {
                var order = await db.Orders.FindAsync(paymentDetails.OrderID);

                if (order.Submitted)
                {
                    return(await Task.Run(() => RedirectToAction("Order")));
                }

                order.PaymentDetails = paymentDetails;
                order.Submitted      = true;
                await db.SaveChangesAsync();

                if (User.Identity.IsAuthenticated)
                {
                    var member = await db.Members.FindAsync(User.Identity.GetUserId());

                    var freePizzas = order.Pizzas.Where(p => p.Free).ToList();

                    if (freePizzas.Any())
                    {
                        member.FreePizzasClaimed(freePizzas.Count());
                        await db.SaveChangesAsync();
                    }
                }

                return(await Task.Run(() => RedirectToAction("ThankYou", new { orderID = order.ID })));
            }
            else
            {
                return(await Task.Run(() => View(paymentDetails)));
            }
        }
Example #28
0
        public async Task PaymentIncorrectMerchantValidationTestAsync()
        {
            //Arrange
            var correctPayment = new PaymentDetails
            {
                CardNumber = "6783968309687243",
                Cvv        = "472",
                ExpiryDate = new DateTime(2022, 10, 12),

                Currency   = "USD",
                Amount     = 54.56m,
                MerchantId = 101
            };

            context.Merchants.Add(new Merchant {
                Id = 100, Name = "Tesco"
            });
            context.SaveChanges();

            //Act
            var validated = await paymentValidationService.ValidatePaymentDetails(correctPayment);

            //Assert
            Assert.AreEqual(false, validated, $"Expected not to be validated, but it is.");
        }
Example #29
0
        public async Task <IActionResult> Buy(PaymentDetails details)
        {
            DbContext _context    = HttpContext.RequestServices.GetService(typeof(DbContext)) as DbContext;
            var       currentUser = HttpContext.Session.Get <User>(SessionExtensions.UserKey);
            var       cart        = _context.GetUserBasket(currentUser.Username);

            var orderItems = cart.Select(x => x.Item).ToList();
            var totalPrice = orderItems.Sum(x => x.Price);

            Order order = new Order()
            {
                Items       = orderItems,
                Price       = totalPrice,
                Status      = OrderStatus.Processing,
                OrderTime   = System.DateTime.Now,
                User        = currentUser,
                PaymentType = details.Type
            };

            var status = _context.CreateOrder(order);

            if (status)
            {
                cart.ForEach(cItem =>
                {
                    _context.DeleteCartItem(cItem.Id);
                });

                return(Redirect("/User/Orders"));
            }
            else
            {
                return(Redirect("Checkout"));
            }
        }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var referenceNumber = ReferenceCalculator.GenerateReferenceNumber(identifier);
			var formattedAmount = amount.ToString("F0", CultureInfo.CreateSpecificCulture("sv-se"));
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.OrdinalIgnoreCase) {
					{ "entryid", "switch"},
					{ "appaction", "doDirectPay"},
					{ "switchaction", "3"},
					{ "handOverDatatype", "1"},
					{ "appname", "ssse"},
					{ "language", Language},
					{ "country", Country},
					{ "butikid", Account },
					{ "ordernummer", identifier },
					{ "orderbelopp", formattedAmount },
					{ "retururl", returnUrl },
					{ "senastebokningstid", Clock().AddDays(1).ToLocalTime().ToString("yyyyMMddHHmmss") }
				}
			};
			details.Fields["kontrollsumma"] =
				String.Format("{0}{1}{2}{3}",
					details.Fields["butikid"],
					details.Fields["ordernummer"],
					details.Fields["orderbelopp"],
					Secret
				).Hash("MD5").ToLowerInvariant();
			return details;
		}
Example #31
0
 public int Processpayment(PaymentDetails paydels)
 {
     paymentDb.paymentdetails.Add(paydels);
     return(paymentDb.SaveChanges());
     //if(i>0)
     //    return 'Payment is Process'
 }
Example #32
0
 public void ProcessPayment(User user, PaymentDetails paymentDetails)
 {
     if (_userValidator.IsValid(user))
     {
         _paymentGateway.Pay(paymentDetails);
     }
 }
Example #33
0
        public void ChargeCard(PaymentDetails paymentDetails, Cart cart)
        {
            using (var paymentGateway = new PaymentGateway())
            {
                try
                {
                    paymentGateway.Credentials    = "account credentials";
                    paymentGateway.CardNumber     = paymentDetails.CreditCardNumber;
                    paymentGateway.ExpiresMonth   = paymentDetails.ExpiresMonth;
                    paymentGateway.ExpiresYear    = paymentDetails.ExpiresYear;
                    paymentGateway.NameOnCard     = paymentDetails.CardholderName;
                    paymentGateway.AmountToCharge = cart.TotalAmount;

                    paymentGateway.Charge();
                }
                catch (AvsMismatchException ex)
                {
                    throw new OrderException("The card gateway rejected the card based on the address provided.", ex);
                }
                catch (Exception ex)
                {
                    throw new OrderException("There was a problem with your card.", ex);
                }
            }
        }
Example #34
0
        public void SubmitPaymentFalseValueTest(PaymentDetails paymentDetails, bool expectedResul)
        {
            buisnessRuleEngineDB.Setup(x => x.SubmitPayment(paymentDetails)).Returns(false);
            var actualResult = buisnessRuleEngineBuisness.SubmitPayment(paymentDetails);

            Assert.AreEqual(false, actualResult);
        }
Example #35
0
        public void ChargeCard(PaymentDetails paymentDetails, Cart cart)
        {
            using (var paymentGateway = new PaymentGateway())
            {
                try
                {
                    paymentGateway.Credentials = "account credentials";
                    paymentGateway.CardNumber = paymentDetails.CreditCardNumber;
                    paymentGateway.ExpiresMonth = paymentDetails.ExpiresMonth;
                    paymentGateway.ExpiresYear = paymentDetails.ExpiresYear;
                    paymentGateway.NameOnCard = paymentDetails.CardholderName;
                    paymentGateway.AmountToCharge = cart.TotalAmount;

                    paymentGateway.Charge();
                }
                catch (AvsMismatchException ex)
                {
                    throw new OrderException("The card gateway rejected the card based on the address provided.", ex);
                }
                catch (Exception ex)
                {
                    throw new OrderException("There was a problem with your card.", ex);
                }
            }
        }
        /// <summary>
        /// Payment
        /// </summary>
        /// <param name="totalAmount"></param>
        /// <param name="Message"></param>
        /// <returns></returns>
        public void  Payment(decimal totalAmount, ref string Message)
        {
            PaymentDetails paymentDetails = new PaymentDetails();

            paymentDetails.PaymentMethod = PaymentMethod.Cash;
            _paymentService.Charge(paymentDetails, totalAmount, ref Message);
        }
        private void nextButton_Click(object sender, EventArgs e)
        {
            this.Hide();
            PaymentDetails form = new PaymentDetails();

            form.ShowDialog();
        }
        public bool StorePaymentDetails(List <string> PaymentDetailsList)
        {
            try
            {
                using (var db = new PaymentInfoDataContext())
                {
                    PaymentDetails paymentDetail = new PaymentDetails();
                    paymentDetail.FirstName  = PaymentDetailsList[0];
                    paymentDetail.SecondName = PaymentDetailsList[1];
                    paymentDetail.CardNumber = PaymentDetailsList[2];
                    paymentDetail.CardExpire = PaymentDetailsList[3];
                    paymentDetail.CardType   = PaymentDetailsList[4];
                    paymentDetail.CardCVN    = PaymentDetailsList[5];

                    db.PaymentDetails.InsertOnSubmit(paymentDetail);
                    db.SubmitChanges();
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Example #39
0
 public Customer(Guid id, AddressBook addresses, Orders orderHistory, PaymentDetails paymentDetails, LoyaltySummary loyalty)
 {
     this.Id = id;
     this.Addresses = addresses;
     this.OrderHistory = orderHistory;
     this.PaymentDetails = paymentDetails;
     this.Loyalty = loyalty;
 }
Example #40
0
 public OnlineOrder(Cart cart, PaymentDetails paymentDetails)
     : base(cart)
 {
     _paymentDetails = paymentDetails;
     _paymentProcessor = new PaymentProcessor();
     _reservationService = new ReservationService();
     _notificationService = new NotificationService();
 }
		public void processPayment(
			User user,
			PaymentDetails paymentDetails)
		{
			if (!_userService.IsValid(user))
			{
				throw new InvalidUserException();
			}
			_gatewayService.sendPayement(paymentDetails);
		}
		public void SendPayementToTheGateway()
		{
			var user = GivenUser(true);
			var payment = new PaymentDetails();

			// WHEN
			_paymentService.processPayment(user, payment);

			// THEN
			A.CallTo(() => _gatewayService.sendPayement(payment)).MustHaveHappened(Repeated.Exactly.Once);
		}
Example #43
0
        public void Checkout(Cart cart, PaymentDetails paymentDetails, bool notifyCustomer)
        {
            if (paymentDetails.PaymentMethod == PaymentMethod.CreditCard)
            {
                ChargeCard(paymentDetails, cart);
            }

            ReserveInventory(cart);

            if(notifyCustomer)
            {
                NotifyCustomer(cart);
            }
        }
 public static void AddPaymentDetails(string transactionId,PaymentDetails paymentDetails)
 {
     Dictionary<string, PaymentDetails> paymentHash = null;
     if(HttpContext.Current.Session[WebConstants.Session.PAYMENT_DETAILS] == null)
     {
         HttpContext.Current.Session[WebConstants.Session.PAYMENT_DETAILS] = new Dictionary<string, PaymentDetails>();
     }
     paymentHash = (Dictionary<string, PaymentDetails>)HttpContext.Current.Session[WebConstants.Session.PAYMENT_DETAILS];
     if (paymentHash.ContainsKey(transactionId))
     {
         paymentHash[transactionId] = paymentDetails;
     }
     else
     {
         paymentHash.Add(transactionId, paymentDetails);
     }
     HttpContext.Current.Session[WebConstants.Session.PAYMENT_DETAILS] = paymentHash;
 }
		public PaymentDetails GenerateDetails(string identifier, decimal amount, string returnUrl, string errorUrl, string message) {
			var details = new PaymentDetails {
				Url = Url,
				Fields = new NameValueCollection(StringComparer.Ordinal) {
					{"orderId", identifier},
					{"merchant", MerchantId},
					{"amount", (amount*100).ToString("F0", CultureInfo.InvariantCulture)},
					{"currency", Currency},
					{"payType", PaymentTypes},
					{"acceptReturnUrl", returnUrl},
					{"cancelReturnUrl", errorUrl},
					{"language", CultureInfo.CurrentCulture.Name}
				}
			};
			if(TestMode) { 
				details.Fields["test"] = "1";
			}
			details.Fields["MAC"] = ComputeHash(details.Fields);
			return details;				
		}
 public void ProcessCreditCard(PaymentDetails paymentDetails, decimal amount)
 {
     throw new NotImplementedException();
 }
 public PoSCreditOrder(Cart cart, PaymentDetails paymentDetails)
     : base(cart)
 {
     this.paymentDetails = paymentDetails;
     this.paymentProcessor = new PaymentProcessor();
 }
Example #48
0
 public void checkout(PaymentDetails payment,bool NotifyUser)
 {
 }
Example #49
0
    protected void btnRegUserConfirm_Click(object sender, EventArgs e)
    {
        if (PageData == null)
            Response.Redirect("orderconfirmation.aspx");

        if (UserOrderConfirmValidation())
        {
            PaymentDetails paymentDetails = null;

            if (PageData.SelectedPaymentType == PaymentType.Bill)
            {
                paymentDetails = new PaymentDetails
                                     {
                                         CompanyName = txtCompanyName.Text,
                                         INN = txtINN.Text
                                     };
            }
            else if (PageData.SelectedPaymentType == PaymentType.SberBank)
            {
                paymentDetails = new PaymentDetails
                                    {
                                        CompanyName = String.Empty,
                                        INN = txtINN2.Text,
                                    };
            }
            else if (PageData.SelectedPaymentType == PaymentType.QIWI)
            {
                paymentDetails = new PaymentDetails
                                    {
                                        Phone = txtPhone.Text
                                    };
            }

            OnNextStep(new FourthStepNextEventArgs { PaymentDetails = paymentDetails, CustomerComment = txtComments.Text });
        }
    }
Example #50
0
        public PaymentDetails CheckOut([FromUri]string basketName, [FromUri] string cardNo, [FromUri]string amount)
        {
            PaymentDetails payment = new PaymentDetails();

            long card;
            if (!string.IsNullOrWhiteSpace(cardNo) && long.TryParse(cardNo, out card))
            {

                var g = dbContext.PaymentMasters.FirstOrDefault(l => l.PaymentCardNumber == card);
                if (g != null)
                {
                    var basketId = dbContext.Baskets.FirstOrDefault(k => k.BasketName == basketName);
                    if (basketId != null)
                    {
                        basketId.TotalPrice = string.IsNullOrWhiteSpace(amount) ? 0 : Convert.ToDecimal(amount);
                        basketId.IsCheckedOut = true;
                        dbContext.SaveChanges();
                        dbContext.AcceptAllChanges();

                        Payment pay = new Payment();
                        pay.BasketId = basketId.BasketId;
                        pay.CustomerId = basketId.CustomerId;
                        pay.PaymentCard = Convert.ToInt32(card);
                        pay.PaymentDateTime = DateTime.Now;

                        dbContext.Payments.AddObject(pay);
                        dbContext.SaveChanges();
                        dbContext.AcceptAllChanges();

                        payment.BasketId = basketId.BasketId;
                        payment.BasketName = basketId.BasketName;
                        payment.PaymentId = pay.PaymentId;
                        payment.DeliveryAddress = (from c in dbContext.Customers
                                                   where c.CustomerId == basketId.CustomerId
                                                   select c.Address).FirstOrDefault();
                        payment.IsSuccess = true;
                        return payment;
                    }
                }
                return payment;
            }

            return payment;
        }
    protected void btnContinue_Click(object sender, ImageClickEventArgs e)
    {
        string url = ConfigurationSettings.AppSettings[WebConstants.Config.CYBER_SOURCE_URL];
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        string proxy = null;
        //clear it from session to keep the session as min as possible
        if (Request[WebConstants.Request.TRANSACTION_ID] != null)
        {
            SessionFactory.RemovePaymentDetails(Request[WebConstants.Request.TRANSACTION_ID]);
        }
        string transactionId = InsertTransaction();
        if (transactionId != null)
        {
            PaymentDetails paymentDetails = new PaymentDetails();
            paymentDetails.CardNumber = txtCardNumber.Text;
            paymentDetails.CardType = lstCardType.SelectedValue;
            paymentDetails.Country = txtBillingCountry.Text;
            paymentDetails.County = txtBillingCounty.Text;
            paymentDetails.ExpiryMonth = txtExpiryMonth.SelectedValue;
            paymentDetails.ExpiryYear = txtExpiryYear.SelectedValue;
            paymentDetails.FirstName = txtFirstName.Text;
            paymentDetails.LastName = txtLastName.Text;
            paymentDetails.PostCode = txtBillingZipCode.Text;
            paymentDetails.SecurityCode = txtSecurityCode.Text;
            paymentDetails.StartMonth = txtStartMonth.SelectedValue;
            paymentDetails.StartYear = txtStartYear.SelectedValue;
            paymentDetails.Street = txtBillingStreet.Text;
            paymentDetails.Telephone = txtTelephone.Text;
            paymentDetails.Town = txtBillingTown.Text;
            SessionFactory.AddPaymentDetails(transactionId, paymentDetails);

            string data = "amount=" + Server.UrlEncode(Request["amount"]);
            data += "&orderNumber=" + Server.UrlEncode(transactionId);
            data += "&currency=" + Server.UrlEncode(Request["currency"]);
            data += "&orderPage_timestamp=" + Server.UrlEncode(Request["orderPage_timestamp"]);
            data += "&merchantID=" + Server.UrlEncode(Request["merchantID"]);
            data += "&orderPage_transactionType=" + Server.UrlEncode(Request["orderPage_transactionType"]);
            data += "&orderPage_version=" + Server.UrlEncode(Request["orderPage_version"]);
            data += "&orderPage_serialNumber=" + Server.UrlEncode(Request["orderPage_serialNumber"]);
            data += "&orderPage_signaturePublic=" + Server.UrlEncode(Request["orderPage_signaturePublic"]);
            data += "&billTo_city=" + Server.UrlEncode(txtBillingCounty.Text);
            data += "&billTo_country=" + Server.UrlEncode(txtBillingCountry.Text);
            data += "&billTo_firstName=" + Server.UrlEncode(txtFirstName.Text);
            data += "&billTo_lastName=" + Server.UrlEncode(txtLastName.Text);
            data += "&billTo_street1=" + Server.UrlEncode(txtBillingStreet.Text);
            data += "&billTo_street2=" + Server.UrlEncode(txtBillingTown.Text);
            data += "&billTo_phoneNumber=" + Server.UrlEncode(txtTelephone.Text);
            data += "&billTo_postalCode=" + Server.UrlEncode(txtBillingZipCode.Text);
            data += "&card_accountNumber=" + Server.UrlEncode(txtCardNumber.Text);
            data += "&card_cardType=" + Server.UrlEncode(lstCardType.Text);
            data += "&card_cvNumber=" + Server.UrlEncode(txtSecurityCode.Text);
            data += "&card_expirationMonth=" + Server.UrlEncode(txtExpiryMonth.Text);
            data += "&card_expirationYear=" + Server.UrlEncode(txtExpiryYear.Text);
            data += "&card_startMonth=" + Server.UrlEncode(txtStartMonth.Text);
            data += "&card_startYear=" + Server.UrlEncode(txtStartYear.Text);
            data += "&orderPage_requestToken=" + Server.UrlEncode(System.Guid.NewGuid().ToString());

            data += "&recurringSubscriptionInfo_amount=" + Server.UrlEncode(Request["recurringSubscriptionInfo_amount"]);
            data += "&recurringSubscriptionInfo_numberOfPayments=" + Server.UrlEncode(Request["recurringSubscriptionInfo_numberOfPayments"]);
            data += "&recurringSubscriptionInfo_frequency=" + Server.UrlEncode(Request["recurringSubscriptionInfo_frequency"]);
            data += "&recurringSubscriptionInfo_automaticRenew=" + Server.UrlEncode(Request["recurringSubscriptionInfo_automaticRenew"]);
            data += "&recurringSubscriptionInfo_startDate=" + Server.UrlEncode(Request["recurringSubscriptionInfo_startDate"]);
            data += "&recurringSubscriptionInfo_signaturePublic=" + Server.UrlEncode(Request["recurringSubscriptionInfo_signaturePublic"]);

            byte[] buffer = Encoding.UTF8.GetBytes(data);
            try
            {
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = buffer.Length;
                req.Proxy = new WebProxy(proxy, true);
                req.CookieContainer = new CookieContainer();

                Stream reqst = req.GetRequestStream();
                reqst.Write(buffer, 0, buffer.Length);

                reqst.Flush();
                reqst.Close();
            }
            catch (Exception ex)
            {

                ex.StackTrace.ToString();
            }

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();

            Stream resst = res.GetResponseStream();
            StreamReader sr = new StreamReader(resst);
            string response = sr.ReadToEnd();
            Response.Write(response);
            //ClientScript.RegisterStartupScript(typeof(Page), "Processing", "showDialog();", true);
        }

        /*Session["cardType"] = lstCardType.Text;
        Session["cardNumber"] = txtCardNumber.Text;
        Session["cardExpiryMonth"] = txtExpiryMonth.Text;
        Sess`ion["cardExpiryYear"] = txtExpiryYear.Text;
        Session["cardSecurityCode"] = txtSecurityCode.Text;
        Session["cardStartMonth"] = txtStartMonth.Text;
        Session["cardStartYear"] = txtStartYear.Text;
        Session["cardFirstName"] = txtFirstName.Text;
        Session["cardLastName"] = txtLastName.Text;
        Session["cardBillingStreet"] = txtBillingStreet.Text;
        Session["cardBillingTown"] = txtBillingTown.Text;
        Session["cardBillingCounty"] = txtBillingCounty.Text;
        Session["cardBillingCountry"] = txtBillingCountry.Text;
        Session["cardBillingZipCode"] = txtBillingZipCode.Text;
        Session["cardBillingTelephone"] = txtTelephone.Text;

        Response.Redirect("ConfirmCheckout.aspx");*/
    }
Example #52
0
        public PageModel Setup(MediaModel mediaModel)
        {
            var pageModel = new PageModel();

            var productSearch = new ProductSearch
            {
                Name = "Categories",
                UrlSegment = "categories",
                RevealInNavigation = true
            };
            var categoryContainer = new ProductContainer
            {
                Name = "Products",
                UrlSegment = "products",
                RevealInNavigation = false
            };
            _documentService.AddDocument(productSearch);
            _documentService.PublishNow(productSearch);
            _documentService.AddDocument(categoryContainer);
            _documentService.PublishNow(categoryContainer);
            pageModel.ProductSearch = productSearch;

            var now = DateTime.UtcNow;
            var yourBasket = new Cart
            {
                Name = "Your Basket",
                UrlSegment = "basket",
                RevealInNavigation = false,
                PublishOn = now
            };
            _documentService.AddDocument(yourBasket);
            var enterOrderEmail = new EnterOrderEmail
            {
                Name = "Enter Order Email",
                UrlSegment = "enter-order-email",
                RevealInNavigation = false,
                Parent = yourBasket,
                DisplayOrder = 0,
                PublishOn = now,
            };
            _documentService.AddDocument(enterOrderEmail);
            var setPaymentDetails = new PaymentDetails
            {
                Name = "Set Payment Details",
                UrlSegment = "set-payment-details",
                RevealInNavigation = false,
                Parent = yourBasket,
                DisplayOrder = 1,
                PublishOn = now,
            };
            _documentService.AddDocument(setPaymentDetails);
            var setDeliveryDetails = new SetShippingDetails
            {
                Name = "Set Shipping Details",
                UrlSegment = "set-shipping-details",
                RevealInNavigation = false,
                Parent = yourBasket,
                DisplayOrder = 2,
                PublishOn = now,
            };
            _documentService.AddDocument(setDeliveryDetails);
            var orderPlaced = new OrderPlaced
            {
                Name = "Order Placed",
                UrlSegment = "order-placed",
                RevealInNavigation = false,
                Parent = yourBasket,
                DisplayOrder = 3,
                PublishOn = now,
            };
            _documentService.AddDocument(orderPlaced);

            // User Account
            var userAccount = new SitemapPlaceholder
            {
                Name = "User Account",
                UrlSegment = "user-account",
                RevealInNavigation = false,
                PublishOn = now
            };
            _documentService.AddDocument(userAccount);

            var userAccountInfo = new UserAccountInfo
            {
                Name = "Account Details",
                UrlSegment = "user-account-details",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountInfo);

            var userAccountPassword = new UserAccountChangePassword
            {
                Name = "Change Password",
                UrlSegment = "user-account-change-password",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountPassword);

            var userAccountAddresses = new UserAccountAddresses
            {
                Name = "Account Addresses",
                UrlSegment = "user-account-addresses",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountAddresses);

            var editAddress = new UserAccountEditAddress
            {
                Name = "Edit Address",
                UrlSegment = userAccountAddresses.UrlSegment + "/edit-address",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccountAddresses
            };
            _documentService.AddDocument(editAddress);

            var userAccountOrders = new UserAccountOrders
            {
                Name = "Orders",
                UrlSegment = "user-account-orders",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountOrders);

            var userOrder = new UserOrder
            {
                Name = "View Order",
                UrlSegment = "user-account-orders/order",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccountOrders
            };
            _documentService.AddDocument(userOrder);

            var userAccountReviews = new UserAccountReviews
            {
                Name = "Reviews",
                UrlSegment = "user-account-reviews",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountReviews);

            var userAccountRewards = new UserAccountRewardPoints
            {
                Name = "Reward Points",
                UrlSegment = "user-account-reward-points",
                RevealInNavigation = false,
                PublishOn = now,
                Parent = userAccount
            };
            _documentService.AddDocument(userAccountRewards);

            // End User Account


            //Added to cart
            var addedToCart = new ProductAddedToCart
            {
                Name = "Added to Basket",
                UrlSegment = "add-to-basket",
                RevealInNavigation = false,
                PublishOn = now
            };
            _documentService.AddDocument(addedToCart);
            pageModel.ProductAddedToCart = addedToCart;

            var wishlist = new ShowWishlist
            {
                Name = "Wishlist",
                UrlSegment = "wishlist",
                RevealInNavigation = true,
                PublishOn = now
            };
            _documentService.AddDocument(wishlist);

            var newIn = new NewInProducts
            {
                Name = "New In",
                UrlSegment = "new-in",
                RevealInNavigation = true,
                PublishOn = now
            };
            _documentService.AddDocument(newIn);

            var about = new TextPage()
            {
                Name = "About us",
                UrlSegment = "about-us",
                RevealInNavigation = true,
                PublishOn = now,
                BodyContent = EcommerceInstallInfo.AboutUsText
            };
            _documentService.AddDocument(about);

            //update core pages
            var homePage = _documentService.GetDocumentByUrl<TextPage>("home");
            if (homePage != null)
            {
                homePage.BodyContent = EcommerceInstallInfo.HomeCopy;
                var templates = _pageTemplateAdminService.Search(new PageTemplateSearchQuery());
                var homeTemplate = templates.FirstOrDefault(x => x.Name == "Home Page");
                if (homeTemplate != null)
                {
                    homePage.PageTemplate = homeTemplate;
                }

                homePage.SubmitButtonText = "Sign up";
                _documentService.SaveDocument(homePage);
                pageModel.HomePage = homePage;
            }
            var page2 = _documentService.GetDocumentByUrl<TextPage>("page-2");
            if (page2 != null)//demopage in core not needed
                _documentService.DeleteDocument(page2);

            var contactus = _documentService.GetDocumentByUrl<TextPage>("contact-us");
            if (contactus != null)//demopage in core not needed
                _documentService.DeleteDocument(contactus);

            //Added to cart
            var contactUs = new ContactUs()
            {
                Name = "Contact Us",
                UrlSegment = "contact-us",
                RevealInNavigation = true,
                PublishOn = now,
                Latitude = 55.01021m,
                Longitude = -1.44998m,
                Address = EcommerceInstallInfo.Address,
                PinImage = mediaModel.Logo.FileUrl,
                BodyContent = "[form]",
                FormDesign = EcommerceInstallInfo.ContactFormDesign
            };
            _documentService.AddDocument(contactUs);
            GetFormProperties(contactUs);

            var brandListing = new BrandListing
            {
                Name = "Brands",
                UrlSegment = "brands",
                RevealInNavigation = true,
                PublishOn = now,
                BodyContent = ""
            };
            _documentService.AddDocument(brandListing);

            return pageModel;
        }