public override bool UpdatePayMent(PaymentModel model)
 {
     using (SqlConnection cn = new SqlConnection(this.ConnectionString))
     {
         SqlCommand cmd = new SqlCommand("proc_UPDATE_PAYMENT", cn);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add("@ID", SqlDbType.Int).Value = model.Id;
         cmd.Parameters.Add("@NAME", SqlDbType.NVarChar).Value = model.Name;
         cmd.Parameters.Add("@STATUS", SqlDbType.Int).Value = model.Status;
         cn.Open();
         int re = ExecuteNonQuery(cmd);
         return (re == 1);
     }
 }
示例#2
0
        /// <summary>
        /// This method is called before the order is completed. This method should check all the parameters
        /// and validate the credit card or other parameters accepted.
        /// </summary>
        /// <param name="form">The form.</param>
        /// <param name="model">The model.</param>
        /// <returns>payment</returns>
        public Payment PreProcess(OrderForm form, PaymentModel model)
        {
            var cardPayment = new CreditCardPayment
                {
                    BillingAddressId = form.BillingAddressId,
                    CreditCardCustomerName = model.CustomerName,
                    CreditCardNumber = model.CardNumber,
                    CreditCardExpirationMonth = model.ExpirationMonth,
                    CreditCardExpirationYear = model.ExpirationYear,
                    CreditCardSecurityCode = model.CardVerificationNumber,
                    CreditCardType = model.CardType,
                    PaymentType = PaymentType.CreditCard.GetHashCode(),
                    PaymentTypeId = 0,
                    PaymentMethodName = model.DisplayName,
                    PaymentMethodId = model.Id,
					Amount = form.Total
                };

            return cardPayment;
        }
    public override OrderDetailModel GetByIdPayMent(int id)
    {
        using (SqlConnection cn = new SqlConnection(this.ConnectionString))
        {
            SqlCommand cmd = new SqlCommand("proc_GET_PAYMENT_BY_ID", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@ID", SqlDbType.Int).Value = id;
            cn.Open();
            IDataReader reader = ExecuteReader(cmd, CommandBehavior.SingleRow);
            if (reader.Read())
            {
                PaymentModel model = new PaymentModel {
                    (int)reader["id"],
                    reader["Name"].ToString,
                    (int)reader["STATUS"]

                          };
            }
            else
                return null;
        }
    }
示例#4
0
        internal bool SetPaymentType(PaymentModel objReq)
        {

            using (var db = new WizzDataContext())
            {
                var userDetails = db.tblUsers.FirstOrDefault(x => x.pkUserId == Convert.ToInt64(objReq.userId) && x.isDelete == false);
                if (userDetails != null)
                {

                    userDetails.paymentType = Convert.ToInt16(objReq.paymentType);
                    db.SubmitChanges();
                    return true;
                }
                else
                {

                    return false;
                }

            }

        }
        private async Task <PaymentModel> GetInvoiceModel(string invoiceId, PaymentMethodId paymentMethodId)
        {
            var invoice = await _InvoiceRepository.GetInvoice(invoiceId);

            if (invoice == null)
            {
                return(null);
            }
            var store = await _StoreRepository.FindStore(invoice.StoreId);

            bool isDefaultPaymentId = false;

            if (paymentMethodId == null)
            {
                paymentMethodId    = store.GetDefaultPaymentId(_NetworkProvider);
                isDefaultPaymentId = true;
            }
            BTCPayNetworkBase network = _NetworkProvider.GetNetwork <BTCPayNetworkBase>(paymentMethodId.CryptoCode);

            if (network == null && isDefaultPaymentId)
            {
                //TODO: need to look into a better way for this as it does not scale
                network         = _NetworkProvider.GetAll().OfType <BTCPayNetwork>().FirstOrDefault();
                paymentMethodId = new PaymentMethodId(network.CryptoCode, PaymentTypes.BTCLike);
            }
            if (invoice == null || network == null)
            {
                return(null);
            }
            if (!invoice.Support(paymentMethodId))
            {
                if (!isDefaultPaymentId)
                {
                    return(null);
                }
                var paymentMethodTemp = invoice.GetPaymentMethods()
                                        .Where(c => paymentMethodId.CryptoCode == c.GetId().CryptoCode)
                                        .FirstOrDefault();
                if (paymentMethodTemp == null)
                {
                    paymentMethodTemp = invoice.GetPaymentMethods().First();
                }
                network         = paymentMethodTemp.Network;
                paymentMethodId = paymentMethodTemp.GetId();
            }

            var paymentMethod        = invoice.GetPaymentMethod(paymentMethodId);
            var paymentMethodDetails = paymentMethod.GetPaymentMethodDetails();
            var dto        = invoice.EntityToDTO();
            var cryptoInfo = dto.CryptoInfo.First(o => o.GetpaymentMethodId() == paymentMethodId);
            var storeBlob  = store.GetStoreBlob();
            var currency   = invoice.ProductInformation.Currency;
            var accounting = paymentMethod.Calculate();

            ChangellySettings changelly = (storeBlob.ChangellySettings != null && storeBlob.ChangellySettings.Enabled &&
                                           storeBlob.ChangellySettings.IsConfigured())
                ? storeBlob.ChangellySettings
                : null;

            CoinSwitchSettings coinswitch = (storeBlob.CoinSwitchSettings != null && storeBlob.CoinSwitchSettings.Enabled &&
                                             storeBlob.CoinSwitchSettings.IsConfigured())
                ? storeBlob.CoinSwitchSettings
                : null;


            var changellyAmountDue = changelly != null
                ? (accounting.Due.ToDecimal(MoneyUnit.BTC) *
                   (1m + (changelly.AmountMarkupPercentage / 100m)))
                : (decimal?)null;

            var paymentMethodHandler = _paymentMethodHandlerDictionary[paymentMethodId];
            var model = new PaymentModel()
            {
                CryptoCode          = network.CryptoCode,
                RootPath            = this.Request.PathBase.Value.WithTrailingSlash(),
                OrderId             = invoice.OrderId,
                InvoiceId           = invoice.Id,
                DefaultLang         = storeBlob.DefaultLang ?? "en",
                HtmlTitle           = storeBlob.HtmlTitle ?? "CoinSmart Invoice",
                CustomCSSLink       = storeBlob.CustomCSS,
                CustomLogoLink      = storeBlob.CustomLogo,
                CryptoImage         = Request.GetRelativePathOrAbsolute(paymentMethodHandler.GetCryptoImage(paymentMethodId)),
                BtcAddress          = paymentMethodDetails.GetPaymentDestination(),
                BtcDue              = accounting.Due.ToString(),
                OrderAmount         = (accounting.TotalDue - accounting.NetworkFee).ToString(),
                OrderAmountFiat     = OrderAmountFromInvoice(network.CryptoCode, invoice.ProductInformation),
                CustomerEmail       = invoice.RefundMail,
                RequiresRefundEmail = storeBlob.RequiresRefundEmail,
                ShowRecommendedFee  = storeBlob.ShowRecommendedFee,
                FeeRate             = paymentMethodDetails.GetFeeRate(),
                ExpirationSeconds   = Math.Max(0, (int)(invoice.ExpirationTime - DateTimeOffset.UtcNow).TotalSeconds),
                MaxTimeSeconds      = (int)(invoice.ExpirationTime - invoice.InvoiceTime).TotalSeconds,
                MaxTimeMinutes      = (int)(invoice.ExpirationTime - invoice.InvoiceTime).TotalMinutes,
                ItemDesc            = invoice.ProductInformation.ItemDesc,
                Rate                  = ExchangeRate(paymentMethod),
                MerchantRefLink       = invoice.RedirectURL?.AbsoluteUri ?? "/",
                RedirectAutomatically = invoice.RedirectAutomatically,
                StoreName             = store.StoreName,
                PeerInfo              = (paymentMethodDetails as LightningLikePaymentMethodDetails)?.NodeInfo,
                TxCount               = accounting.TxRequired,
                BtcPaid               = accounting.Paid.ToString(),
#pragma warning disable CS0618 // Type or member is obsolete
                Status = invoice.StatusString,
#pragma warning restore CS0618 // Type or member is obsolete
                NetworkFee          = paymentMethodDetails.GetNextNetworkFee(),
                IsMultiCurrency     = invoice.GetPayments().Select(p => p.GetPaymentMethodId()).Concat(new[] { paymentMethod.GetId() }).Distinct().Count() > 1,
                ChangellyEnabled    = changelly != null,
                ChangellyMerchantId = changelly?.ChangellyMerchantId,
                ChangellyAmountDue  = changellyAmountDue,
                CoinSwitchEnabled   = coinswitch != null,
                CoinSwitchAmountMarkupPercentage = coinswitch?.AmountMarkupPercentage ?? 0,
                CoinSwitchMerchantId             = coinswitch?.MerchantId,
                CoinSwitchMode   = coinswitch?.Mode,
                StoreId          = store.Id,
                AvailableCryptos = invoice.GetPaymentMethods()
                                   .Where(i => i.Network != null)
                                   .Select(kv =>
                {
                    var availableCryptoPaymentMethodId = kv.GetId();
                    var availableCryptoHandler         = _paymentMethodHandlerDictionary[availableCryptoPaymentMethodId];
                    return(new PaymentModel.AvailableCrypto()
                    {
                        PaymentMethodId = kv.GetId().ToString(),
                        CryptoCode = kv.Network?.CryptoCode ?? kv.GetId().CryptoCode,
                        PaymentMethodName = availableCryptoHandler.GetPaymentMethodName(availableCryptoPaymentMethodId),
                        IsLightning =
                            kv.GetId().PaymentType == PaymentTypes.LightningLike,
                        CryptoImage = Request.GetRelativePathOrAbsolute(availableCryptoHandler.GetCryptoImage(availableCryptoPaymentMethodId)),
                        Link = Url.Action(nameof(Checkout),
                                          new
                        {
                            invoiceId = invoiceId,
                            paymentMethodId = kv.GetId().ToString()
                        })
                    });
                }).Where(c => c.CryptoImage != "/")
                                   .OrderByDescending(a => a.CryptoCode == "BTC").ThenBy(a => a.PaymentMethodName).ThenBy(a => a.IsLightning ? 1 : 0)
                                   .ToList()
            };

            paymentMethodHandler.PreparePaymentModel(model, dto, storeBlob);
            if (model.IsLightning && storeBlob.LightningAmountInSatoshi && model.CryptoCode == "Sats")
            {
                model.Rate = _CurrencyNameTable.DisplayFormatCurrency(paymentMethod.Rate / 100_000_000, paymentMethod.ParentEntity.ProductInformation.Currency);
            }
            model.UISettings      = paymentMethodHandler.GetCheckoutUISettings();
            model.PaymentMethodId = paymentMethodId.ToString();
            var expiration = TimeSpan.FromSeconds(model.ExpirationSeconds);

            model.TimeLeft = expiration.PrettyPrint();
            return(model);
        }
示例#6
0
        public IHttpActionResult Post(PaymentModel baseRequest)
        {
            var response = service.SavePayment(baseRequest);

            return(Ok(response));
        }
 public ActionResult SubmitPayment(PaymentModel paymentModel)
 {
     paymentModel.IsPaymentCurrentlyBeingProcessed = true;
     Session[Helpers.IsPaymentCurrentlyBeingProcessedSessionKey] = true;
     return(View("PaymentForm", paymentModel));
 }
 public abstract void PreparePaymentModel(PaymentModel model, InvoiceResponse invoiceResponse,
                                          StoreBlob storeBlob);
        public async Task <PaymentDto> Handle(CreatePaymentCommand request, CancellationToken cancellationToken)
        {
            var input = request.Data.Attributes;

            var payment = new PaymentModel()
            {
                payment_type = input.payment_type,
                gross_amount = input.gross_amount,
                bank         = input.bank,
                order_id     = input.order_id
            };

            _context.AllPayments.Add(payment);
            await _context.SaveChangesAsync();

            var p      = _context.AllPayments.First(x => x.transaction_status == input.transaction_status);
            var target = new TargetCommand()
            {
                id = p.id
            };
            var client = new HttpClient();

            var command = new NotificationAndLogsModel()
            {
                title   = "rabbit-test",
                message = "this is only testing",
                type    = "email",
                from    = 98780,
                target  = new List <TargetCommand>()
                {
                    target
                }
            };

            var attributes = new Attribute <NotificationAndLogsModel>()
            {
                Attributes = command
            };

            var httpContent = new CommandDto <NotificationAndLogsModel>()
            {
                Data = attributes
            };

            var jsonObject = JsonConvert.SerializeObject(httpContent);
            //var content = new StringContent(jsonObject, Encoding.UTF8, "application/json");
            //await client.PostAsync("http://localhost:7800/notification", content);


            var factory = new ConnectionFactory()
            {
                HostName = "notification-container"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "halonot", "fanout");

                    channel.QueueDeclare(queue: "notification", durable: true, exclusive: false, autoDelete: false, arguments: null);
                    channel.QueueBind("notification", "halonot", routingKey: "");

                    var body       = Encoding.UTF8.GetBytes(jsonObject);
                    var properties = channel.CreateBasicProperties();
                    properties.Persistent = true;

                    channel.BasicPublish(exchange: "halonot",
                                         routingKey: "",
                                         basicProperties: null,
                                         body: body);


                    Console.WriteLine("Message has sent");

                    return(new PaymentDto
                    {
                        message = "Success add a payment data",
                        success = true
                    });
                }
        }
示例#10
0
        public async Task <IActionResult> SavePayment([FromBody] PaymentModel payment)
        {
            var response = await _paymentMode.SavePayementDetails(payment);

            return(Ok(response));
        }
示例#11
0
		/// <summary>
		/// Validates input data for the control. In case of Credit card pre authentication will be the best way to
		/// validate. The error message if any should be displayed within a control itself.
		/// </summary>
		/// <param name="model">The model.</param>
		/// <returns>Returns false if validation is failed.</returns>
        public bool ValidateData(PaymentModel model)
        {
            return true;
        }
示例#12
0
        public async Task RequestForAdvancePaymentTest()
        {
            var customer = new CustomerModel()
            {
                Name  = "Olavo Neto",
                Email = "*****@*****.**",
            };

            var registeredCustomer = await DbContext.Customers.FirstOrDefaultAsync();

            var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken();

            customer.Id = registeredCustomer.Id;

            var paymentModel = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            var paymentModel2 = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 150,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };

            PaymentController controller = new PaymentController(DbContext, FakeAcquirer, FakeAccount, FakeLogger);
            await controller.ProcessPayment(paymentModel);

            await controller.ProcessPayment(paymentModel2);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };
            var firstPaymentForAdvance =
                new AdvanceListModel()
            {
                AuthToken = waiToken,
                Payments  = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.First() }.Select(q => q.Id)
            };

            var adv = await controller.RequestForAdvance(firstPaymentForAdvance);

            Assert.Equal(150, adv.GrossAmount);
            var percentTax = 0.038m;
            var instalment = decimal.Divide(150, 5);

            Assert.Equal(150m - 0.9m - (1m * percentTax) * instalment - (2m * percentTax) * instalment - (3m * percentTax) * instalment - (4m * percentTax) * instalment - (5m * percentTax) * instalment, adv.NetAmount);
        }
示例#13
0
        public PaymentResultModel DoPayment(PaymentModel paymentModel)
        {
            var result = new PaymentResultModel();

            try
            {
                var createDate = DateTime.UtcNow;

                var billingInfo = new BillingInfo()
                {
                    FirstName  = paymentModel.FirstName,
                    Email      = paymentModel.Email,
                    CreatedOn  = createDate,
                    Country    = paymentModel.Country,
                    Active     = false,
                    Address1   = paymentModel.Address1,
                    Address2   = paymentModel.Address2,
                    City       = paymentModel.City,
                    LastName   = paymentModel.LastName,
                    Phone      = paymentModel.Phone,
                    PostalCode = paymentModel.PostalCode,
                    State      = paymentModel.State,
                    Title      = paymentModel.Title,
                    Payment    = new List <Payment> {
                    }
                };

                var payment = new Payment
                {
                    Active         = false,
                    TransactionId  = string.Empty,
                    AuthCode       = string.Empty,
                    AmountPaid     = decimal.Parse(paymentModel.PaymentAmount),
                    CardHolderName = paymentModel.CardHolderName,
                    CardF4L4       = paymentModel.CardNumber.Substring(0, 4) + paymentModel.CardNumber.Substring(paymentModel.CardNumber.Length - 4, 4),
                    CurrencyId     = (int)Currency.CAD,
                    PaymentDate    = createDate,
                    PaymentType    = (int)PaymentType.Purchase
                };

                billingInfo.Payment.Add(payment);

                var data = _billingRepository.Add(billingInfo);

                var request = new HelcimBasicRequestModel()
                {
                    OrderNumber = "Dora-" + DateTime.Now.ToString("yyyyMMddhhmmss"),
                    Amount      = decimal.Parse(paymentModel.PaymentAmount),
                    CreditCard  = new HelcimCreditCardRequestModel()
                    {
                        CardHolderName       = paymentModel.CardHolderName,
                        CardNumber           = paymentModel.CardNumber,
                        CardExpiry           = paymentModel.CardExpiry,
                        CardCVV              = paymentModel.CardCVV,
                        CardHolderAddress    = paymentModel.Address1,
                        CardHolderPostalCode = paymentModel.PostalCode
                    }
                };

                result = (PaymentResultModel)_helcimPaymentService.ProcessPayment(request);

                if (result.Success && result.Approved)
                {
                    billingInfo.Active    = true;
                    payment.Active        = true;
                    payment.TransactionId = result.TransactionId;
                    payment.AuthCode      = result.AuthCode;

                    _billingRepository.Update(billingInfo);

                    result.PaymentId = payment.Id;
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message;
            }

            return(result);
        }
示例#14
0
 public virtual ActionResult PaymentInfo()
 {
     this.FlashWarning("about to test the Braintree sandbox");
     var payment = new PaymentModel { Number = "4111111111111111", ExpirationDate = "05/2012" }  ;
     return View(payment);
 }
        [ProducesResponseType(typeof(PaymentResponseModel), 200)] // OK
        public async Task <IActionResult> CreatePayment(PaymentModel paymentModel)
        {
            var response = await _paymentService.DoPaymentAsync(_mapper.Map <Payment>(paymentModel));

            return(Ok(_mapper.Map <PaymentResponseModel>(response)));
        }
示例#16
0
        /// <summary>
        /// To get current Next Number from seleted bank and payment method
        /// </summary>
        /// <param name="C_BankAccount_ID">Bank Account</param>
        /// <param name="VA009_PaymentMethod_ID">Payment Method</param>
        /// <returns>Check Number</returns>
        public ActionResult getCheckNo(int C_BankAccount_ID, int VA009_PaymentMethod_ID)
        {
            PaymentModel _payMdl = new PaymentModel();

            return(Json(JsonConvert.SerializeObject(_payMdl.getCheckNo(C_BankAccount_ID, VA009_PaymentMethod_ID)), JsonRequestBehavior.AllowGet));
        }
示例#17
0
        // reached by the paylink in the confirmation email
        // which is produced in EnrollAndConfirm
        public ActionResult PayAmtDue(string q)
        {
            if (!q.HasValue())
            {
                return(Content("unknown"));
            }
            var id = Util.Decrypt(q).ToInt2();
            var qq = from t in DbUtil.Db.Transactions
                     where t.OriginalId == id || t.Id == id
                     orderby t.Id descending
                     select t;
            var ti = qq.FirstOrDefault();

            var org    = DbUtil.Db.LoadOrganizationById(ti.OrgId);
            var amtdue = PaymentForm.AmountDueTrans(DbUtil.Db, ti);

            if (amtdue == 0)
            {
                return(Content("no outstanding transaction"));
            }

#if DEBUG
            ti.Testing = true;
            if (!ti.Address.HasValue())
            {
                ti.Address = "235 Riveredge";
                ti.City    = "Cordova";
                ti.Zip     = "38018";
                ti.State   = "TN";
            }
#endif
            var pf = PaymentForm.CreatePaymentFormForBalanceDue(ti, amtdue);

            SetHeaders(pf.OrgId ?? 0);

            if (OnlineRegModel.GetTransactionGateway() != "serviceu")
            {
                return(View("Payment/Process", pf));
            }


            ViewBag.TranId = ti.Id;
            var pm = new PaymentModel
            {
                NameOnAccount = pf.FullName(),
                Address       = pf.Address,
                Amount        = pf.Amtdue,
                City          = pf.City,
                Email         = pf.Email,
                Phone         = pf.Phone.FmtFone(),
                State         = pf.State,
                PostalCode    = pf.Zip,
                testing       = pf.testing,
                PostbackURL   = DbUtil.Db.ServerLink("/OnlineReg/ConfirmServiceU/" + id),
                Misc2         = pf.Description,
                Misc1         = pf.FullName(),
                _URL          = pf.URL,
                _timeout      = new PaymentForm().TimeOut,
            };

            return(View("PayAmtDue/ServiceU", pm));
        }
示例#18
0
        public PaymentModel AckPaymentandProcess(AVOAIALifeEntities Context, PaymentModel objPaymentModel, tblPolicy objtblpolicy)
        {
            SMSIntegration objSMSIntegration = new SMSIntegration();
            SMSDetails     objSMSDetails     = new SMSDetails();

            Common.CommonBusiness objCommonBusiness = new Common.CommonBusiness();
            #region UW deviations
            UWRuleLogic objLogic       = new UWRuleLogic();
            PolicyLogic objPolicyLogic = new PolicyLogic();
            objPaymentModel.Message = string.Empty;


            //bool dataUpdated = false;
            //var ilData = Context.tblLogILUpdates.Where(a => a.ProposalNo == objPaymentModel.ProposalNo).FirstOrDefault();
            //if (ilData != null)
            //{
            //    if (ilData.ServiceStatus == "SUCC" && ilData.ServiceName == "ModifyProposal")
            //        dataUpdated = true;
            //}
            //if (dataUpdated)
            //{
            //    //S003
            //    var CustomerDetails=objtblpolicy.tblPolicyRelationships.FirstOrDefault().tblPolicyClient;
            //    //var Title = Context.tblMasCommonTypes.Where(a => a.Code == CustomerDetails.Title).Select(a => a.ShortDesc).FirstOrDefault();
            //    //objSMSDetails.Salutation = objCommonBusiness.ConverttoTitlecase(Title);
            //    string Sal = CustomerDetails.Title;
            //    var Salutation = Context.tblMasCommonTypes.Where(a => a.Code == Sal && a.MasterType == "Salutation").Select(a => a.ShortDesc).FirstOrDefault();
            //    var Salu = Context.tblMasCommonTypes.Where(a => a.Description == Sal && a.MasterType == "Salutation").Select(a => a.ShortDesc).FirstOrDefault();
            //    if (!String.IsNullOrEmpty(Salutation))
            //    {
            //        objSMSDetails.Salutation = Salutation;
            //    }
            //    else if (!String.IsNullOrEmpty(Salu))
            //    {
            //        objSMSDetails.Salutation = Salu;
            //    }
            //    else
            //    {
            //        objSMSDetails.Salutation = Sal;
            //    }
            //    var Name = "";
            //    if (CustomerDetails.FullName == "CORP")
            //    {
            //        Name = CustomerDetails.CorporateName;
            //    }
            //    else
            //    {
            //        Name = CustomerDetails.LastName;
            //    }
            //    objSMSDetails.Name = objCommonBusiness.ConverttoTitlecase(Name);
            //    objSMSDetails.SMSTemplate = "S003";
            //    objSMSDetails.ProposalNumber = objPaymentModel.ProposalNo;
            //    objSMSDetails.MobileNumber = CustomerDetails.MobileNo;
            //    objSMSDetails.SMSEnvironment = Convert.ToString(ConfigurationManager.AppSettings["SMSEnvironment"]);
            //    if (!String.IsNullOrEmpty(objSMSDetails.MobileNumber))
            //    {
            //        objSMSIntegration.SMSNotification(objSMSDetails);
            //    }
            //  //  objPaymentModel = (PaymentModel)IL.RecieptEnquiry(objPaymentModel);
            //}
            //if ((objPaymentModel.PayingAmount) >= (Convert.ToDecimal(objPaymentModel.PayableAmount) - 100) || System.Web.Configuration.WebConfigurationManager.AppSettings["PublishEnvironment"] == "SIT")
            //{
            AIA.Life.Models.Policy.Policy objPolicy = new AIA.Life.Models.Policy.Policy();
            objPolicy.ProposalFetch = true;
            objPolicy.ProposalNo    = objPaymentModel.ProposalNo;
            objPolicy.QuoteNo       = objtblpolicy.QuoteNo;
            objPolicy = objPolicyLogic.FetchProposalInfo(objPolicy);
            // //S012
            //if (objPaymentModel.SelectedPayment == "othertypes")
            //{
            //    var createdBy = Context.tblPolicies.Where(a => a.ProposalNo == objPolicy.ProposalNo).Select(a => a.Createdby).FirstOrDefault();
            //    objSMSDetails.MobileNumber = Context.tblUserDetails.Where(a => a.UserID.ToString() == createdBy).Select(a => a.ContactNo).FirstOrDefault();
            //    //objSMSDetails.MobileNumber = Context.tblMasIMOUsers.Where(a => a.UserID == objPolicy.AgentCode).Select(a => a.MobileNo).FirstOrDefault();
            //    objSMSDetails.SMSTemplate = "S012";
            //    objSMSDetails.PolicyNo= objPaymentModel.ProposalNo;
            //    objSMSDetails.Premium = String.Format(CultureInfo.GetCultureInfo(1033), "{0:n0}", objPolicy.AnnualPremium); //Convert.ToString(objPolicy.AnnualPremium);
            //    objSMSDetails.SMSEnvironment = Convert.ToString(ConfigurationManager.AppSettings["SMSEnvironment"]);
            //    objSMSIntegration.SMSNotification(objSMSDetails);
            //}
            string Message = string.Empty;
            Message = objLogic.ValidateDeviation(objPolicy);

            //tblPayment tblPayment = objtblpolicy.tblPolicyPaymentMaps.OrderByDescending(a => a.PolicyPaymentMapID).FirstOrDefault().tblPayment;
            //tblPayment.ChequeSubmission = true;
            //tblPayment.ReceiptNo = "ACK";
            //string leadNo = Context.tblLifeQQs.Where(a => a.QuoteNo == objtblpolicy.QuoteNo).Select(a => a.tblContact).FirstOrDefault().LeadNo;
            // if (dataUpdated)
            // objPaymentModel = (PaymentModel)IL.ProposalPreIssueValidation(objPaymentModel);

            if (!string.IsNullOrEmpty(Message.Trim()) || objtblpolicy.PolicyStageStatusID == 2376)// Or Counter offer Case
            {
                objPaymentModel.Message = "Success";
                if (objtblpolicy != null)
                {
                    Message = "Your proposal has been forwarded to the Underwriter for further processing.";
                    objtblpolicy.PolicyRemarks       = Message;
                    objtblpolicy.PolicyStageStatusID = 193;   // UW
                    objtblpolicy.IsAllocated         = false; // Pending for Allocation
                    objtblpolicy.ProposalSubmitDate  = DateTime.Now;
                    //if (!string.IsNullOrEmpty(leadNo))
                    //{
                    //   // SamsClient samsClient = new SamsClient();
                    //   // samsClient.UpdateLeadStatus(Context, Convert.ToInt32(leadNo), 9);
                    //}
                    //SMS S005
                    var createdBy = Context.tblPolicies.Where(a => a.ProposalNo == objPolicy.ProposalNo).Select(a => a.Createdby).FirstOrDefault();
                    objSMSDetails.MobileNumber = Context.tblUserDetails.Where(a => a.UserID.ToString() == createdBy).Select(a => a.ContactNo).FirstOrDefault();
                    //objSMSDetails.WPMobileNumber= Context.tblMasIMOUsers.Where(a => a.UserID == objPolicy.UserName).Select(a => a.MobileNo).FirstOrDefault();
                    objSMSDetails.SMSTemplate    = "S005";
                    objSMSDetails.PolicyNo       = objPaymentModel.ProposalNo;
                    objSMSDetails.SMSEnvironment = Convert.ToString(ConfigurationManager.AppSettings["SMSEnvironment"]);
                    objSMSIntegration.SMSNotification(objSMSDetails);
                }
                objPaymentModel.UWMessage = "" + Message;
                Context.SaveChanges();
            }
            else
            {
                objtblpolicy.PolicyNo            = objPaymentModel.ProposalNo = objPolicy.ProposalNo;
                objtblpolicy.PolicyStageStatusID = 192;// Issued
                DateTime today         = DateTime.Now;
                int[]    exceptionDays = new int[3] {
                    29, 30, 31
                };
                if (exceptionDays.Contains(today.Day))
                {
                    today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 28);
                }
                objtblpolicy.PolicyIssueDate = today;
                objtblpolicy.PolicyStartDate = today;
                objtblpolicy.PolicyEndDate   = today.AddYears(Convert.ToInt32(objtblpolicy.PolicyTerm));
                Context.SaveChanges();
                objPaymentModel.Message = "Success";
            }
            #endregion



            //if (!string.IsNullOrEmpty(objPaymentModel.ProposalNo) && dataUpdated)
            //{
            //    //objPaymentModel = (PaymentModel)IL.ProposalPreIssueValidation(objPaymentModel);
            //    if (string.IsNullOrEmpty(objPaymentModel.Error.ErrorMessage) && (objPaymentModel.PreIssueValidations.Count <= 1))
            //    {

            //        if (string.IsNullOrEmpty(objPaymentModel.Error.ErrorMessage))
            //        {
            //            Thread.Sleep(5000);
            //           // objPaymentModel = (PaymentModel)IL.ProposalUWApproval(objPaymentModel);
            //            if (string.IsNullOrEmpty(objPaymentModel.Error.ErrorMessage))
            //            {
            //                //objPaymentModel = (PaymentModel)IL.QualityControl(objPaymentModel);
            //                if (string.IsNullOrEmpty(objPaymentModel.Error.ErrorMessage))
            //                {
            //                    //objPaymentModel = (PaymentModel)IL.ProposalIssuance(objPaymentModel);
            //                    if (string.IsNullOrEmpty(objPaymentModel.Error.ErrorMessage))
            //                    {
            //                        objtblpolicy.PolicyNo = objPaymentModel.ProposalNo = objPolicy.ProposalNo;
            //                        objtblpolicy.PolicyStageStatusID = 192;// Issued
            //                        DateTime today = DateTime.Now;
            //                        int[] exceptionDays = new int[3] { 29, 30, 31 };
            //                        if (exceptionDays.Contains(today.Day))
            //                            today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 28);
            //                        objtblpolicy.PolicyIssueDate = today;
            //                        objtblpolicy.PolicyStartDate = today;
            //                        objtblpolicy.PolicyEndDate = today.AddYears(Convert.ToInt32(objtblpolicy.PolicyTerm));
            //                        objPaymentModel.Message = "Success";
            //                    }
            //                }
            //            }
            //        }
            //    }
            //    else
            //    {
            //        if (dataUpdated)
            //        {
            //            if (!string.IsNullOrEmpty(leadNo))
            //            {
            //               // SamsClient samsClient = new SamsClient();
            //                //samsClient.UpdateLeadStatus(Context, Convert.ToInt32(leadNo), 9);
            //            }
            //            objtblpolicy.PolicyStageStatusID = 193;// UW
            //            objtblpolicy.IsAllocated = false;
            //            objtblpolicy.ProposalSubmitDate = DateTime.Now;
            //            objPaymentModel.UWMessage = "Your proposal has been forwarded to the underwriter for further processing.";
            //        }
            //        else
            //        {
            //            objPaymentModel.UWMessage = "Payment is Successful. Your proposal is under processing, you will be notified soon.";
            //        }
            //    }
            //    Context.SaveChanges();
            //}
            //}
            //else
            //{
            //    if(objPaymentModel.PayingAmount==0)
            //        objPaymentModel.UWMessage = "Payment is Successful. Your proposal is under processing, you will be notified soon.";
            //    else
            //        objPaymentModel.UWMessage = "Your payment is successful. Payment reference number is " + objPaymentModel.TransactionNo;
            //}
            return(objPaymentModel);
        }
示例#19
0
 /// <summary>
 /// This method is called after the order is placed. This method should be used by the gateways that want to
 /// redirect customer to their site.
 /// </summary>
 /// <param name="orderForm">The order form.</param>
 /// <param name="model">The model.</param>
 /// <returns><c>true</c></returns>
 public bool PostProcess(OrderForm orderForm, PaymentModel model)
 {
     return true;
 }
        /// <summary>
        /// Gets the payments.
        /// </summary>
        /// <param name="shippingMethod">The shipping method.</param>
        /// <returns>List{PaymentModel}.</returns>
        private List<PaymentModel> GetPayments(string shippingMethod = null)
        {
            var paymentsString = _storeClient.GetCurrentStore().PaymentGateways.Select(c => c.PaymentGateway).ToArray();
            var methods = _paymentClient.GetAllPaymentsMethods(paymentsString).
                Where(x => shippingMethod == null || x.PaymentMethodShippingMethods.Any(y => y.ShippingMethodId == shippingMethod));

            var methodModels = new List<PaymentModel>();

            var cardTypes = new List<ListModel>
                {
                    new ListModel("--Please Select--".Localize(), ""),
                    new ListModel("American Express", "AE"),
                    new ListModel("Visa", "VI"),
                    new ListModel("Master Card", "MC"),
                    new ListModel("Discover", "DI")
                };

            var months = new List<ListModel>
                {
                    new ListModel("Month".Localize(), ""),
                    new ListModel("01 - January".Localize(), "1"),
                    new ListModel("02 - February".Localize(), "2"),
                    new ListModel("03 - March".Localize(), "3"),
                    new ListModel("04 - April".Localize(), "4"),
                    new ListModel("05 - May".Localize(), "5"),
                    new ListModel("06 - June".Localize(), "6"),
                    new ListModel("07 - July".Localize(), "7"),
                    new ListModel("08 - August".Localize(), "8"),
                    new ListModel("09 - September".Localize(), "9"),
                    new ListModel("10 - October".Localize(), "10"),
                    new ListModel("11 - November".Localize(), "11"),
                    new ListModel("12 - December".Localize(), "12")
                };

            var years = new List<ListModel> { new ListModel("Year".Localize(), "") };
            for (var index = DateTime.Now.Year; index <= DateTime.Now.Year + 10; index++)
            {
                years.Add(new ListModel(index.ToString(CultureInfo.InvariantCulture),
                                        index.ToString(CultureInfo.InvariantCulture)));
            }

            foreach (var method in methods.OrderBy(m => m.Priority).ThenBy(m => m.Name))
            {
                if (method.Name.Equals("Credit", StringComparison.OrdinalIgnoreCase))
                {
                    if (!UserHelper.CustomerSession.IsRegistered)
                        continue;
                }

                var paymentMethodLanguage =
                    method.PaymentMethodLanguages.FirstOrDefault(
                        pml => pml.LanguageCode == UserHelper.CustomerSession.Language);

                var model = new PaymentModel
                    {
                        Id = method.PaymentMethodId,
                        Name = method.Name,
                        DisplayName = paymentMethodLanguage != null
                                          ? paymentMethodLanguage.DisplayName
                                          : method.Description,
                        Months = months.ToArray(),
                        Years = years.ToArray(),
                        CardTypes = cardTypes.ToArray()
                    };

                if (Ch.OrderForm.Payments != null)
                {
                    var payment = Ch.OrderForm.Payments.FirstOrDefault(p => p.PaymentMethodId == method.PaymentMethodId);

                    if (payment != null)
                    {
                        model.IsCurrent = true;

                        if (payment is CreditCardPayment)
                        {
                            var crPayment = payment as CreditCardPayment;
                            model.CardNumber = crPayment.CreditCardNumber;
                            model.CardType = crPayment.CreditCardType;
                            model.CustomerName = crPayment.CreditCardCustomerName;
                            model.ExpirationMonth = crPayment.CreditCardExpirationMonth;
                            model.ExpirationYear = crPayment.CreditCardExpirationYear;
                        }
                    }

                }
                methodModels.Add(model);
            }

            return methodModels;
        }
 public abstract void PreparePaymentModel(PaymentModel model, InvoiceResponse invoiceResponse);
示例#22
0
        public async Task CreditCardPaymentTest()
        {
            var customer = new CustomerModel()
            {
                Name  = "Olavo Neto",
                Email = "*****@*****.**",
            };

            var registeredCustomer = await DbContext.Customers.FirstOrDefaultAsync();

            var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken();

            customer.Id = registeredCustomer.Id;

            var paymentModel = new PaymentModel()
            {
                Customer           = customer,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            PaymentController controller = new PaymentController(DbContext, FakeAcquirer, FakeAccount, FakeLogger);
            var cResponse = await controller.ProcessPayment(paymentModel);

            Assert.IsNotType <PaymentErrorJson>(cResponse);

            Assert.NotNull(cResponse);
            Assert.Equal(100M, cResponse.Amount);
            Assert.Equal(5, cResponse.InstalmentsCount);
            Assert.Null(cResponse.CanceledAt);
            Assert.Equal(OperatorResponse.Acepted, cResponse.OperatorResponse);
            Assert.Null(cResponse.TransferDate);

            //pelo contexto

            //Customers
            Assert.Equal(1, await DbContext.Customers.CountAsync());

            //payment
            Assert.Equal(1, await DbContext.Payments.CountAsync());
            Assert.Equal(5, (await DbContext.Payments.Include(p => p.Instalments).FirstAsync()).Instalments.Count);
            Assert.Equal(3333, (await DbContext.Payments.FirstAsync()).CardLastDigits);
            Assert.Equal(20m, (await DbContext.Payments.Include(p => p.Instalments).FirstAsync()).Instalments[0].Ammount);
            Assert.Equal("Olavo Neto", (await DbContext.Payments.Include(p => p.Customer).FirstAsync()).Customer.Name);

            //instalments
            Assert.Equal(5, await DbContext.Instalments.CountAsync());
            Assert.Equal(20m, (await DbContext.Instalments.FirstAsync()).Ammount);
            Assert.Equal(0.9m, (await DbContext.Instalments.FirstAsync()).FixedTax);
            Assert.Equal(0.0m, (await DbContext.Instalments.FirstAsync()).AdvanceTax);
            Assert.Equal(DateTime.Today.AddDays(30), (await DbContext.Instalments.FirstAsync()).TargetDate);
            Assert.Equal(DateTime.Today.AddDays(90), (await DbContext.Instalments.ToListAsync())[2].TargetDate);
            Assert.Equal(DateTime.Today.AddDays(120), (await DbContext.Instalments.ToListAsync())[3].TargetDate);
            Assert.Equal(DateTime.Today.AddDays(150), (await DbContext.Instalments.LastAsync()).TargetDate);

            Assert.Equal(0.0m, (await DbContext.Instalments.LastAsync()).FixedTax);
            Assert.Equal(0.0m, (await DbContext.Instalments.LastAsync()).AdvanceTax);
            Assert.Equal(19.1m, (await DbContext.Instalments.FirstAsync()).NetAmmount);
            Assert.Equal(customer.Id, (await DbContext.Instalments.Include(p => p.Customer).ToListAsync())[2].CustomerId);
            Assert.Equal(100m, (await DbContext.Instalments.Include(p => p.Customer).ToListAsync())[2].AllInstalments);
            Assert.Equal(4, (await DbContext.Instalments.Include(p => p.Customer).ToListAsync())[3].Number);
            Assert.NotNull((await DbContext.Instalments.LastAsync()).CreatedAt);
            Assert.Equal(100, (await DbContext.Instalments.LastAsync()).AllInstalments);
            Assert.Equal(5, (await DbContext.Instalments.LastAsync()).TotalOf);
        }
示例#23
0
        public String GenerateHeader()
        {
            PaymentModel payment  = new PaymentModel();
            dynamic      payments = payment.where (payment, "invoice_id='" + this.invoice.id + "'");

            var sb = new StringBuilder();

            sb.AppendLine("Tangail Enterprise");
            sb.AppendLine(DepartmentSettings.branchName.PadLeft(0));
            sb.AppendLine(DepartmentSettings.address.PadLeft(20));
            sb.AppendLine("-----------------------------------------------------------------");
            sb.AppendLine("VAT CHALAN (" + DepartmentSettings.vatChalan + ")");
            sb.AppendLine("VAT Reg: " + DepartmentSettings.vatRegstration);
            CustomerModel customer = new CustomerModel();

            if (this.invoice.customer_id != null)
            {
                dynamic customers = customer.find(customer, this.invoice.customer_id);
                sb.AppendLine(customers.name);
            }
            else
            {
                sb.AppendLine(" ");
            }

            sb.AppendLine("------------------------------------------------------------------");
            sb.Append("Item/Decription".PadRight(FIRST_COL_PAD));
            sb.Append("|".PadLeft(21));
            sb.AppendLine("Amount".PadLeft(15));
            sb.AppendLine("------------------------------------------------------------------");
            InvoiceItemModel invoice_item_obj = new InvoiceItemModel();
            dynamic          items            = invoice_item_obj.where (invoice_item_obj, "invoice_id = '" + this.invoice.id + "'");
            int    i     = 0;
            float  total = 0;
            double vat   = 0;

            foreach (dynamic item in items)
            {
                Console.WriteLine("jhfv");
                sb.Append("" + (i++) + ") PCODE1   [" + item.quantity + " @ " + Math.Round(item.price, 2) + "]".PadRight(FIRST_COL_PAD));
                sb.Append("|".PadRight(SECOND_COL_PAD));
                sb.AppendLine(string.Format("{0:0.00}", item.total).PadLeft(THIRD_COL_PAD));
                sb.AppendLine(item.name.PadRight(FIRST_COL_PAD));
                sb.AppendLine("------------------------------------------------------------------");
                total += item.total;
                double invoiceVat = item.vat;
                vat += invoiceVat;
            }
            sb.AppendLine("Subtotal Without VAT:                         " + Math.Round(total, 2));
            sb.AppendLine("VAT(Applicable Item Only):                    " + Math.Round(vat, 2));
            sb.AppendLine("                                           -----------------------");

            double paid   = 0.0;
            double change = 0.0;

            if (this.received == 0.0)
            {
                paid   = invoice.net_total;
                change = 0.0;
            }
            else
            {
                paid   = this.received;
                change = this.received - invoice.net_total;
            }


            sb.AppendLine("                                                Net total:" + invoice.net_total);
            sb.AppendLine("                                                 Discount:" + invoice.discount);
            sb.AppendLine("                                                   Paid  :" + paid);
            sb.AppendLine("                                                 Change  :" + change);

            String paymentType = "";

            if (payments.Count > 0)
            {
                paymentType = payments[0].payment_method;
            }
            sb.AppendLine("Payment Mode:" + paymentType);
            sb.AppendLine("--------------------------------------------------------------");
            sb.AppendLine("CASH                                                    " + Math.Round((total + vat), 2));
            sb.AppendLine("--------------------------------------------------------------");
            sb.AppendLine("Current Bonus Point :" + this.invoice.point);
            sb.AppendLine("Last Bonus Point :" + this.invoice.lastPoint);
            sb.AppendLine("---------------------------------------------------------------");
            sb.AppendLine("Sold item cannot be refunded but be exchanged");
            sb.AppendLine("within 72 hours with revevant recepit.");
            sb.AppendLine("COS&ORN is not exchangable. Inquery:01722647240");
            sb.AppendLine("Your right choice for shopping");
            sb.AppendLine("**System by Syftet Limited, Dhaka**");
            Console.WriteLine(sb.ToString());
            return(sb.ToString());
        }
示例#24
0
        public async Task GetAdvancePaymentRequestDetailsTest()
        {
            #region ContextSetup

            var dbContext = DbContext;

            var registeredCustomer = await dbContext.Customers.FirstOrDefaultAsync();

            var waiToken      = registeredCustomer.MapToWhoAmI().EncryptToken();
            var customerModel = new CustomerModel()
            {
                Id = registeredCustomer.Id, Name = registeredCustomer.Name, Email = registeredCustomer.Email
            };
            var paymentModel = new PaymentModel()
            {
                Customer           = customerModel,
                Amount             = 100,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };
            var before = DateTime.Now;

            var paymentModel2 = new PaymentModel()
            {
                Customer           = customerModel,
                Amount             = 150,
                InstalmentsCount   = 5,
                CardNumber         = "5555111122223333",
                CardExpirationDate = "08/2021",
                CardName           = "OLAVO DE SOUZA ROCHA NETO",
                CardSecurityNumber = "558",
                AuthToken          = waiToken
            };

            PaymentController controller = new PaymentController(dbContext, FakeAcquirer, FakeAccount, FakeLogger);
            await controller.ProcessPayment(paymentModel);

            await controller.ProcessPayment(paymentModel2);

            var paymentListModel = new PaymentListModel()
            {
                AuthToken = waiToken
            };
            var firstPaymentForAdvance =
                new AdvanceListModel()
            {
                AuthToken = waiToken,
                Payments  = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.First() }.Select(q => q.Id)
            };

            var adv = await controller.RequestForAdvance(firstPaymentForAdvance);

            #endregion

            var adModel = new AdvanceDetailsModel()
            {
                AuthToken = waiToken,
                Id        = adv.Id
            };
            var radv = await controller.GetAdvanceDetails(adModel);

            Assert.Equal(radv.Id, adModel.Id);
            Assert.Single(radv.Payments);

            var percentTax = 0.038m;
            var instalment = decimal.Divide(150, 5);
            Assert.Equal(150m - 0.9m - (1m * percentTax) * instalment - (2m * percentTax) * instalment - (3m * percentTax) * instalment - (4m * percentTax) * instalment - (5m * percentTax) * instalment, adv.NetAmount);
        }
        /// <summary>
        /// Page that shows confirmation of payment and sends payment Id for payment to be made
        /// </summary>
        /// <param name="id">Id of payment</param>
        /// <returns>View of page</returns>
        public IActionResult CompletePayment(int id)
        {
            PaymentModel payment = _dataAccessor.GetPayments().Where(x => x.Id == id).First();

            return(View(payment));
        }
示例#26
0
        private PaymentModel MakeElements(Payment payment, string method, ICollection <Status> statuses, ICollection <Category> categories)
        {
            var result = new PaymentModel();

            result.Date = "<div class='form-group form-floating  created'>" +
                          "<input name='Date' placeholder='Date' class='form-control' type='date'  id='datepickerDate" + method + "PaymentFinance' value='" + payment.Date.ToString("dd.MM.yyyy") + "' />" +
                          "<label for='Date' class='control-label'>Date</label>" +
                          "</div>";
            result.Description = "<div class='form-group form-floating created'>" +
                                 "<input name='Description' placeholder='Description' class='form-control' id='inputDescription" + method + "PaymentFinance' value='" + payment.Description + "' />" +
                                 "<label for='Description'>Description</label>" +
                                 "</div>";
            result.Amount = "<div class='form-group form-floating created'>" +
                            "<input name='Amount' placeholder='Amount' class='form-control' id='inputAmount" + method + "PaymentFinance' value='" + payment.Amount + "' />" +
                            "<label for='Amount' class='control-label'>Total Amount</label>" +
                            "</div>";
            result.Amount_Gross = "<div class='form-group form-floating created'>" +
                                  "<input name='Amount_Gross' placeholder='Amount_Gross' class='form-control' id='inputAmountGross" + method + "PaymentFinance' value='" + payment.GrossAmount + "' />" +
                                  "<label for='Amount_Gross' class='control-label'>Amount Gross</label>" +
                                  "</div>";
            result.Amount_Net = "<div class='form-group form-floating created'>" +
                                "<input name='Amount_Net' placeholder='Amount_Net' class='form-control' id='inputAmountNet" + method + "PaymentFinance' value='" + payment.NetAmount + "' />" +
                                "<label for='Amount_Net' class='control-label'>Amount Net</label>" +
                                "</div>";
            result.Tax = "<div class='row g-3 form-group created'>" +
                         "<div class='col form-floating created'>" +
                         "<input name='Tax' placeholder='Tax' class='form-control' id='inputTax" + method + "PaymentFinance' value='" + payment.TaxRate + "' />" +
                         "<label for='Tax' class='control-label'>Tax</label>" +
                         "</div>" +
                         "<div class='col form-floating created'>" +
                         "<input name='Amount_Tax' placeholder='Amount_Tax' class='form-control' id='inputAmountTax" + method + "PaymentFinance' value='" + payment.TaxAmount + "' />" +
                         "<label for='Amount_Tax' class='control-label'>Amount Tax</label>" +
                         "</div>" +
                         "</div>";
            if (payment.ExtraCostAmount != null)
            {
                var countExtraCosts = payment.ExtraCostAmount.Count();

                for (int i = 0; i < countExtraCosts; i++)
                {
                    result.ExtraCosts += "<br class='created' />";
                    result.ExtraCosts += "<div class='row g-3 form-group created'>" +
                                         "<div class='col form-floating'>" +
                                         "<input name='Description_ExtraCosts' placeholder='Description_ExtraCosts' class='form-control' id='inputDescriptionExtraCosts" + method + "PaymentFinance' value='" + payment.ExtraCostDescription[i] + "' />" +
                                         "<label for='Description_ExtraCosts' class='control-label'>Description</label>" +
                                         "</div>" +
                                         "<div class='col form-floating'>" +
                                         "<input name='Amount_ExtraCosts' placeholder='Amount_ExtraCosts' class='form-control' id='inputAmountExtraCosts" + method + "PaymentFinance' value='" + payment.ExtraCostAmount[i] + "' />" +
                                         "<label for='Amount_ExtraCosts' class='control-label'>Amount</label>" +
                                         "</div>" +
                                         "</div>";
                }
            }
            result.AddExtraCost = "<a href='#' class='link-dark created' id='linkAddExtraCost" + method + "PaymentFinance'>Add Extra Cost</a>";

            if (payment.DetailedTaxAmount != null)
            {
                var countTaxList = payment.DetailedTaxAmount.Count();

                for (int i = 0; i < countTaxList; i++)
                {
                    if (i > 0)
                    {
                        result.TaxList += "<br class='created' />";
                    }
                    result.TaxList += "<div class='row g-3 form-group created advancedTax'>" +
                                      "<div class='col-6 form-floating'>" +
                                      "<input name='Description_TaxList' placeholder='Description_TaxList' class='form-control' id='inputDescriptionTaxList" + method + "PaymentFinance' value='" + payment.DetailedTaxDescription[i] + "' />" +
                                      "<label for='Description_TaxList' class='control-label'>Description</label>" +
                                      "</div>" +
                                      "<div class='col form-floating'>" +
                                      "<input name='TaxList' placeholder='TaxList' class='form-control' id='inputTaxList" + method + "PaymentFinance' value='" + payment.DetailedTaxRate[i] + "' />" +
                                      "<label for='TaxList' class='control-label'>Tax %</label>" +
                                      "</div>" +
                                      "<div class='col form-floating'>" +
                                      "<input name='Amount_TaxList' placeholder='Amount_TaxList' class='form-control' id='inputAmountTaxList" + method + "PaymentFinance' value='" + payment.DetailedTaxAmount[i] + "' />" +
                                      "<label for='Amount_TaxList' class='control-label'>Amount</label>" +
                                      "</div>" +
                                      "</div>";
                }
                result.AdvancedTaxList = "<a href='#' class='link-dark created' id='linkAdvancedTaxList" + method + "PaymentFinance' value='1'>Advanced</a>";
                result.AddTax          = "<a href='#' class='link-dark created' id='linkAddTax" + method + "PaymentFinance'>Add Tax</a>";
            }
            else
            {
                result.TaxList += "<div class='row g-3 form-group created advancedTax'>" +
                                  "<div class='col-6 form-floating'>" +
                                  "<input name='Description_TaxList' placeholder='Description_TaxList' class='form-control' id='inputDescriptionTaxList" + method + "PaymentFinance' />" +
                                  "<label for='Description_TaxList' class='control-label'>Description</label>" +
                                  "</div>" +
                                  "<div class='col form-floating'>" +
                                  "<input name='TaxList' placeholder='TaxList' class='form-control' id='inputTaxList" + method + "PaymentFinance' />" +
                                  "<label for='TaxList' class='control-label'>Tax %</label>" +
                                  "</div>" +
                                  "<div class='col form-floating'>" +
                                  "<input name='Amount_TaxList' placeholder='Amount_TaxList' class='form-control' id='inputAmountTaxList" + method + "PaymentFinance' />" +
                                  "<label for='Amount_TaxList' class='control-label'>Amount</label>" +
                                  "</div>" +
                                  "</div>";
                result.AdvancedTaxList = "<a href='#' class='link-dark created' id='linkAdvancedTaxList" + method + "PaymentFinance' value='1'>Advanced</a>";
                result.AddTax          = "<a href='#' class='link-dark created' id='linkAddTax" + method + "PaymentFinance'>Add Tax</a>";
            }

            result.Invoice = "<div class='form-group created'>" +
                             "<label class='control-label' for='files'>Upload Invoice</label>" +
                             "<input class='form-control' name='files' type='file' id='uploadFiles" + method + "PaymentFinance' />" +
                             "</div>";

            if (categories != null)
            {
                var categoryElement = "<div class='form-group form-floating created'>" +
                                      "<select name='fk_CategoryId' class ='form-control' id='dropdownCategory" + method + "PaymentFinance'>";
                if (payment.fk_CategoryId == null)
                {
                    categoryElement += "<option value='- 1' disabled selected>Select a Category</option>'";
                }

                foreach (var category in categories)
                {
                    categoryElement += "<option value='" + category.Id + "'";
                    if (payment.fk_CategoryId == category.Id)
                    {
                        categoryElement += "selected";
                    }
                    categoryElement += ">" + category.Name + "</option>";
                }

                categoryElement += "</select>" +
                                   "<label for='fk_CategoryId' class='control-label'>Category</label>" +
                                   "</div>";
                result.Category = categoryElement;
            }


            var statusElement = "<div class='form-group form-floating created'>" +
                                "<select name='fk_StatusId' class ='form-control' id='dropdownStatus" + method + "PaymentFinance'>";

            if (payment.fk_StatusId == null)
            {
                statusElement += "<option value='-1' disabled selected>Select a Status</option>";
            }

            foreach (var status in statuses)
            {
                statusElement += "<option value='" + status.Id + "'";
                if (payment.fk_StatusId == status.Id)
                {
                    statusElement += "selected";
                }
                statusElement += ">" + status.Name + "</option>";
            }

            statusElement += "</select>" +
                             "<label for='fk_StatusId' class='control-label'>Status</label>" +
                             "</div>";


            result.Status = statusElement;

            result.AdvancedAmount = "<a href='#' class='link-dark created' id='linkAdvancedAmount" + method + "PaymentFinance' value='1' >Advanced</a>";

            return(result);
        }
示例#27
0
 public IRestCallbackClient PostVerifyPayment(PaymentModel model)
 {
     return(Request(RestConstants.PostPaymentVerify, Method.POST,
                    JsonConvert.SerializeObject(model),
                    RestConstants.MediaTypeJson));
 }
示例#28
0
 public Order Submit(string orderType, PaymentModel model, decimal tax, bool isProduction, string address = "", bool deferSave = false)
 {
     return(new Submit(_context, orderType, model, tax, isProduction, address, deferSave).ExecuteAndReturnResults());
 }
示例#29
0
 public void SavePayment(PaymentModel payment)
 {
     _xmlManager.AddObject <PaymentModel>(payment, _applicationSettings.Value.XMLUrl, ROOTNAME, ELEMENTNAME);
 }
示例#30
0
        public async Task <IActionResult> ProcessPayment([FromBody] PaymentModel paymentModel)
        {
            var paymentResponse = await _paymentService.ProcessPaymentAsync(paymentModel);

            return(StatusCode(paymentResponse.StatusCode, paymentResponse));
        }
示例#31
0
        public ActionResult CreateTDC(PaymentViewModel model)
        {
            //Setear variables del conector
            PaymentApplication paymentApp = _paymentService.GetPaymentApplicationByKey(AppKey);

            paymentProviderService.MerchantId   = paymentApp.MerchantId;
            paymentProviderService.PublicKey    = paymentApp.PublicKey;
            paymentProviderService.PrivateKey   = paymentApp.PrivateKey;
            paymentProviderService.DashboardURL = paymentApp.DashboardURL;

            PaymentModel payment = new PaymentModel()
            {
                ClientId        = paymentApp.ClientId,
                OrderId         = model.OrderId,
                Amount          = model.Amount,
                TokenId         = model.TokenId,
                DeviceSessionId = model.DeviceSessionId,
                Description     = String.Format("Pago de orden {0}", model.OrderId),
                RedirectUrl     = SecureVerificationURL,
                //Use3DSecure = true
            };

            //Primero en BD
            Payment paymentBO = new Payment();

            paymentBO.CreationDate = DateUtil.GetDateTimeNow();
            paymentBO.User         = new User()
            {
                Id = Authenticator.AuthenticatedUser.Id
            };
            paymentBO.Amount            = model.Amount;
            paymentBO.OrderId           = model.OrderId;
            paymentBO.ConfirmationEmail = model.ConfirmationEmail;
            paymentBO.Status            = PaymentStatus.IN_PROGRESS;
            paymentBO.Method            = PaymentMethod.CARD;
            paymentBO.TransactionType   = PaymentType.CHARGE;

            paymentBO.ConfirmationDate = null;
            _paymentService.Create(paymentBO);

            //Luego cobrar
            model.PaymentMethod = PaymentMethod.CARD;
            payment             = paymentProviderService.CreateTDCPayment(payment);

            //Si hubiera reintento, probar Antifraude
            if (UseSelective3DSecure && !payment.ChargeSuccess & payment.ResultCode == PaymentError.ANTI_FRAUD)
            {
                payment.Use3DSecure = true;
                payment             = paymentProviderService.CreateTDCPayment(payment);
            }

            model.ChargeSuccess = payment.ChargeSuccess;

            if (payment.ChargeSuccess)
            {
                //Luego actualizar
                paymentBO.ProviderId = payment.Id;
                paymentBO.Status     = payment.Status;
                paymentBO.DueDate    = payment.DueDate;
                paymentBO.LogData    = payment.ResultData;
                _paymentService.Update(paymentBO);

                model.Id             = payment.Id;
                model.Description    = payment.Description;
                model.JsonData       = payment.ResultData;
                model.DueDate        = payment.DueDate;
                model.PaymentCardURL = payment.PaymentCardURL;
            }
            else
            {
                paymentBO.Status  = PaymentStatus.ERROR;
                paymentBO.LogData = payment.ResultData;
                _paymentService.Update(paymentBO);
                model.Description = payment.ResultData;
            }

            //
            Session.Add("Payments.PaymentModel", model);

            if (payment.PaymentMethod != null && !string.IsNullOrEmpty(payment.PaymentMethod.RedirectUrl))
            {
                return(Redirect(payment.PaymentMethod.RedirectUrl));
            }

            //return View("CreateTDC", model);
            return(View("CheckoutSuccess", model));
        }
 public Response<string> SetPaymentType(PaymentModel objReq)
 {
     Response<string> response = new Response<string>();
     List<string> objResp = new List<string>();
     try
     {
         objDbMethodV2 = new wizz.Dal.DbMethodsV2();
         if (objDbMethodV2.SetPaymentType(objReq))
             response.Create(true, "done", Messages.AppVersion, objResp);
         else
         {
             response.Create(false, "you are not allowed", Messages.AppVersion, objResp);
         }
     }
     catch (Exception ex)
     {
         object session = new JavaScriptSerializer().Serialize(objReq);
         LogManager.Error("Error occured while Processing Webservice request :{0}", ex, session, ex.Message);
         response.Create(false, Messages.FormatMessage(Messages.ErrorOccure), Messages.AppVersion, objResp);
     }
     finally
     {
     }
     return response;
 }
示例#33
0
        public ActionResult CreateSPEI(PaymentViewModel model)
        {
            //Setear variables del conector
            PaymentApplication paymentApp = _paymentService.GetPaymentApplicationByKey(AppKey);

            paymentProviderService.MerchantId   = paymentApp.MerchantId;
            paymentProviderService.PublicKey    = paymentApp.PublicKey;
            paymentProviderService.PrivateKey   = paymentApp.PrivateKey;
            paymentProviderService.DashboardURL = paymentApp.DashboardURL;

            PaymentModel payment = new PaymentModel()
            {
                ClientId    = paymentApp.ClientId,
                OrderId     = model.OrderId,
                Amount      = model.Amount,
                DueDate     = DateUtil.GetDateTimeNow().AddDays(TransferExpirationDays),
                Description = String.Format("Pago de orden {0}", model.OrderId),
            };

            model.PaymentMethod = PaymentMethod.BANK_ACCOUNT;
            payment             = paymentProviderService.CreateBankTransferPayment(payment);
            model.ChargeSuccess = payment.ChargeSuccess;

            if (payment.ChargeSuccess)
            {
                //Primero guardar en BD
                Payment paymentBO = new Payment();
                paymentBO.CreationDate = DateUtil.GetDateTimeNow();
                paymentBO.User         = new User()
                {
                    Id = Authenticator.AuthenticatedUser.Id
                };
                paymentBO.Amount            = model.Amount;
                paymentBO.OrderId           = model.OrderId;
                paymentBO.ConfirmationEmail = model.ConfirmationEmail;
                paymentBO.ProviderId        = payment.Id;
                paymentBO.Status            = payment.Status;
                paymentBO.DueDate           = payment.DueDate;
                paymentBO.Method            = PaymentMethod.BANK_ACCOUNT;
                paymentBO.TransactionType   = PaymentType.CHARGE;

                paymentBO.ConfirmationDate = null;

                _paymentService.Create(paymentBO);

                model.Id             = payment.Id;
                model.Description    = payment.Description;
                model.JsonData       = payment.ResultData;
                model.DueDate        = payment.DueDate;
                model.PaymentCardURL = payment.PaymentCardURL;
                model.BankName       = payment.PaymentMethod.BankName;
                model.Clabe          = payment.PaymentMethod.Clabe;
                model.Reference      = payment.PaymentMethod.Reference;
                model.Name           = payment.PaymentMethod.Name;
                model.Agreement      = payment.PaymentMethod.Agreement;
            }
            else
            {
                model.Description = payment.ResultData;
            }

            //return View("CreateSPEI", model);
            return(View("CheckoutSuccess", model));
        }
        static void SimulatePayment(PaymentModel paymentModel, int hours)
        {
            decimal amountToPay = PaymentProcessor.CalculatePayment(paymentModel, hours);

            Console.WriteLine($"You will get paid ${amountToPay} for your {paymentModel.Label}.");
        }
示例#35
0
 public int?MakePayment(PaymentModel paymentModel)
 {
     return(PaymentMethod[paymentModel.PaymentMethod](paymentModel));
 }
示例#36
0
        public virtual ActionResult PaymentInfo(FormCollection collection)
        {
            var payment = new PaymentModel
            {
                Number = collection["Card Number"],
                ExpirationDate = collection["Exp Date"]
            };
            return View(payment);

            var gateway = new BraintreeGateway
            {
                Environment = Braintree.Environment.SANDBOX,
                MerchantId = ConfigurationManager.AppSettings["BrainTree-MerchantId"],
                PublicKey = ConfigurationManager.AppSettings["BrainTree-PublicKey"],
                PrivateKey = ConfigurationManager.AppSettings["BrainTree-PrivateKey"]
            };

            var request = new TransactionRequest
            {
                Amount = 0.10M,
                CreditCard = new TransactionCreditCardRequest
                {
                    Number = payment.Number,
                    ExpirationDate = payment.ExpirationDate
                }
            };
            Result<Transaction> result = gateway.Transaction.Sale(request);

            if (result.IsSuccess())
            {
                Transaction transaction = result.Target;
                this.FlashInfo("Success!: " + transaction.Id);
                return RedirectToAction("ThankYou");
            }
            else if (result.Transaction != null)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("Message:  {0}", result.Message);
                Transaction transaction = result.Transaction;
                sb.AppendFormat("Error processing transaction:");
                sb.AppendFormat("  Status:  {0}", transaction.Status);
                sb.AppendFormat("  Code:  {0}", transaction.ProcessorResponseCode);
                sb.AppendFormat("  Text:  {0}", transaction.ProcessorResponseText);
                this.FlashError(sb.ToString());
            }
            else
            {
                var sb = new StringBuilder();
                sb.AppendFormat("Message: {0}", result.Message);
                foreach (ValidationError error in result.Errors.DeepAll())
                {
                    sb.AppendFormat("Attribute: {0}", error.Attribute);
                    sb.AppendFormat("  Code: {0}", error.Code);
                    sb.AppendFormat("  Message: {0}", error.Message);
                }
                var errorMessage = sb.ToString();
                this.FlashError("Error");
            }
            return View(payment);
        }
示例#37
0
        public ActionResult Pay(PaymentModel model, FormCollection form)
        {
            MakePaymentResult         makePaymentResult         = null;
            PostProcessPaymentRequest postProcessPaymentRequest = null;
            var confirm = new ConfirmModel();

            try
            {
                var warnings = ValidatePaymentForm(form);
                foreach (var warning in warnings)
                {
                    ModelState.AddModelError("", warning);
                }
                if (!ModelState.IsValid)
                {
                    return(View(confirm));
                }
                var processPaymentRequest = new ProcessPaymentRequest()
                {
                    AmountTotal             = model.Amount,
                    PaymentMethodSystemName = model.SelectedPaymentMethod,
                    Beneficiary             = model.Email,
                    CreditCardType          = form["CreditCardType"],
                    CreditCardName          = form["CardholderName"],
                    CreditCardNumber        = form["CardNumber"],
                    CreditCardExpireMonth   = int.Parse(form["ExpireMonth"]),
                    CreditCardExpireYear    = int.Parse(form["ExpireYear"]),
                    CreditCardCvv2          = form["CardCode"],
                    ClientToken             = form["PinCode"],
                    Narration = "Demo Payment"
                };
                var extraData = new Dictionary <string, string>();
                makePaymentResult = _orderProcessingService.MakePayment(processPaymentRequest, extraData);
                if (!makePaymentResult.Success)
                {
                    confirm.Warnings.AddRange(makePaymentResult.Errors.Select(x => (x)));
                }
            }
            catch (Exception exception)
            {
                _logger.Warning(exception.Message, exception);
            }

            if (makePaymentResult == null || !makePaymentResult.Success || confirm.Warnings.Any())
            {
                return(View(confirm));
            }

            try
            {
                postProcessPaymentRequest = new PostProcessPaymentRequest
                {
                    Settlement = new Settlement()
                    {
                        PaymentMethodSystemName = model.SelectedPaymentMethod
                    }
                };

                _paymentService.PostProcessPayment(postProcessPaymentRequest);
            }
            catch (Exception exception)
            {
                _logger.Error(exception.Message, exception);
            }
            if (postProcessPaymentRequest != null && !string.IsNullOrEmpty(postProcessPaymentRequest.RedirectUrl))
            {
                return(Redirect(postProcessPaymentRequest.RedirectUrl));
            }
            return(RedirectToAction("Completed"));
        }
        public JsonResult <JsonResponse> Process([FromBody] PaymentModel model)
        {
            try
            {
                IsTokenValid(RequestTypeEnum.PaymentProcess);

                var assignment = db.Assignments
                                 .Include(x => x.Order)
                                 .FirstOrDefault(x => x.Id.ToString() == model.assignmentId);

                if (assignment == null)
                {
                    throw new Exception("Assignment Not Found");
                }

                if (assignment.Order == null)
                {
                    throw new Exception("Assignment Order Not Found");
                }

                var    order = assignment.Order;
                string PaymentAmountString = order.PaymentOption == 0 ? order.CodAmount.ToString() : (order.PaymentOption == 1 ? order.OfficeStaff : order.OnlinePayment);
                int    PaymentAmount       = 0;
                Int32.TryParse(PaymentAmountString, out PaymentAmount);
                PaymentAmount = PaymentAmount * 100;

                StripeConfiguration.SetApiKey("sk_test_b9puC5Zu17mi3iFgdhfJnsou");

                // Token is created using Checkout or Elements!
                // Get the payment token submitted by the form:
                var token = model.token; // Using ASP.NET MVC

                // Charge the user's card:
                var charges = new StripeChargeService();
                var charge  = charges.Create(new StripeChargeCreateOptions
                {
                    Amount   = PaymentAmount,
                    Currency = "usd",
                    SourceTokenOrExistingSourceId = token,
                    Description         = assignment.AssignmentNumber,
                    StatementDescriptor = "Encore Piano Moving"
                });

                if (!"succeeded".Equals(charge.Status))
                {
                    throw new Exception("There is error while processing payment at Stripe.");
                }

                var ifAlreadyPaid = db.Payments.Any(x => x.OrderId == assignment.OrderId);
                if (!ifAlreadyPaid)
                {
                    db.Payments.Add(new ClientPayment()
                    {
                        Id        = Guid.NewGuid(),
                        CreatedAt = DateTime.Now,

                        OrderId  = assignment.OrderId,
                        ClientId = order.ClientId,

                        PaymentType       = (int)PaymentTypeEnum.CreditCard,
                        Amount            = PaymentAmount,
                        TransactionNumber = charge.Id,
                        PaymentDate       = charge.Created,
                    });
                    db.SaveChanges();
                }

                return(Json(new JsonResponse()
                {
                    IsSucess = true, IsTokenValid = true
                }));
            }
            catch (Exception ex)
            {
                return(Json(new JsonResponse()
                {
                    IsSucess = false, ErrorMessage = ex.Message
                }));
            }
        }
 public ResponseModel <OrderModel> UpdatePayment(string orderId, PaymentModel payment)
 {
     return(CallApi <OrderModel>(string.Format(ApiUrls.UpdatePayment, orderId), JsonConvert.SerializeObject(payment), Method.POST));
 }
        /// <summary>
        /// Creates the payment.
        /// </summary>
        /// <param name="form">The order form.</param>
        /// <param name="methodName">Name of the method.</param>
        /// <param name="model">The payment  model.</param>
        /// <returns>Payment.</returns>
        private Payment CreatePayment(OrderForm form, string methodName, PaymentModel model)
        {
            var paymentOption =
                (from o in _paymentOptions where o.Key.Equals(methodName, StringComparison.OrdinalIgnoreCase) select o)
                    .SingleOrDefault();

            Payment payment;

            if (paymentOption != null)
            {
                payment = paymentOption.PreProcess(form, model);
            }
            else
            {
                payment = new OtherPayment
                    {
                        PaymentType = PaymentType.Other.GetHashCode(),
                        BillingAddressId = form.BillingAddressId,
                        PaymentMethodName = model.DisplayName,
                        PaymentMethodId = model.Id,
                    };
            }
            //Common Properties
            payment.Status = PaymentStatus.Pending.ToString();
            payment.OrderForm = form;
            payment.TransactionType = TransactionType.Sale.ToString();
            payment.Amount = form.OrderGroup.Total;

            return payment;
        }
示例#41
0
        public IHttpActionResult AddPayment(PaymentModel paymentModel)
        {
            var paymentResult = _paymentService.AddPayment(PaymentModelToPaymentMapper.Map(paymentModel));

            return(Json(paymentResult));
        }
        internal static PaymentModel MakePayment(List<string> LstCodeNumber, int Amount)
        {
            // TODO: 
            /* Lst CodeNumber phải đúng hết mới cho phép thanh toán
             * 
             * */

            // Kiểm tra

            bool isPossible = (LstCodeNumber.Count() > 0); // Bắt buộc phải có CodeNumber
            bool isExist = (LstCodeNumber.Count() > 0);
            int iTotalAmount = 0;

            foreach (string sCodeNumber in LstCodeNumber)
            {
                isPossible = isPossible && Generator.isPossibleCode(sCodeNumber);
                isExist = isExist && PacificCodeBUS.isExist(sCodeNumber);

                if (isPossible && isExist)
                {
                    iTotalAmount += PacificCodeBUS.getActualAmount(sCodeNumber);
                }
                else
                {
                    break;
                }
            }

            PaymentModel paymentModel = new PaymentModel();
            
            // Thanh Toán & Trả ra kết quả
            // *** Giả sử đã thanh toán hết (qua web), đã lưu xuống sau đó gửi lại 
            // thông báo cho admin của trang web nhưng admin không nhận được
            // => khách hàng bị mất tiền nhưng không nhận được hàng.. SAU NÀY SỬA
            // getMoneyForPayment => trả ra giá trị đã lấy để thanh toán

            if (isExist && isPossible && (iTotalAmount >= Amount))
            {
                for(int i = 0; i < LstCodeNumber.Count() && Amount > 0; i++)
                {                       
                    Amount = Amount - PacificCodeBUS.getMoneyForPayMent(LstCodeNumber[i], Amount);
                }
                
                paymentModel.Success = true;
                paymentModel.Message = MessageManager.GetValue("MAKE_PAYMENT_SUCCESS");
            }
            else
            {
                paymentModel.Success = false;
                paymentModel.Message = MessageManager.GetValue("MAKE_PAYMENT_UNSUCCESS");
            }

            return paymentModel;
        }
 public abstract int InsertPayMent(PaymentModel model);