public IHttpActionResult CreditWithCard(string cardNumber, decimal money) { CreditCardResult result = _creditCardProcessor.ProcessCard(cardNumber); if (!result.Success) { return(Content(HttpStatusCode.NotModified, result.ReasonForFailure)); } else { _repository.CreditFunds(money); return(Ok()); } }
public override PaymentResult TryProcessPayment(PaymentDataBase paymentData) { if (paymentData.PaymentType == PaymentType.CREDIT_CARD) { CreditCardPaymentData creditCardData = paymentData as CreditCardPaymentData; CreditCardResult authResult = this.creditCardProcessor.AuthorizeCreditCard(creditCardData.CreditCardNumber, creditCardData.ExpirationDate, creditCardData.Cvv, creditCardData.BillingZipCode, creditCardData.Amount); if (authResult.Authorized == true) { int referenceNumber = paymentsDao.SaveSuccessfulCreditCardPayment(creditCardData, authResult); PaymentResult paymentResult = new PaymentResult() { CustomerAccountNumber = creditCardData.CustomerAccountNumber, PaymentDate = creditCardData.PaymentDate, Success = authResult.Authorized, ReferenceNumber = referenceNumber }; return(paymentResult); } else { int referenceNumber = paymentsDao.SaveFailedCreditCardPayment(creditCardData, authResult); PaymentResult paymentResult = new PaymentResult() { CustomerAccountNumber = creditCardData.CustomerAccountNumber, PaymentDate = creditCardData.PaymentDate, Success = authResult.Authorized, ReferenceNumber = referenceNumber }; return(paymentResult); } } else if (this.NextPaymentTypeHandler != null) { return(this.NextPaymentTypeHandler.TryProcessPayment(paymentData)); } else { throw new ApplicationException("Unknown payment type"); } }