コード例 #1
0
        public void ChargeCreditCard_ReturnsSuccessForValidCard()
        {
            ProcessorResponse processorResponse = _authorizeNetCreditCardPaymentGateway.ChargeCreditCard(VAILD_TEST_CC);

            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);
            Assert.IsNotNull(processorResponse);
        }
コード例 #2
0
        /// <summary>
        /// Update existing donor payment profile for a donor
        /// </summary>
        /// <param name="BankAccount">Donor payment profile details</param>
        /// <returns>Payment Response with success, message, and profile token</returns>
        public ProcessorResponse UpdateBankAccount(BankAccount BankAccount)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    //save changes to database
                    db.Entry(BankAccount).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }

                response.Message   = "Bank Account successfully updated";
                response.AuthToken = BankAccount.BankAccountTokenId;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
コード例 #3
0
        /// <summary>
        /// Delete a payment profile for a donor
        /// </summary>
        /// <param name="BankAccountTokenId">Payment profile token id</param>
        /// <returns>Payment Response with success, message, and profile token</returns>
        public ProcessorResponse DeleteBankAccount(string BankAccountTokenId)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    var           BankAccount   = db.BankAccounts.Where(x => x.BankAccountTokenId == BankAccountTokenId).SingleOrDefault();
                    DbEntityEntry dbEntityEntry = db.Entry(BankAccount);

                    if (dbEntityEntry.State == System.Data.Entity.EntityState.Detached)
                    {
                        db.BankAccounts.Attach(BankAccount);
                    }

                    BankAccount.Active = false;
                    db.SaveChanges();
                }

                response.AuthToken = BankAccountTokenId;
                response.Message   = "Bank Account successfully deleted";
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
コード例 #4
0
        /// <summary>
        /// Delete a payment profile for a donor
        /// </summary>
        /// <param name="paymentProfileTokenId">Payment profile token id</param>
        /// <returns>Payment Response with success, message, and profile token</returns>
        public ProcessorResponse DeletePaymentProfile(string paymentProfileTokenId)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    var           paymentProfile = db.PaymentProfiles.Where(x => x.TokenId == paymentProfileTokenId).SingleOrDefault();
                    DbEntityEntry dbEntityEntry  = db.Entry(paymentProfile);

                    if (dbEntityEntry.State == System.Data.Entity.EntityState.Detached)
                    {
                        db.PaymentProfiles.Attach(paymentProfile);
                    }

                    db.PaymentProfiles.Remove(paymentProfile);
                    db.SaveChanges();
                }

                response.Message   = "Payment profile successfully deleted";
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
コード例 #5
0
        /// <summary>
        /// Update a record for transaction details
        /// </summary>
        /// <param name="transactionDetails">Transaction details</param>
        /// <returns>Response with success, message, and profile token</returns>
        public ProcessorResponse UpdateTransactionRecord(TransactionDetail transactionDetails)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    //save changes to database
                    db.Entry(transactionDetails).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }

                response.Message   = "Transaction successfully updated";
                response.AuthToken = transactionDetails.PaymentProfileTokenId;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
        public void SetUp()
        {
            var fixture = new Fixture();

            _processorResponse = fixture.Create <ProcessorResponse>();

            _authoriseResponseMapper = new AuthoriseResponseMapper();
        }
コード例 #7
0
        public void RefundRequest_ReturnsSuccessForaPreviousRealValidChargeTransaction()
        {
            var rawResponse       = "";//"1|1|1|This transaction has been approved.|919264|Y|3706081658|23708_1314322||204.00|CC|auth_capture||kim|wasserman||819peacock plaza|Key West|FL|33040|US|||[email protected]||||||||||||||027E6504A6CD489857DABD492B2DC118|P||||||||||||XXXX3413|Visa||||||||||||||||";
            var processorResponse = new ProcessorResponse(rawResponse);

            processorResponse = _authorizeNetCreditCardPaymentGateway.RefundRequestOnSameCreditCard(processorResponse.TransactionCode, "3413", new DateTime(2012, 6, 1), "204");

            Assert.IsNotNull(processorResponse);
            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);
        }
コード例 #8
0
        public void ChargeCreditCard_FailsForInValidCard()
        {
            var invalidCard = VAILD_TEST_CC;

            invalidCard.CreditCardNo = "41111111111112222";

            ProcessorResponse processorResponse = _authorizeNetCreditCardPaymentGateway.ChargeCreditCard(invalidCard);

            Assert.AreEqual(ProcessorResponseResult.Fail, processorResponse.ProcessorResult);
            Assert.IsNotNull(processorResponse);
        }
コード例 #9
0
        public void ChargeCreditCard_DeclinesForExpiredCard()
        {
            var expiredCard = VAILD_TEST_CC;

            expiredCard.ExpiryMonth = 1;
            expiredCard.ExpiryYear  = 2001;

            ProcessorResponse processorResponse = _authorizeNetCreditCardPaymentGateway.ChargeCreditCard(expiredCard);

            Assert.AreEqual(ProcessorResponseResult.Rejected, processorResponse.ProcessorResult);
            Assert.IsNotNull(processorResponse);
        }
コード例 #10
0
        public void VoidRequest_ReturnsSuccessForRealValidChargeTransaction()
        {
            ProcessorResponse processorResponse = _authorizeNetCreditCardPaymentGateway.ChargeCreditCard(VALID_REAL_CC);

            Assert.IsNotNull(processorResponse);
            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);

            processorResponse = _authorizeNetCreditCardPaymentGateway.VoidRequestforaPreviousResponse(processorResponse.RawResponse);

            Assert.IsNotNull(processorResponse);
            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);
        }
コード例 #11
0
        public void RefundRequest_ReturnsSuccessForRealValidChargeTransaction()
        {
            ProcessorResponse processorResponse = _authorizeNetCreditCardPaymentGateway.ChargeCreditCard(VALID_REAL_CC);

            Assert.IsNotNull(processorResponse);
            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);


            processorResponse = _authorizeNetCreditCardPaymentGateway.RefundRequestOnSameCreditCard(processorResponse.TransactionCode, VALID_REAL_CC.CreditCardNo, new DateTime(VALID_REAL_CC.ExpiryYear, VALID_REAL_CC.ExpiryMonth, 1), "10");

            Assert.IsNotNull(processorResponse);
            Assert.AreEqual(ProcessorResponseResult.Accepted, processorResponse.ProcessorResult);
        }
コード例 #12
0
        private PaymentViewData GetPaymentInstrumentInformation(PaymentInstrument paymentInstrument, PaymentViewData paymentViewData)
        {
            if (paymentInstrument is CheckPayment)
            {
                var checkPayment = paymentInstrument as CheckPayment;
                paymentViewData.InstrumentNumber = checkPayment.Check.CheckNumber;
            }
            else if (paymentInstrument is ECheckPayment)
            {
                var eCheckPayment     = paymentInstrument as ECheckPayment;
                var processorResponse = eCheckPayment.ProcessorResponse.Split('|');
                paymentViewData.ProcessorResponse = processorResponse.Length >= 6
                                                        ? processorResponse.GetValue(6).ToString()
                                                        : "-N/A-";
                paymentViewData.InstrumentNumber = eCheckPayment.ECheck.CheckNumber;
            }
            else if (paymentInstrument is ChargeCardPayment)
            {
                var chargeCardPayment = paymentInstrument as ChargeCardPayment;

                paymentViewData.ProcessorResponse = "-N/A-";
                if (ProcessorResponse.IsValidResponseString(chargeCardPayment.ProcessorResponse))
                {
                    paymentViewData.ProcessorResponse =
                        new ProcessorResponse(chargeCardPayment.ProcessorResponse).TransactionCode;
                }

                var chargeCard = _chargeCardRepository.GetById(chargeCardPayment.ChargeCardId);
                if (chargeCard != null)
                {
                    paymentViewData.InstrumentDate   = chargeCard.ExpirationDate.ToString("MM/yyyy");
                    paymentViewData.InstrumentNumber = chargeCard.Number.Length > 3 ? chargeCard.TypeId + " - ends with " + chargeCard.Number.Substring(
                        chargeCard.Number.Length - 4, 4) : chargeCard.Number;
                }
            }
            else if (paymentInstrument is InsurancePayment)
            {
                var insurancePayment = paymentInstrument as InsurancePayment;

                if (insurancePayment.AmountToBePaid > insurancePayment.Amount)
                {
                    paymentViewData.ProcessorResponse = "Amount: $" + insurancePayment.AmountToBePaid.ToString("0.00") + ", Status: Pending for settlement";
                }
                else
                {
                    paymentViewData.ProcessorResponse = "Amount: $" + insurancePayment.AmountToBePaid.ToString("0.00") + ", Status: Payment settled";
                }
            }
            return(paymentViewData);
        }
コード例 #13
0
        /// <summary>
        /// Clear out records from table
        /// </summary>
        /// <returns>ProcessorResponse info</returns>
        public ProcessorResponse ClearExpiringCreditCardInfo()
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    db.Database.ExecuteSqlCommand("DELETE from ExpiringCreditCardsForOrganisation");
                }

                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
            }

            return(response);
        }
コード例 #14
0
        /// <summary>
        /// Create a new record for transaction details
        /// </summary>
        /// <param name="transactionDetails">Transaction details</param>
        /// <returns>Response with success, message, and profile token</returns>
        public ProcessorResponse CreateTransactionRecord(TransactionDetail transactionDetails)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    db.TransactionDetails.Add(transactionDetails);
                    db.SaveChanges();
                }

                response.Message   = "Transaction successfully saved";
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
コード例 #15
0
        /// <summary>
        /// Create a new donor payment profile for a donor
        /// </summary>
        /// <param name="PaymentProfile">Donor payment profile details</param>
        /// <returns>Payment Response with success, message, and profile token</returns>
        public ProcessorResponse CreatePaymentProfile(PaymentProfile PaymentProfile)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    db.PaymentProfiles.Add(PaymentProfile);
                    db.SaveChanges();
                }

                response.Message   = "Payment profile successfully saved";
                response.AuthToken = PaymentProfile.TokenId;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message + ex.InnerException;
            }

            return(response);
        }
コード例 #16
0
        /// <summary>
        /// Create a new donor payment profile for a donor
        /// </summary>
        /// <param name="BankAccount">Donor payment profile details</param>
        /// <returns>Payment Response with success, message, and profile token</returns>
        public ProcessorResponse CreateBankAccount(BankAccount BankAccount)
        {
            var response = new ProcessorResponse();

            try
            {
                using (var db = new GenerousAPIEntities())
                {
                    db.BankAccounts.Add(BankAccount);
                    db.SaveChanges();
                }

                response.Message   = "Bank Account successfully saved";
                response.AuthToken = BankAccount.BankAccountTokenId;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
コード例 #17
0
ファイル: ChargeCardService.cs プロジェクト: sahvishal/matrix
        /// <summary>
        /// Checks if the given transaction is valid for refund or not
        /// </summary>
        /// <param name="cardPayment"></param>
        /// <param name="amountToRefund"></param>
        /// <returns></returns>
        public bool IsCardValidforRefund(ChargeCardPayment cardPayment, decimal amountToRefund, out string reasonForFailure)
        {
            reasonForFailure = string.Empty;
            if (cardPayment.Amount < amountToRefund)
            {
                reasonForFailure = "The payment gateway doesn't allow refund of an amount greater than the one in the last transaction made. The Last Transaction amount is ($" + cardPayment.Amount.ToString("0.00") + ").";
                return(false);
            }

            if (cardPayment.DataRecorderMetaData.DateCreated < DateTime.Now.Date.AddDays(-120))
            {
                reasonForFailure = "Can Not Refund against the last transaction, made on Card on file. As the valid date of making a request is within 120 days.";
                return(false);
            }


            if (!ProcessorResponse.IsValidResponseString(cardPayment.ProcessorResponse))
            {
                reasonForFailure = "No valid Transaction Code found in the database, for the selected card on file.";
                return(false);
            }

            return(true);
        }
コード例 #18
0
        public ProcessorResponse VoidRequestforaPreviousResponse(string rawResponse)
        {
            var processorResponse = new ProcessorResponse(rawResponse);

            return(VoidRequest(processorResponse.TransactionCode));
        }
コード例 #19
0
        public void ManagePayment(PaymentEditModel paymentEditModel, long customerId, string ipAddress, string uniquePaymentReference)
        {
            if (paymentEditModel.Payments == null || paymentEditModel.Payments.Count() < 1)
            {
                return;
            }
            var customer = _customerRepository.GetCustomer(customerId);
            var payments = paymentEditModel.Payments.Where(p => p.Amount != 0);

            int index = 1;

            try
            {
                foreach (var payment in payments)
                {
                    if (payment.PaymentType == PaymentType.ElectronicCheck.PersistenceLayerId && paymentEditModel.PaymentFlow == PaymentFlow.In)
                    {
                        var response = _checkService.ChargefromECheck(payment.ECheck.ECheck,
                                                                      Mapper.Map <AddressEditModel, Address>(
                                                                          paymentEditModel.ExistingBillingAddress), customer, ipAddress,
                                                                      uniquePaymentReference);


                        if (response.ProcessorResult != ProcessorResponseResult.Accepted)
                        {
                            new NLogLogManager().GetLogger <PaymentController>().Info("ECheck Transaction - Details [RawResponse: " + response.RawResponse + "]");
                            throw new Exception("Transaction Failed!");
                        }

                        payment.IsProcessed = true;
                        payment.ECheck.ECheckPayment.ProcessorResponse = response.RawResponse;
                    }
                    else if ((payment.PaymentType == PaymentType.CreditCard.PersistenceLayerId || payment.PaymentType == PaymentType.CreditCardOnFile_Value) && payment.ChargeCard != null)
                    {
                        var transactionAmount = payment.ChargeCard.ChargeCardPayment.Amount;
                        if (paymentEditModel.PaymentFlow == PaymentFlow.Out)
                        {
                            transactionAmount = -1 * transactionAmount;
                        }

                        ProcessorResponse response = null;
                        if (paymentEditModel.PaymentFlow == PaymentFlow.Out)
                        {
                            if (_isEccEnabled)
                            {
                                response = _chargeCardService.ApplyRefundtoNewCard(transactionAmount, customer.Name,
                                                                                   payment.ChargeCard.ChargeCard,
                                                                                   payment.BillingAddress, ipAddress,
                                                                                   uniquePaymentReference + "(" + index +
                                                                                   ")", customer.Email != null ? customer.Email.ToString() : string.Empty);
                            }
                            else if (payment.PaymentType == PaymentType.CreditCardOnFile_Value)
                            {
                                var    cardPayment      = _chargeCardPaymentRepository.GetById(payment.ChargeCard.ChargeCardPayment.Id);
                                string reasonForFailure = "";
                                bool   isValidcard      = _chargeCardService.IsCardValidforRefund(cardPayment, payment.Amount, out reasonForFailure);
                                if (!isValidcard)
                                {
                                    throw new Exception(reasonForFailure);
                                }

                                string previousResponse = cardPayment.ProcessorResponse;
                                if (cardPayment.Amount == payment.Amount)
                                {
                                    response = _chargeCardService.VoidRequest(previousResponse);
                                    if (response.ProcessorResult != ProcessorResponseResult.Accepted)
                                    {
                                        response = _chargeCardService.ApplyRefundtoCardonFile(transactionAmount, payment.ChargeCard.ChargeCard.Number, payment.ChargeCard.ChargeCard.ExpirationDate, previousResponse);
                                    }
                                    else
                                    {
                                        new NLogLogManager().GetLogger <PaymentController>().Info("CC Void Request - Details [RawResponse: " + response.RawResponse + "]");
                                    }
                                }
                                else
                                {
                                    response = _chargeCardService.ApplyRefundtoCardonFile(transactionAmount, payment.ChargeCard.ChargeCard.Number, payment.ChargeCard.ChargeCard.ExpirationDate, previousResponse);
                                }
                            }
                            else
                            {
                                throw new Exception("Refund on the provided card is not allowed. Please choose any other option.");
                            }
                        }
                        else
                        {
                            response = _chargeCardService.ChargefromCard(transactionAmount, new Name(payment.ChargeCard.ChargeCard.NameOnCard), payment.ChargeCard.ChargeCard, payment.BillingAddress, ipAddress,
                                                                         uniquePaymentReference + "(" + index + ")", customer.Email != null ? customer.Email.ToString() : string.Empty);
                        }

                        if (response.ProcessorResult != ProcessorResponseResult.Accepted)
                        {
                            new NLogLogManager().GetLogger <PaymentController>().Info("CC Transaction - Details [RawResponse: " + response.RawResponse + "]");
                            throw new Exception("Transaction Failed!");
                        }

                        payment.IsProcessed = true;
                        payment.ChargeCard.ChargeCardPayment.ProcessorResponse = response.RawResponse;
                    }
                    index++;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(
                          "An exception caused while " + (paymentEditModel.PaymentFlow == PaymentFlow.Out ? "refunding" : "charging") + " amount. Message: " + ex.Message, ex);
            }
        }
コード例 #20
0
ファイル: ChargeCardService.cs プロジェクト: sahvishal/matrix
        public ProcessorResponse ApplyRefundtoCardonFile(decimal amountToRefund, string cardNumber, DateTime expiryDate, string rawResponse)
        {
            var processorResponse = new ProcessorResponse(rawResponse);

            return(_paymentProcessor.RefundRequestOnSameCreditCard(processorResponse.TransactionCode, cardNumber, expiryDate, (amountToRefund > 0 ? (-1 * amountToRefund) : amountToRefund).ToString()));
        }
コード例 #21
0
        private void CompleteEditModel(RefundRequestResultEditModel model, long customerId)
        {
            string value = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.CancellationFee);

            if (!string.IsNullOrEmpty(value))
            {
                decimal fee;
                Decimal.TryParse(value.Trim(), out fee);
                model.CancellationFee = fee;
            }

            if (model.PaymentEditModel == null)
            {
                model.PaymentEditModel = new PaymentEditModel
                {
                    PaymentFlow = PaymentFlow.Out
                };
            }

            if (_isEccEnabled)
            {
                model.PaymentEditModel.AllowedPaymentTypes = new[] { new OrderedPair <long, string>(PaymentType.Check.PersistenceLayerId, PaymentType.Check.Name),
                                                                     new OrderedPair <long, string>(PaymentType.Cash.PersistenceLayerId, PaymentType.Cash.Name),
                                                                     new OrderedPair <long, string>(PaymentType.CreditCard.PersistenceLayerId, PaymentType.CreditCard.Name) }
            }
            ;
            else
            {
                model.PaymentEditModel.AllowedPaymentTypes = new[]
                {
                    new OrderedPair <long, string>(PaymentType.Check.PersistenceLayerId, PaymentType.Check.Name),
                    new OrderedPair <long, string>(PaymentType.Cash.PersistenceLayerId, PaymentType.Cash.Name)
                }
            };


            var order            = _orderRepository.GetOrder(model.OrderId);
            var validCardPayment = order.PaymentsApplied.Where(pi => pi.PaymentType == PaymentType.CreditCard).OrderBy(
                pi => pi.DataRecorderMetaData.DateCreated).Select(pi => (ChargeCardPayment)pi).LastOrDefault();

            if (validCardPayment != null && (_isEccEnabled || (validCardPayment.Amount > 0 && validCardPayment.DataRecorderMetaData.DateCreated > DateTime.Now.Date.AddDays(-120) && ProcessorResponse.IsValidResponseString(validCardPayment.ProcessorResponse))))
            {
                model.PaymentEditModel.ChargeCardonFile = new ChargeCardPaymentEditModel()
                {
                    ChargeCardPayment = validCardPayment,
                    ChargeCard        = _chargeCardRepository.GetById(validCardPayment.ChargeCardId)
                };

                model.PaymentEditModel.AllowedPaymentTypes = model.PaymentEditModel.AllowedPaymentTypes.Concat(new[]
                {
                    new OrderedPair <long, string>(PaymentType.CreditCardOnFile_Value, PaymentType.CreditCardOnFile_Text)
                });
            }

            model.PaymentEditModel.ExistingBillingAddress =
                Mapper.Map <Address, AddressEditModel>(_customerRepository.GetCustomer(customerId).BillingAddress) ?? new AddressEditModel();
        }
コード例 #22
0
        public CreditCardReconcileListModel Create(IEnumerable <ChargeCardPayment> chargeCardPayments, IEnumerable <ChargeCard> chargeCards, IEnumerable <OrderedPair <long, long> > orderPaymentIdOrderedPairs, IEnumerable <Order> orders,
                                                   IEnumerable <OrderedPair <long, string> > customerNameIdPairs, IEnumerable <Event> events, IEnumerable <OrderedPair <long, string> > eventPods, IEnumerable <OrderedPair <long, string> > corporateAccountNameOrderedPairs)
        {
            var listModel = new CreditCardReconcileListModel();
            var array     = new CreditCardReconcileModel[chargeCardPayments.Count()];
            var index     = 0;

            foreach (var chargeCardPayment in chargeCardPayments)
            {
                var chargeCard = chargeCards.Where(c => c.Id == chargeCardPayment.ChargeCardId).SingleOrDefault();
                var orderId    =
                    orderPaymentIdOrderedPairs.Where(p => p.SecondValue == chargeCardPayment.PaymentId).Select(p => p.FirstValue).SingleOrDefault();
                var order = orders.Where(o => o.Id == orderId).SingleOrDefault();
                if (order == null)
                {
                    continue;
                }
                var customerName = customerNameIdPairs.Where(p => p.FirstValue == order.CustomerId).FirstOrDefault();

                var    eventPod = eventPods.Where(ep => ep.FirstValue == order.EventId).SingleOrDefault();
                string pods     = eventPod != null ? eventPod.SecondValue : string.Empty;
                var    theEvent = events != null && order.EventId.HasValue
                                   ? events.Where(e => e.Id == order.EventId).SingleOrDefault()
                                   : null;

                string  prepaid    = "No";
                decimal prePaidSum = 0;

                if (theEvent != null)
                {
                    prePaidSum = order.PaymentsApplied.Where(
                        pa => pa.DataRecorderMetaData.DateCreated < theEvent.EventDate).Sum(
                        p => p.Amount);
                    if (
                        order.PaymentsApplied.Where(pa => pa.DataRecorderMetaData.DateCreated < theEvent.EventDate).
                        Count() > 0 && prePaidSum < order.DiscountedTotal)
                    {
                        prepaid = "Partial Paid";
                    }
                    else if (order.DiscountedTotal == order.TotalAmountPaid &&
                             order.PaymentsApplied.Where(pa => pa.DataRecorderMetaData.DateCreated >= theEvent.EventDate)
                             .Count() < 1)
                    {
                        prepaid = "Yes";
                    }
                    else if (chargeCardPayment.DataRecorderMetaData.DataRecorderCreator.Id == customerName.FirstValue)
                    {
                        prepaid = "Yes";
                    }
                }
                else
                {
                    prepaid    = " -N/A-";
                    prePaidSum = order.PaymentsApplied.Sum(p => p.Amount);
                }

                var account = theEvent != null?corporateAccountNameOrderedPairs.FirstOrDefault(x => x.FirstValue == theEvent.Id) : null;

                var model = new CreditCardReconcileModel
                {
                    EventId          = theEvent != null ? theEvent.Id : 0,
                    Amount           = chargeCardPayment.Amount,
                    CardType         = chargeCard.TypeId.ToString(),
                    CustomerName     = customerName.SecondValue,
                    DateApproved     = chargeCardPayment.DataRecorderMetaData.DateCreated,
                    Pod              = pods,
                    ReceiptNumber    = ProcessorResponse.IsValidResponseString(chargeCardPayment.ProcessorResponse) ? new ProcessorResponse(chargeCardPayment.ProcessorResponse).TransactionCode : chargeCardPayment.ProcessorResponse,
                    IsOnline         = chargeCardPayment.DataRecorderMetaData.DataRecorderCreator.Id == customerName.FirstValue,
                    Prepaid          = prepaid,
                    CorporatePartner = account == null ? "N/A" : account.SecondValue,
                    EventType        = theEvent != null ? ((theEvent.EventType == EventType.Retail) ? EventType.Retail.ToString() : EventType.Corporate.ToString()) : "N/A"
                };

                array[index++] = model;
            }
            listModel.Collection = array;
            return(listModel);
        }
コード例 #23
0
ファイル: ChargeCardService.cs プロジェクト: sahvishal/matrix
        public ProcessorResponse VoidRequest(string rawResponse)
        {
            var processorResponse = new ProcessorResponse(rawResponse);

            return(_paymentProcessor.VoidRequest(processorResponse.TransactionCode));
        }