Ejemplo n.º 1
0
        public void UpdateByPaymentAction(PaymentActionModel paymentActionModel)
        {
            UpdateExpenseStatus(paymentActionModel.PaymentValue == TotalValue
                ? ExpenseStatus.Paid
                : ExpenseStatus.Partial);

            TotalPaid = paymentActionModel.PaymentValue;
        }
Ejemplo n.º 2
0
        public async Task SavePaymentAction(PaymentActionModel paymentActionModel)
        {
            var expense = await _repository.SelectById(paymentActionModel.ExpenseId);

            expense.UpdateByPaymentAction(paymentActionModel);

            await _repository.UpdateAsync(expense);
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> PostPaymentAction([FromBody] PaymentActionModel paymentActionModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                await _service.SavePaymentAction(paymentActionModel);

                return(Ok());
            }
            catch (ArgumentException ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex));
            }
        }
Ejemplo n.º 4
0
        public async Task <object> Pay([FromBody] PaymentActionModel paymentModel)
        {
            using (_logger.BeginScope("Pay"))
            {
                var bankProvider     = _paymentServices(paymentModel.SelectedBank);
                var posConfiguration = Program.PosConfiguration[paymentModel.SelectedBank];

                if (posConfiguration.ForcePayRequest3D)
                {
                    paymentModel.Use3DSecure = posConfiguration.ForcePayRequest3D;
                }

                paymentModel.PosConfigurationId = posConfiguration.Id;

                var bankResponse = await bankProvider.ProcessPayment(paymentModel);

                var paySession = bankResponse.ToPaySessionSuccess(paymentModel);
                await _dataServices.InsertPaySessionAsync(paySession);

                if (bankResponse.Status)
                {
                    if (bankResponse.IsRedirectContent)
                    {
                        _cache.Set($"VerifyModel:{paymentModel.SessionId}", new VerifyPaymentModel()
                        {
                            Order        = paymentModel.Order,
                            SelectedBank = paymentModel.SelectedBank
                        });
                        _cache.Set($"PaySession:{paymentModel.SessionId}", paySession);
                    }

                    return(new PaymentActionResult {
                        Status = true, Data = bankResponse.ToDataModel()
                    });
                }
                else
                {
                    return(new PaymentActionResult {
                        Status = false, Error = bankResponse.ErrorCode, ErrorMessage = bankResponse.Error
                    });
                }
            }
        }
Ejemplo n.º 5
0
 public static PaySession ToPaySessionSuccess(this PaymentResult paymentResult, PaymentActionModel paymentModel)
 {
     return(new PaySession
     {
         CardHolderName = paymentModel.CreditCard.CardHolderName,
         CardNumber = $"{paymentModel.CreditCard.CardNumber.Substring(0, 4)} **** **** {paymentModel.CreditCard.CardNumber.Substring(paymentModel.CreditCard.CardNumber.Length - 4, 4)}",
         CreateOn = DateTime.Now,
         ProvisionNumber = paymentResult.ProvisionNumber,
         ReferanceNumber = paymentResult.ReferanceNumber,
         Status = paymentResult.Status == false ? false : paymentResult.IsRedirectContent == false,
         UseSecure3D = paymentModel.Use3DSecure,
         Bank = paymentModel.SelectedBank,
         PosConfigurationId = paymentModel.PosConfigurationId,
         Amount = paymentModel.Order.Total,
         Installment = paymentModel.Order.Installment,
         Id = Guid.NewGuid(),
         OrderId = paymentModel.Order.OrderId,
         UserId = paymentModel.Order.UserId,
         CustomerId = paymentModel.Order.CustomerId
     });
 }