コード例 #1
0
        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");
            }
        }