Ejemplo n.º 1
0
        public IEnumerable <RecurringChargeOperationResult> PayUnpaidSchedules(DateTime date)
        {
            var results   = new List <RecurringChargeOperationResult>();
            var schedules = PaymentScheduleRepository.GetUnpaidSchedules(date);

            foreach (var s in schedules)
            {
                var chargeParameters = new PaymentChargeParameters
                {
                    Description   = "Recurring Charge -  Payment Id " + s.PaymentId.ToString("D5") + " - Schedule No. " + s.ScheduleNumber.ToString("D2"),
                    Amount        = s.Payment.Amount,
                    CustomerId    = s.Payment.LoginId,
                    GatewayCardId = s.Payment.CreditCard.GatewayCardId,
                    CardId        = s.Payment.CreditCardId.Value,
                    PaymentId     = s.PaymentId,
                    ReferenceType = "Payment Schedule",
                    ReferenceId   = s.Id
                };
                var result = Charge(chargeParameters);
                if (result.Success)
                {
                    s.PaymentChargeId = result.PaymentChargeId;
                    PaymentScheduleRepository.Save(s);
                    results.Add(new RecurringChargeOperationResult {
                        Success = true, Message = result.Message, PaymentScheduleId = s.Id, PaymentChargeId = result.PaymentChargeId
                    });
                }
                else
                {
                    results.Add(new RecurringChargeOperationResult {
                        Success = false, Message = result.Message, PaymentScheduleId = s.Id
                    });
                }
            }
            return(results);
        }