示例#1
0
        public bool ProcessPaymentLessThan21(PaymentDetail paymentDetail, int transactionType = 0)
        {
            var referenceNumber = Utility.Utility.GenerateReferenceNumber();

            paymentDetail.PaymentReference = referenceNumber;
            paymentDetail.PaymentLogs      = new List <PaymentLog> {
                new PaymentLog {
                    Amount = paymentDetail.Amount, PaymentDate = DateTime.Now, PaymentState = PaymentState.Pending, PaymentGateway = PaymentGateway.CheapGateway, PaymentReference = referenceNumber
                }
            };
            detailRepository.Add(paymentDetail);
            detailRepository.Save();

            var gatewayResult = cheapPaymentGateway.ProcessPayment(paymentDetail, transactionType);
            var result        = paymentLogRepository.GetPaymentLogByFilter(c => c.PaymentReference == referenceNumber);//.FirstOrDefault();

            if (gatewayResult.Code == ResponseCodes.OK)
            {
                result.PaymentState = PaymentState.Processed;
                paymentLogRepository.Update(result);
                paymentLogRepository.Save();
                return(true);
            }
            else
            {
                result.PaymentState = PaymentState.Failed;
                paymentLogRepository.Update(result);
                paymentLogRepository.Save();
                return(false);
            }
        }
示例#2
0
        public void Create(CreatePaymentDetailView view)
        {
            var paymentDetail = new PaymentDetail
            {
                BSB           = view.BSB,
                AccountName   = view.AccountName,
                AccountNumber = view.AccountNumber,
                Reference     = view.Reference,
                PaymentAmount = view.PaymentAmount
            };

            if (view.PaymentAmount <= 0)
            {
                throw new NextPayException("Invalid Payment Amount!");
            }
            if (string.IsNullOrEmpty(view.BSB))
            {
                throw new NextPayException("Invalid BSB!");
            }
            if (string.IsNullOrEmpty(view.Reference))
            {
                throw new NextPayException("Invalid Reference!");
            }
            if (string.IsNullOrEmpty(view.AccountName))
            {
                throw new NextPayException("Invalid Account Name!");
            }
            if (string.IsNullOrEmpty(view.AccountNumber) || !CheckCreditCard(view.AccountNumber))
            {
                throw new NextPayException("Invalid Account Number!");
            }

            _paymentDetailRepository.Add(paymentDetail);
        }
        public async Task <ActionResult <PaymentDetail> > PostPaymentDetail(PaymentDetail paymentDetail)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState)); //возврат ошибки в случае неправильного заполнения полей в обьекте customer
            }



            await _paymentDetailRepository.Add(paymentDetail);

            return(CreatedAtAction("GetPaymentDetail", new { id = paymentDetail.PMId }, paymentDetail));
        }