コード例 #1
0
        public void SetPayment(Payment payment)
        {
            if (OrderHasBeenPaidFor())
            {
                throw new OrderAlreadyPaidForException(GetDetailsOnExisitingPayment());
            }

            if (OrderTotalMatches(payment))
            {
                _payment = payment;
            }
            else
            {
                throw new PaymentAmountDoesNotEqualOrderTotalException(GetDetailsOnIssueWith(payment));
            }

            _state.Submit(this);
        }