Ejemplo n.º 1
0
        public static Task<TransactionResult> ProceedTransactionAsync(PaymentDTO model, Uri startUri, Uri successUri, Uri errorUri)
        {
            if (model == null)
                throw new ArgumentException("model");

            _startUri = startUri;
            _errorUri = errorUri;
            _successUri = successUri;
            _model = model;

            var rootFrame = Application.Current.RootVisual as PhoneApplicationFrame;
            if (rootFrame == null)
            {
                throw new InvalidOperationException("RootFrame wasn't found in current app domain");
            }

            rootFrame.Navigate(new Uri("/WhallaLabs.Services.PayU;component/View/PayuTransactionView.xaml", UriKind.RelativeOrAbsolute));

            Task<TransactionResult> transactionTask = Task<TransactionResult>.Factory.StartNew(() =>
            {
                _transactionFinishedEvent.WaitOne();
                return _transactionResult;
            });

            return transactionTask;
        }
Ejemplo n.º 2
0
        //سپیده حسینی-09-04-93-create
        public void CreateStudentPayment(PaymentDTO payInfo)
        {
            PaymentDTO PaymentDTO = new PaymentDTO();
            SqlCommand cmdpay     = new SqlCommand();

            cmdpay.Connection  = conn;
            cmdpay.CommandType = CommandType.StoredProcedure;
            cmdpay.CommandText = "Request.SP_InsertPaymentRequest";


            cmdpay.Parameters.AddWithValue("@orderId", payInfo.OrderId);
            cmdpay.Parameters.AddWithValue("@amount", payInfo.Amount);
            cmdpay.Parameters.AddWithValue("@stcode", payInfo.stcode);
            cmdpay.Parameters.AddWithValue("@tterm", payInfo.tterm);
            cmdpay.Parameters.AddWithValue("@bankId", payInfo.bankId);
            cmdpay.Parameters.AddWithValue("@PayType", payInfo.PayType);
            cmdpay.Parameters.AddWithValue("@Description", payInfo.Description);
            cmdpay.Parameters.AddWithValue("@RequestId", payInfo.RequestId);
            cmdpay.Parameters.AddWithValue("@RequestKey", payInfo.ReqKey);
            cmdpay.Parameters.AddWithValue("@AppStatus", payInfo.AppStatus);
            cmdpay.Parameters.AddWithValue("@result", payInfo.Result);
            try
            {
                conn.Open();
                cmdpay.ExecuteNonQuery();
                conn.Close();
                cmdpay.Dispose();
            }
            catch (Exception ex)
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                throw;
            }
        }
Ejemplo n.º 3
0
        protected void btnPay_Click(object sender, EventArgs e)
        {
            try
            {
                string result;

                long orderid;// = new bmp_PaymentBusiness().GenerateOrderId();



                PaymentDTO          pay = new PaymentDTO();
                bmp_PaymentBusiness bmp = new bmp_PaymentBusiness();
                pay.Amount = Convert.ToInt64(Session["fee"].ToString());
                //pay.PayDate = PayDate + "_" + PayTime;
                pay.stcode = Session[sessionNames.userID_StudentOstad].ToString();
                pay.bankId = 2;
                pay.tterm  = ConfigurationManager.AppSettings["Term"];

                string additionalInfo = pay.stcode;

                PaymentGatewayImplService bpService = new PaymentGatewayImplService();
                result      = bmp.pay(pay.Amount, pay.stcode, out orderid, Convert.ToInt32(Session[sessionNames.appID_StudentOstad]), 0);
                pay.OrderId = orderid;

                Response.Write(result);
                String[] resultArray = result.Split(',');

                pay.ReqKey      = resultArray[1];
                pay.AppStatus   = "none";
                pay.TraceNumber = 0;
                pay.Result      = -1;
            }
            catch (Exception)
            {
                // PayOutputLabel.Text = "Error: " + exp.Message;
            }
        }
Ejemplo n.º 4
0
        public static PaymentDTO AddPayment(string PaymentEmail, string ReceipientEmail, Double amount, string message, string paymentType, Boolean anonymous, DateTime paymentDate, int transactionID, int invoiceID)
        {
            ConvictsContext db = new ConvictsContext();

            PaymentRecord payment = new PaymentRecord();
            payment.PayerEmail = PaymentEmail;
            payment.amount = amount;
            payment.TeamCode = Helper.getTeamCode(ReceipientEmail);
            payment.ConvictEmail = ReceipientEmail;
            payment.PaymentType = paymentType;
            payment.Message = message;
            payment.CreateDate = paymentDate;
            payment.Anonymous = anonymous;
            payment.TransactionID = transactionID;
            payment.InvoiceID = invoiceID;
            string returnStatus = "false";
            string errorMessage = "";

            try
            {
                db.Payments.Add(payment);
                db.SaveChanges();
                returnStatus = "true";

            }
            catch (Exception ex)
            {
                returnStatus = "false";
                errorMessage = ex.Message ;
            }

            PaymentDTO returnobj = new PaymentDTO();
            returnobj.status =  returnStatus;
            returnobj.errorMessage = errorMessage;

            return returnobj;
        }
        public void MarkAsPaid()
        {
            SelectedAppointment.IsRunning = true;
            parentView.RunAsynchronousOperation(delegate
            {
                try
                {
                    PaymentBasketDTO basket = new PaymentBasketDTO();
                    PaymentDTO payment      = new PaymentDTO();
                    payment.Product         = SelectedReservation.Reservation;
                    payment.Count           = 1;
                    payment.Price           = SelectedReservation.Reservation.Price;
                    basket.Payments.Add(payment);
                    basket.TotalPrice = payment.Price;
                    basket            = ServiceManager.PaymentBasketOperation(basket);

                    var newReservation = new ScheduleEntryReservationViewModel((ScheduleEntryReservationDTO)basket.Payments[0].Product);
                    parentView.SynchronizationContext.Send(delegate
                    {
                        SelectedAppointment.IsRunning = false;
                        Reservations.Remove(SelectedReservation);
                        Reservations.Add(newReservation);
                        SelectedReservation = newReservation;
                    }, null);
                }
                catch (Exception ex)
                {
                    parentView.SynchronizationContext.Send(
                        delegate
                    {
                        SelectedAppointment.IsRunning = false;
                        ExceptionHandler.Default.Process(ex, "Exception_ScheduleEntriesDesignViewModel_MarkAsPaid".TranslateInstructor(), ErrorWindow.EMailReport);
                    }, null);
                }
            });
        }
        public async Task TestCreatePaymentForFlatAsync()
        {
            // Arrange
            var flatId  = 1;
            var payment = new PaymentDTO
            {
                Amount      = 99,
                PaymentType = PaymentType.Other,
                Frequency   = Frequency.Weekly,
                StartDate   = new DateTime(2020, 04, 04),
                EndDate     = new DateTime(2020, 05, 05),
                Fixed       = false,
                Description = "food",
            };
            var userIds = new List <int> {
                1, 2
            };

            // Act
            var response = await _paymentsController.CreatePaymentForFlat(flatId, payment, userIds);

            // Assert
            Assert.IsInstanceOf <OkObjectResult>(response);
        }
Ejemplo n.º 7
0
        private void AddNewPayment()
        {
            if (Warehouses != null)
            {
                SelectedWarehouse = Warehouses.FirstOrDefault(w => w.IsDefault) ?? Warehouses.FirstOrDefault();
            }
            else
            {
                return;
            }

            if (SelectedWarehouse != null && SelectedWarehouse.Id != -1 && SelectedPayment == null)
            {
                SelectedPayment = new PaymentDTO
                {
                    PaymentType   = PaymentType,
                    PaymentDate   = DateTime.Now,
                    PaymentMethod = PaymentMethods.Cash,
                    Status        = PaymentStatus.NotCleared,
                    WarehouseId   = SelectedWarehouse.Id
                }
            }
            ;
        }
        public void PayForAlreadyPaidProduct()
        {
            var zakup = CreatePayment(entries[0].Reservations.ElementAt(0), profiles[0]);

            insertToDatabase(zakup);

            var koszyk = new PaymentBasketDTO();

            koszyk.CustomerId = customers[0].GlobalId;
            koszyk.TotalPrice = 10m;
            var zakupdto = new PaymentDTO();

            zakupdto.Count   = 1;
            zakupdto.Product = entries[0].Reservations.ElementAt(0).Map <ProductDTO>();
            koszyk.Payments.Add(zakupdto);

            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                koszyk = service.PaymentBasketOperation(data.Token, koszyk);
            });
        }
Ejemplo n.º 9
0
        public string Validate(PaymentDTO payment)
        {
            if (null == payment)
            {
                return(GenericMessages.ObjectIsNull);
            }

            if (payment.Warehouse == null)
            {
                return("Warehouse " + GenericMessages.ObjectIsNull);
            }

            if (String.IsNullOrEmpty(payment.Reason))
            {
                return(payment.Reason + " " + GenericMessages.StringIsNullOrEmpty);
            }

            if (String.IsNullOrEmpty(payment.PersonName))
            {
                return(payment.PersonName + " " + GenericMessages.StringIsNullOrEmpty);
            }

            return(string.Empty);
        }
Ejemplo n.º 10
0
        public ActionResult CreatePayment(CreatePaymentViewModel model)
        {
            if (ModelState.IsValid)
            {
                var payment = new PaymentDTO
                {
                    Amount    = model.Amount,
                    Date      = DateTime.Now,
                    Details   = model.Details,
                    IsSent    = true,
                    Name      = model.Name,
                    Recipient = AccountService.FindByNumber(model.RecipientNumber),
                    SenderId  = model.SelectedAccountId,
                };
                OperationDetails operationDetails = PaymentService.Create(payment);

                if (operationDetails.Succedeed)
                {
                    return(Redirect("/Payment/Index"));
                }
                else
                {
                    var accounts = AccountService.FindUserAccounts(User.Identity.GetUserId()).ToList();
                    model.Accounts = new SelectList(accounts, "Id", "Name");
                    ModelState.AddModelError(operationDetails.Property, operationDetails.Message);
                }

                return(View(model));
            }
            else
            {
                var accounts = AccountService.FindUserAccounts(User.Identity.GetUserId()).ToList();
                model.Accounts = new SelectList(accounts, "Id", "Name");
                return(View(model));
            }
        }
Ejemplo n.º 11
0
        public async Task AddPaymentAsync()
        {
            //Arrange
            var fakeEventBus = new Mock <IEventBus>();
            var fakeGateWay  = new Mock <IPaymentExternalGateway>();

            PaymentDTO payment = new PaymentDTO();

            payment.BookingOrderId = "1e4199f0-907f-4acc-b886-b12b0323c108";
            payment.Price          = 100;
            payment.CustomerId     = string.Empty;

            var sut = new PaymentService(_repo, fakeGateWay.Object, fakeEventBus.Object);

            //Act
            var result = await sut.AddAsync(payment);

            //Assert
            Guid bookingRef = Guid.Parse(result);

            result.ShouldBeOfType <string>();
            bookingRef.ShouldBeOfType <Guid>();
            result.Count().ShouldBe(36);
        }
Ejemplo n.º 12
0
        public void UpdateMellatPaymentStatus(PaymentDTO payment)
        {
            try
            {
                SqlCommand cmd1 = new SqlCommand();
                cmd1.Connection  = conn;
                cmd1.CommandType = CommandType.StoredProcedure;
                cmd1.CommandText = "Adobe.SP_UpdateMellatPaymentStatus";

                cmd1.Parameters.AddWithValue("@OrderID", payment.OrderId);
                //cmd1.Parameters.AddWithValue("@RefID", payment.ReqKey);
                //cmd1.Parameters.AddWithValue("@Status", payment.AppStatus);
                //cmd1.Parameters.AddWithValue("@SaleRef", payment.TraceNumber);
                //cmd1.Parameters.AddWithValue("@ResCode", payment.Result);

                conn.Open();
                cmd1.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 13
0
        public async Task <ActionResult <DPayment> > PostNewDPayment(PaymentDTO dto)
        {
            try
            {
                var newPayment = new DPayment()
                {
                    CustomerId  = dto.CustomerId,
                    OrderId     = dto.OrderId,
                    TotalAmount = dto.Amount
                };

                _context.Payment.Add(newPayment);

                await _context.SaveChangesAsync();

                var paymentID = newPayment.Id;

                return(Ok(new { id = paymentID }));
            }
            catch (Exception ex)
            {
                return(NotFound());
            }
        }
Ejemplo n.º 14
0
        public async Task <string> AddAsync(PaymentDTO payment)
        {
            var resultFromPayment = _gateway.PaymentProcess(payment);

            var paymentEntity = new Payments
            {
                BookingOrderId = payment.BookingOrderId,
                CustomerId     = payment.CustomerId,
                Price          = payment.Price,
                PaymentStatus  = PaymetStatus.Completed //This part is based on the result returned from external gateway
            };

            var paymentRef = await _context.AddAsync(paymentEntity);

            //Publish the event here
            //Create Integration Event
            var paymentProcessedEvent = new PaymentProcessedIntegrationEvent(paymentRef.PaymentsId,
                                                                             paymentRef.BookingOrderId,
                                                                             paymentRef.CustomerId, (int)paymentEntity.PaymentStatus);

            _eventBus.Publish(paymentProcessedEvent);

            return(paymentRef.PaymentsId);
        }
Ejemplo n.º 15
0
        public bool ObjectExists(PaymentDTO payment)
        {
            var objectExists = false;

            //var iDbContext = DbContextUtil.GetDbContextInstance();
            //try
            //{
            //    var catRepository = new Repository<PaymentDTO>(iDbContext);
            //    var catExists = catRepository.GetAll()
            //        .FirstOrDefault(bp => (bp.DisplayName == payment.DisplayName ||
            //        (!string.IsNullOrEmpty(bp.TinNumber) && bp.TinNumber == payment.TinNumber)) &&
            //        bp.Id != payment.Id);


            //    if (catExists != null)
            //        objectExists = true;
            //}
            //finally
            //{
            //    iDbContext.Dispose();
            //}

            return(objectExists);
        }
Ejemplo n.º 16
0
 public void UpdateTuitionPayment(PaymentDTO payment)
 {
     PaymentDAO.UpdateTuitionPayment(payment);
 }
Ejemplo n.º 17
0
        public void UpdateMellatRquestPayment(PaymentDTO payment)
        {
            PaymentRequestDAO PaymentDAO = new PaymentRequestDAO();

            PaymentDAO.UpdateMellatPayment(payment);
        }
Ejemplo n.º 18
0
 public void UpdateMellatPayment(PaymentDTO payment)
 {
     PaymentDAO.UpdateMellatPayment(payment);
 }
Ejemplo n.º 19
0
        public async Task <IActionResult> Get(string id)
        {
            PaymentDTO paymentDto = await _paymentDS.Get(id);

            return(Ok(paymentDto));
        }
Ejemplo n.º 20
0
 private byte[] PrepareRequestBody(PaymentDTO model)
 {
     string queryModel = new QueryConverter().Serialize(model);
     return Encoding.UTF8.GetBytes(queryModel);
 }
Ejemplo n.º 21
0
 public async Task <int> AddPayment(PaymentDTO payment)
 {
     return(await _financialService.AddPayment(payment));
 }
Ejemplo n.º 22
0
        public string PostPayments(TransactionHeaderDTO transaction2, PaymentDTO payment2, PaymentModel paymentModel, CheckDTO selectedCheck)
        {
            string stat = string.Empty;

            try
            {
                var transaction =
                    _transactionRepository
                    .Query()
                    .Include(t => t.Warehouse, t => t.BusinessPartner, t => t.TransactionLines, t => t.Payments)
                    .Filter(t => t.Id == transaction2.Id)
                    .Get()
                    .FirstOrDefault();

                if (transaction == null)
                {
                    return("Empty transaction");
                }

                var bp = _businessPartnerRepository
                         .Query()
                         .Filter(b => b.Id == transaction.BusinessPartnerId)
                         .Get()
                         .FirstOrDefault();
                if (bp == null)
                {
                    return("No Business Partner");
                }

                PaymentDTO cashPayment = null;
                if (paymentModel.Amount > 0) //always cash payment
                {
                    #region Cash Payment

                    cashPayment = GetNewPayment(transaction, paymentModel.PaymentDate);
                    if (cashPayment != null)
                    {
                        cashPayment.PaymentMethod = PaymentMethods.Cash;
                        cashPayment.Status        = PaymentStatus.NotDeposited;
                        cashPayment.Amount        = paymentModel.Amount - paymentModel.Change;
                        if (!Singleton.Setting.HandleBankTransaction)
                        {
                            cashPayment.Status = PaymentStatus.Cleared;
                        }

                        _paymentRepository.Insert(cashPayment);

                        if (payment2 != null)
                        {
                            bp.TotalCredits = bp.TotalCredits - cashPayment.Amount;
                            if (payment2.Amount - cashPayment.Amount == 0)
                            {
                                bp.TotalNoOfCreditTransactions = bp.TotalNoOfCreditTransactions - 1;
                            }
                            _businessPartnerRepository.InsertUpdate(bp);
                        }
                    }

                    #endregion
                }

                //Commented because is always cash payment
                if (paymentModel.Amount < paymentModel.AmountRequired)
                {
                    if (selectedCheck != null && selectedCheck.CheckNumber.Length > 0)
                    {
                        #region Check Payment

                        var checkPayment = GetNewPayment(transaction, paymentModel.PaymentDate);
                        if (checkPayment != null)
                        {
                            checkPayment.Check         = selectedCheck;
                            checkPayment.PaymentMethod = PaymentMethods.Check;
                            checkPayment.Amount        = paymentModel.AmountRequired - paymentModel.Amount;
                            //piList.Add(checkPayment);
                            _paymentRepository.Insert(checkPayment);

                            if (payment2 == null)
                            {
                                bp.TotalCredits = bp.TotalCredits + checkPayment.Amount;
                                bp.TotalNoOfCreditTransactions = bp.TotalNoOfCreditTransactions + 1;
                                _businessPartnerRepository.InsertUpdate(bp);
                            }
                        }

                        #endregion
                    }
                    else if (transaction.BusinessPartner.AllowCreditsWithoutCheck)
                    {
                        #region Credit Payment

                        var creditPayment = GetNewPayment(transaction, paymentModel.PaymentDate);
                        if (creditPayment != null)
                        {
                            creditPayment.PaymentMethod = PaymentMethods.Credit;
                            creditPayment.DueDate       = DateTime.Now.AddDays(transaction.BusinessPartner.PaymentTerm);
                            creditPayment.Amount        = paymentModel.AmountRequired - paymentModel.Amount;
                            _paymentRepository.Insert(creditPayment);

                            if (payment2 == null)
                            {
                                bp.TotalCredits = bp.TotalCredits + creditPayment.Amount;
                                bp.TotalNoOfCreditTransactions = bp.TotalNoOfCreditTransactions + 1;
                                _businessPartnerRepository.InsertUpdate(bp);
                            }
                        }

                        #endregion
                    }
                    else
                    {
                        stat = "Got problem while getting check detail, Can't take credit or problem on check ..";
                        if (cashPayment != null)
                        {
                            _paymentRepository.Delete(cashPayment);
                        }
                    }
                }
                if (string.IsNullOrEmpty(stat))
                {
                    if (payment2 == null)
                    {
                        // Update Inventory
                        var iqList = new ItemQuantityService(_iDbContext).UpdateInventoryByTransaction(transaction);
                        foreach (var itemQuantityDTO in iqList)
                        {
                            _itemsQuantityRepository.InsertUpdate(itemQuantityDTO);
                        }

                        //Update transaction
                        transaction.Status = TransactionStatus.Posted;
                        _transactionRepository.InsertUpdate(transaction);

                        _unitOfWork.Commit();
                    }
                    else
                    {
                        var payment = _paymentRepository.FindById(payment2.Id);

                        payment.Enabled = false;
                        _paymentRepository.Update(payment);

                        _unitOfWork.Commit();
                    }
                }
            }
            catch (Exception exception)
            {
                stat = exception.Message;
            }
            finally
            {
                _iDbContext.Dispose();
            }
            return(stat);
        }
Ejemplo n.º 23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    PaymentDTO pay = new PaymentDTO();
                    pay.ReqKey = Request.Params["RefId"];

                    if (Request.Params["lbl_SaleOrderID"] != "")
                    {
                        lbl_SaleOrderID.Text = Request.Params["SaleOrderId"];
                        pay.OrderId          = long.Parse(lbl_SaleOrderID.Text);
                    }


                    if (Request.Params["SaleReferenceId"] != "")
                    {
                        pay.TraceNumber = long.Parse(Request.Params["SaleReferenceId"]);
                        lbl_SaleReferenceIdLabel.Text = pay.TraceNumber.ToString();
                    }

                    pay.Result = int.Parse(Request.Params["ResCode"]);
                    if (pay.Result.ToString() == "0")
                    {
                        if (VerifyPayment(pay) == "0")
                        {
                            PaymentDTO payinfo = bmp.GetRequestPaymentByRefID(pay.ReqKey);


                            lbl_Stcode.Text = payinfo.stcode;
                            Session.Timeout = 20;
                            Session[sessionNames.userID_StudentOstad] = lbl_Stcode.Text;
                            pay.stcode = payinfo.stcode;

                            pay.AppStatus = "COMMIT";
                            //bmp.UpdateMellatRquestPayment(pay);
                            lbl_ResCode.Text = "ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺍﻧﺠﺎﻡ ﺷﺪ";
                        }
                        else
                        {
                            lbl_ResCode.Text = ".وجه مبلغ به حساب واحد دانشگاهی واریز نشد چنانچه پس از 72 ساعت آینده به حساب شما برگشت داده نشد مجددا پرداخت نمایید ";
                            pay.AppStatus    = "ROLLBACK";
                            //bmp.UpdateMellatRquestPayment(pay);
                        }
                    }

                    else
                    {
                        pay.AppStatus = "FAILED";
                    }

                    if (!string.IsNullOrEmpty(pay.AppStatus) && pay.AppStatus != "COMMIT")
                    {
                        var paymnetStatus = Session["paymentStatus"] as List <GovahiRequest>;
                        if (
                            paymnetStatus != null &&
                            paymnetStatus.Any(x => x.HasBeenPaid == false && x.AmountTrans == 140000))
                        {
                            if (paymnetStatus.Any(x => x.HasBeenPaid))
                            {
                                paymnetStatus.ForEach(x =>
                                {
                                    if (x.HasBeenPaid)
                                    {
                                        GovahiBusiness.UpdateRollBackingPastPayment(x.Number, x.trasferRequestID,
                                                                                    paymnetStatus.FirstOrDefault(y => y.AmountTrans == 140000).Number);
                                    }
                                });
                            }
                        }
                    }
                    bmp.UpdateMellatRquestPayment(pay);
                    lbl_ResCode.Text = bmp.bmp_PaymentResult(pay.Result);
                }
                catch (Exception ex)
                {
                    Response.Redirect("~/Pages/ControlErrors.aspx?id=" + ex.Message);
                }
            }
        }
Ejemplo n.º 24
0
 public Task <PaymentDTO> UpdateAsync(PaymentDTO payment)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 25
0
        private void AddPayments()
        {
            if (SelectedRentalPayment.Payments.Count > 0)
            {
                SelectedRentalPayment.Payments = new List <PaymentDTO>();
            }

            var rentPayment = new PaymentDTO
            {
                Type          = PaymentTypes.Rent,
                RentalPayment = SelectedRentalPayment,
                PaymentDate   = SelectedRentalPayment.PaymentDate,
                ReceiptDate   = SelectedRentalPayment.ReceiptDate,
                Amount        = (decimal)(SelectedRentalPayment.PaymentPeriod * SelectedRentalPayment.RentAmount) / (decimal)1.15,
                ReceiptNumber = SelectedRentalPayment.ReceiptNumber,
                ReceiptType   = SelectedRentalPayment.ReceiptType,
                Reason        = SelectedRentalContrat.Room.Number +
                                " Rent From " + SelectedRentalPayment.StartDateString +
                                " To " + SelectedRentalPayment.EndDateString + " (" +
                                "ከ" + SelectedRentalPayment.StartDateStringAmharic + "-" +
                                "" + SelectedRentalPayment.EndDateStringAmharic + ")",
                UnitOfMeasure = "Month",
                UnitQty       = SelectedRentalPayment.PaymentPeriod,
                EachPrice     = SelectedRentalPayment.RentAmount / (decimal)1.15,
                PaymentMethod = PaymentMethods.Cash
            };

            SelectedRentalPayment.Payments.Add(rentPayment);

            if (SelectedRentalPayment.Penality != null && SelectedRentalPayment.Penality > 0)
            {
                var overdueMonths = CommonUtility.GetMonthsFromDays(LastRentalPayment.EndDate,
                                                                    SelectedRentalPayment.PaymentDate);
                var penalityPayment = new PaymentDTO
                {
                    Type          = PaymentTypes.Penality,
                    RentalPayment = SelectedRentalPayment,
                    PaymentDate   = SelectedRentalPayment.PaymentDate,
                    ReceiptDate   = SelectedRentalPayment.ReceiptDate,
                    Amount        = (decimal)SelectedRentalPayment.Penality / (decimal)1.15,
                    ReceiptNumber = SelectedRentalPayment.ReceiptNumber,
                    ReceiptType   = SelectedRentalPayment.ReceiptType,
                    Reason        = "Penality",
                    UnitOfMeasure = "",
                    UnitQty       = overdueMonths,
                    EachPrice     = SelectedRentalPayment.RentAmount * (decimal)0.1 / (decimal)1.15,
                    PaymentMethod = PaymentMethods.Cash
                };

                SelectedRentalPayment.Payments.Add(penalityPayment);
            }
            if (SelectedRentalPayment.ExtraPaymentAmount != null && SelectedRentalPayment.ExtraPaymentAmount > 0)
            {
                var extraPenalityPayment = new PaymentDTO
                {
                    Type          = PaymentTypes.Penality,
                    RentalPayment = SelectedRentalPayment,
                    PaymentDate   = SelectedRentalPayment.PaymentDate,
                    ReceiptDate   = SelectedRentalPayment.ReceiptDate,
                    Amount        = (decimal)SelectedRentalPayment.ExtraPaymentAmount / (decimal)1.15,
                    ReceiptNumber = SelectedRentalPayment.ReceiptNumber,
                    ReceiptType   = SelectedRentalPayment.ReceiptType,
                    Reason        = "Extra Penality",
                    UnitOfMeasure = "",
                    UnitQty       = 1,
                    EachPrice     = SelectedRentalPayment.ExtraPaymentAmount / (decimal)1.15,
                    PaymentMethod = PaymentMethods.Cash
                };

                SelectedRentalPayment.Payments.Add(extraPenalityPayment);
            }
            if (SelectedRentalPayment.AdditionalDays != null && SelectedRentalPayment.AdditionalDays > 0)
            {
                var additionalDaysPenality = new PaymentDTO
                {
                    Type          = PaymentTypes.Rent,
                    RentalPayment = SelectedRentalPayment,
                    PaymentDate   = SelectedRentalPayment.PaymentDate,
                    ReceiptDate   = SelectedRentalPayment.ReceiptDate,
                    Amount        =
                        (decimal)(((decimal)SelectedRentalPayment.AdditionalDays / 30) * SelectedRentalPayment.RentAmount) /
                        (decimal)1.15,
                    ReceiptNumber = SelectedRentalPayment.ReceiptNumber,
                    ReceiptType   = SelectedRentalPayment.ReceiptType,
                    Reason        = "Extra Days Rent",
                    UnitOfMeasure = "Day",
                    UnitQty       = SelectedRentalPayment.AdditionalDays,
                    EachPrice     = (SelectedRentalPayment.RentAmount / 30) / (decimal)1.15,
                    PaymentMethod = PaymentMethods.Cash
                };

                SelectedRentalPayment.Payments.Add(additionalDaysPenality);
            }
            if (SelectedRentalPayment.ServicePayment != null)
            {
                var additionalServicePayment = new PaymentDTO
                {
                    Type          = PaymentTypes.Service,
                    RentalPayment = SelectedRentalPayment,
                    PaymentDate   = SelectedRentalPayment.PaymentDate,
                    ReceiptDate   = SelectedRentalPayment.ReceiptDate,
                    Amount        =
                        (decimal)
                        (SelectedRentalPayment.ServicePayment.PaymentPeriod * SelectedRentalPayment.ServiceAmount) /
                        (decimal)1.15,
                    ReceiptNumber = SelectedRentalPayment.ReceiptNumber,
                    ReceiptType   = SelectedRentalPayment.ReceiptType,
                    Reason        = SelectedRentalContrat.Room.Number +
                                    " For Service From " + SelectedRentalPayment.ServicePayment.StartDateString +
                                    " To " + SelectedRentalPayment.ServicePayment.EndDateString + " (" +
                                    "ከ" + SelectedRentalPayment.ServicePayment.StartDateStringAmharic + "-" +
                                    "" + SelectedRentalPayment.ServicePayment.EndDateStringAmharic + ")",
                    UnitOfMeasure = "Month",
                    UnitQty       = SelectedRentalPayment.ServicePayment.PaymentPeriod,
                    EachPrice     = SelectedRentalPayment.ServiceAmount / (decimal)1.15,
                    PaymentMethod = PaymentMethods.Cash
                };

                SelectedRentalPayment.Payments.Add(additionalServicePayment);
            }
        }
Ejemplo n.º 26
0
 public IHttpActionResult AddPayment([FromBody] PaymentDTO Payment)
 {
     return(Ok(PaymentFunction.AddPayment(Payment)));
 }
Ejemplo n.º 27
0
        protected void grd_GovahiRequestState_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
        {
            var cmnb = new CommonBusiness();

            try
            {
                if (e.CommandName == "EditEraeBe")
                {
                    var txtEditEraeBe = e.Item.FindControl("txt_EditEraeBe") as TextBox;
                    if (txtEditEraeBe != null)
                    {
                        GovahiBusiness.UpdateEraeBe(txtEditEraeBe.Text, int.Parse(e.CommandArgument.ToString()));
                    }
                    business.UpdateStudentRequestLogID(Session[sessionNames.userID_StudentOstad].ToString(), 6, 3, int.Parse(e.CommandArgument.ToString()));
                    GovahiBusiness.UpdateStudentPOstNumber(Session[sessionNames.userID_StudentOstad].ToString(), "", 3, int.Parse(e.CommandArgument.ToString()));
                    cmnb.InsertIntoStudentLog(Session[sessionNames.userID_StudentOstad].ToString(), DateTime.Now.ToShortTimeString(), int.Parse(Session[sessionNames.appID_StudentOstad].ToString()), 19, "ویرایش محل ارائه");

                    var dtgo = GovahiBusiness.GetGovahiStatus(Session[sessionNames.userID_StudentOstad].ToString());
                    if (dtgo.Rows.Count > 0)
                    {
                        grd_GovahiRequestState.Visible    = true;
                        grd_GovahiRequestState.DataSource = dtgo;
                        grd_GovahiRequestState.DataBind();
                    }
                }

                if (e.CommandName == "pay")
                {
                    var dtbedehi      = GovahiBusiness.GetBedehkar(Session[sessionNames.userID_StudentOstad].ToString());
                    var dts           = GovahiBusiness.GetStRegisterd(Session[sessionNames.userID_StudentOstad].ToString());
                    var bedehi        = Convert.ToDouble((dtbedehi.Rows[0]["bedehi"].ToString()));
                    var dtmojazgovahi = GovahiBusiness.GetMojazGovahi(Session[sessionNames.userID_StudentOstad].ToString());

                    if (!GovahiBusiness.CanPay(Session[sessionNames.userID_StudentOstad].ToString()))
                    {
                        rwm_Validations.RadAlert("درخواست شما برای ترم کنونی نمی باشد لطفا درخواست ها رو حذف نمایید و مجددادرخواستی ثبت نمایید", 600, 100, "خطا", null);
                        return;
                    }
                    if (dtmojazgovahi.Rows.Count == 0 && bedehi > 0)
                    {
                        rwm_Validations.RadAlert("به علت بدهکاری درخواست گواهی اشتغال به تحصیل مقدور نمی باشد ", 420, 100, "خطا", null);
                        return;
                    }
                    else if (dts.Rows.Count == 0)
                    {
                        rwm_Validations.RadAlert("دانشجو در این ترم ثبت نام نکرده است", 300, 100, "خطا", null);
                        return;
                    }

                    long orderid;//= new bmp_PaymentBusiness().GenerateOrderId();


                    SetDefaultDateTime();
                    var pay = new PaymentDTO();
                    var bmp = new bmp_PaymentBusiness();
                    var dt  = GovahiBusiness.GetAmountForPay(Session[sessionNames.userID_StudentOstad].ToString());
                    grd_pay.DataSource = dt;
                    pay.Amount         = int.Parse(dt.Rows[0]["mablagh"].ToString());
                    pay.PayDate        = PayDate + "_" + PayTime;
                    pay.stcode         = Session[sessionNames.userID_StudentOstad].ToString();
                    pay.bankId         = 2;
                    pay.tterm          = ConfigurationManager.AppSettings["Term"];

                    var result = bmp.pay(pay.Amount, pay.stcode, out orderid, Convert.ToInt32(Session[sessionNames.appID_StudentOstad]), 0);
                    pay.OrderId = orderid;


                    var resultArray = result.Split(',');

                    pay.ReqKey      = resultArray[1];
                    pay.AppStatus   = "none";
                    pay.TraceNumber = 0;
                    pay.Result      = -1;
                    pay.PayType     = 1;
                    var reqIdArray = Session["ReqID"].ToString().Split(new char[] { ',' });
                    var payId      = Session["PayID"].ToString().Split(new char[] { ',' });

                    for (var i = 0; i < reqIdArray.Length; i++)
                    {
                        if (i == 0)
                        {
                            pay.RequestId = int.Parse(reqIdArray[i]);
                            GovahiBusiness.UpdatePymentDetail(pay.OrderId, pay.PayDate, int.Parse(payId[i]), 140000, pay.ReqKey);
                        }
                        else
                        {
                            pay.RequestId = int.Parse(reqIdArray[i]);
                            GovahiBusiness.UpdatePymentDetail(pay.OrderId, pay.PayDate, int.Parse(payId[i]), 20000, pay.ReqKey);
                        }
                    }
                    Session["ReqID"] = null;
                    Session["PayID"] = null;

                    if (resultArray[0] == "0")
                    {
                        ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script language='javascript' type='text/javascript'> postRefId('" + resultArray[1] + "');</script> ", false);
                    }
                }

                if (e.CommandName == "Del")
                {
                    var deloCommands = e.CommandArgument.ToString().Split(new char[] { ',' });
                    GovahiBusiness.DeleteGovahiRequest(int.Parse(deloCommands[0]), int.Parse(deloCommands[1]));
                    business.InsertInToStudentLog(Session[sessionNames.userID_StudentOstad].ToString(), DateTime.Now.Date, DateTime.Now.ToShortTimeString(), 1);
                    var dtgo = GovahiBusiness.GetGovahiStatus(Session[sessionNames.userID_StudentOstad].ToString());
                    if (dtgo.Rows.Count > 0)
                    {
                        grd_GovahiRequestState.Visible    = true;
                        grd_GovahiRequestState.DataSource = dtgo;
                        grd_GovahiRequestState.DataBind();
                    }
                    var dt = GovahiBusiness.GetAmountForPay(Session[sessionNames.userID_StudentOstad].ToString());
                    grd_pay.DataSource = dt;
                    grd_pay.DataBind();
                    if (dt.Rows.Count > 0 && (int.Parse(dt.Rows[0]["amount"].ToString())) > 0)
                    {
                        grd_pay.Visible = true;
                    }
                    else
                    {
                        grd_pay.Visible = false;
                    }
                }
            }
            catch (Exception exp)
            {
                Response.Write("Error: " + exp.Message);
            }
        }
Ejemplo n.º 28
0
 public IHttpActionResult UpdatePayment(PaymentDTO paymentDTO)
 {
     paymentService.Update(paymentMapper.Map(paymentDTO));
     return(Ok());
 }
Ejemplo n.º 29
0
 public void CreateStudentPayment(PaymentDTO payInfo)
 {
     PaymentDAO.CreateStudentPayment(payInfo);
 }
Ejemplo n.º 30
0
 public async Task <PaymentDTO> UpdatePayment(PaymentDTO payment)
 {
     return(await _financialService.UpdatePayment(payment));
 }
Ejemplo n.º 31
0
        public void CreateRequestStudentPayment(PaymentDTO payInfo)
        {
            PaymentRequestDAO PaymentDAO = new PaymentRequestDAO();

            PaymentDAO.CreateStudentPayment(payInfo);
        }
Ejemplo n.º 32
0
        public async Task <IActionResult> ProcessPayment(PaymentDTO model)
        {
            if (ModelState.IsValid)
            {
                if (model.Amount < 1M)
                {
                    return(BadRequest(Message.ResponseMessage("Error", errors: new { message = "Amount cannot be less than 1 pound" })));
                }

                if (model.ExpirationDate < DateTime.Today)
                {
                    return(BadRequest(Message.ResponseMessage("Error", errors: new { message = "Sorry, your card has expired" })));
                }

                var paymentAmount = model.Amount;

                string       id;
                PaymentModel payment;
                bool         changePaymentStatus;

                //handling of cheap payments
                if (paymentAmount < 21M)
                {
                    do
                    {
                        id      = Guid.NewGuid().ToString();
                        payment = await _cheapPaymentGateway.GetCheapPaymentById(id);
                    } while (payment != null);

                    var CheapPayment = new PaymentModel
                    {
                        PaymentId        = id,
                        CreditCardNumber = model.CreditCardNumber,
                        CardHolder       = model.CardHolder,
                        ExpirationDate   = model.ExpirationDate,
                        SecurityCode     = model.SecurityCode,
                        Amount           = model.Amount
                    };

                    try
                    {
                        var result = await _cheapPaymentGateway.AddCheapPayment(CheapPayment);

                        //update the status of the payment
                        PaymentState status;
                        if (result)
                        {
                            var RecentlyAdded = await _cheapPaymentGateway.GetCheapPaymentById(id);

                            status = await _statusRepo.GetStatusByName("success");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId; //error here
                            changePaymentStatus          = await _cheapPaymentGateway.UpdateCheapPayment(RecentlyAdded);

                            if (changePaymentStatus)
                            {
                                paymentCounter = 0;
                                return(Ok(Message.ResponseMessage("Success", data: new { message = $"Payment of {(model.Amount > 1 ? model.Amount + " pounds" : model.Amount + " pound")} was successful" })));
                            }
                            //if update of status doesn't succeed perform a rollback to 'pending'
                            paymentCounter = 0;
                            status         = await _statusRepo.GetStatusByName("failed");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId;
                            changePaymentStatus          = await _cheapPaymentGateway.UpdateCheapPayment(RecentlyAdded);

                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't update payment status" })));
                        }
                        else
                        {
                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't make payment of {(model.Amount > 1 ? model.Amount + " pounds" : model.Amount + " pound")}. Try again" })));
                        }
                    }
                    catch (Exception ex)
                    {
                        return(StatusCode(500, Message.ResponseMessage("Server Error", errors: new { message = ex.Message })));
                    }
                }
                //handling of expensive payments
                if (paymentAmount >= 21M && paymentAmount <= 500M)
                {
                    do
                    {
                        id      = Guid.NewGuid().ToString();
                        payment = await _expensivePaymentGateway.GetExpensivePaymentById(id);
                    } while (payment != null);

                    var ExpensivePayment = new PaymentModel
                    {
                        PaymentId        = id,
                        CreditCardNumber = model.CreditCardNumber,
                        CardHolder       = model.CardHolder,
                        ExpirationDate   = model.ExpirationDate,
                        SecurityCode     = model.SecurityCode,
                        Amount           = model.Amount
                    };

                    try
                    {
                        var result = await _expensivePaymentGateway.AddExpensivePayment(ExpensivePayment);

                        //update the status of the payment
                        PaymentState status;
                        if (result)
                        {
                            var RecentlyAdded = await _expensivePaymentGateway.GetExpensivePaymentById(id);

                            status = await _statusRepo.GetStatusByName("success");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId;
                            changePaymentStatus          = await _expensivePaymentGateway.UpdateExpensivePayment(RecentlyAdded);

                            if (changePaymentStatus)
                            {
                                paymentCounter = 0;
                                return(Ok(Message.ResponseMessage("Success", data: new { message = $"Payment of {model.Amount} pounds was successful" })));
                            }
                            //if update of status doesn't succeed perform a rollback to 'pending'
                            paymentCounter = 0;
                            status         = await _statusRepo.GetStatusByName("failed");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId;
                            changePaymentStatus          = await _expensivePaymentGateway.UpdateExpensivePayment(RecentlyAdded);

                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't update payment status" })));
                        }
                        else
                        {
                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't make payment of {(model.Amount > 1 ? model.Amount + " pounds" : model.Amount + " pound")}. Try again" })));
                        }
                    }
                    catch (Exception ex)
                    {
                        //Execute the cheapPaymentGateway once if expensive payment fails
                        if (paymentCounter < 1)
                        {
                            var tryCheapPayment = await _cheapPaymentGateway.AddCheapPayment(ExpensivePayment);

                            if (tryCheapPayment)
                            {
                                paymentCounter++;
                            }
                            return(Ok(Message.ResponseMessage("Success", data: new { message = $"Payment of {model.Amount} pounds was successful" })));
                        }
                        return(StatusCode(500, Message.ResponseMessage("Server Error", errors: new { message = ex.Message })));
                    }
                }
                if (paymentAmount > 500)
                {
                    //handling of premium payments
premiumPay:
                    do
                    {
                        id      = Guid.NewGuid().ToString();
                        payment = await _expensivePaymentGateway.GetExpensivePaymentById(id);
                    } while (payment != null);

                    var PremiumPayment = new PaymentModel
                    {
                        PaymentId        = id,
                        CreditCardNumber = model.CreditCardNumber,
                        CardHolder       = model.CardHolder,
                        ExpirationDate   = model.ExpirationDate,
                        SecurityCode     = model.SecurityCode,
                        Amount           = model.Amount
                    };

                    PaymentState status;
                    try
                    {
                        var result = await _premiumPaymentGateway.AddPremiumPayment(PremiumPayment);

                        //update the status of the payment
                        if (result)
                        {
                            var RecentlyAdded = await _premiumPaymentGateway.GetPremiumPaymentById(id);

                            status = await _statusRepo.GetStatusByName("success");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId;
                            changePaymentStatus          = await _premiumPaymentGateway.UpdatePremiumPayment(RecentlyAdded);

                            if (changePaymentStatus)
                            {
                                paymentCounter = 0;
                                return(Ok(Message.ResponseMessage("Success", data: new { message = $"Payment of {model.Amount} pounds was successful" })));
                            }
                            //if update of status doesn't succeed perform a rollback to 'pending'
                            paymentCounter = 0;
                            status         = await _statusRepo.GetStatusByName("failed");

                            RecentlyAdded.PaymentStateId = status.PaymentStateId;
                            changePaymentStatus          = await _premiumPaymentGateway.UpdatePremiumPayment(RecentlyAdded);

                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't update payment status" })));
                        }
                        else
                        {
                            return(StatusCode(500, Message.ResponseMessage("Error", errors: new { message = $"Couldn't make payment of {(model.Amount > 1 ? model.Amount + " pounds" : model.Amount + " pound")}. Try again" })));
                        }
                    }
                    catch (Exception ex)
                    {
                        while (paymentCounter < 3)
                        {
                            paymentCounter++;
                            goto premiumPay;
                        }

                        return(StatusCode(500, Message.ResponseMessage("Server Error", errors: new { message = ex.Message })));
                    }
                }
            }

            return(BadRequest(Message.ResponseMessage("Error", errors: new { message = ModelState })));
        }
Ejemplo n.º 33
0
        public async Task <ProcessPaymentResponse> ProcessNewPayment(PaymentDTO payment)
        {
            try
            {
                //validate request
                // 1. validate card number by calling the ValidateCardNumberClass
                if (ValidateCardNumber.IsCardNumberValid(ValidateCardNumber.RemoveSpaceAndAlphaInCardNumber(payment.CreditCardNumber)))
                {
                    return new ProcessPaymentResponse {
                               Status = false, Message = "Invalid card number", ResponseType = ResponseType.badRequest
                    }
                }
                ;
                if (string.IsNullOrEmpty(payment.CardHolder))
                {
                    return new ProcessPaymentResponse {
                               Status = false, Message = "Provide card holder name", ResponseType = ResponseType.badRequest
                    }
                }
                ;
                if (payment.Amount <= 0)
                {
                    return new ProcessPaymentResponse {
                               Status = false, Message = "Provide a positive amount", ResponseType = ResponseType.badRequest
                    }
                }
                ;
                if (ValidateCardNumber.RemoveSpaceAndAlphaInCardNumber(payment.SecurityCode).Length != 3)
                {
                    return new ProcessPaymentResponse {
                               Status = false, Message = "Provide a valid security code", ResponseType = ResponseType.badRequest
                    }
                }
                ;
                if (DateTime.Now.Date > payment.ExpirationDate.Date)
                {
                    return new ProcessPaymentResponse {
                               Status = false, Message = "Card has expired", ResponseType = ResponseType.badRequest
                    }
                }
                ;

                var submitPaymentInfo = await _paymentService.AddPayment(_mapper.Map <Payment>(payment));

                if (submitPaymentInfo != null)
                {
                    var response = false;

                    // Call the  -ICheapPaymentGateway(Amount <20)

                    if (payment.Amount < 20)
                    {
                        response = await _cheapPayment.MakePayment(_config.GetSection("CheapServiceURL").Value, payment);
                    }
                    //Call the - IExpensivePaymentGateway(Amount btw 21-500)
                    else if (payment.Amount > 20 && payment.Amount < 500)
                    {
                        response = await _expensivePayment.MakePayment(_config.GetSection("ExpensiveServiceURL").Value, payment);

                        //if failed retry nce with ICheapPaymentGateway
                        if (!response)
                        {
                            response = await _cheapPayment.MakePayment(_config.GetSection("CheapServiceURL").Value, payment);
                        }
                    }
                    else
                    {
                        //Call the  PremiumPaymentService (Amount >500 ) and retry 3 times if failed
                        var retryCount = 0;
                        while (!response && retryCount < 3)
                        {
                            response = await _cheapPayment.MakePayment(_config.GetSection("PremiumServiceURL").Value, payment);
                        }
                    }

                    if (response)
                    {
                        await _paymentStatusService.UpdatePaymentStatus(submitPaymentInfo.PaymentId, "processed");

                        return(new ProcessPaymentResponse {
                            Status = response, Message = "processed", ResponseType = ResponseType.badRequest
                        });
                    }
                    else
                    {
                        await _paymentStatusService.UpdatePaymentStatus(submitPaymentInfo.PaymentId, "processed");

                        return(new ProcessPaymentResponse {
                            Status = response, Message = "failed", ResponseType = ResponseType.badRequest
                        });
                    }
                }

                else
                {
                    return(new ProcessPaymentResponse {
                        Message = "Internal server error", Status = false, ResponseType = ResponseType.internalServerError
                    });
                }
            }
            catch (Exception ex)
            {
                return(new ProcessPaymentResponse {
                    Message = "Internal server error", Status = false, ResponseType = ResponseType.internalServerError
                });
            }
        }