public PaymentResponseBo Process(PaymentBo payment)
        {
            var membershipServiceResponse = membershipService.Upgrade(payment.Customer);

            if (membershipServiceResponse.MembershipServiceResponseType == MembershipServiceResponseType.Failure)
            {
                Logger.Instance.Log(LoggerType.Error, membershipServiceResponse.ErrorMessage);

                return(new PaymentResponseBo
                {
                    ErrorMessage = membershipServiceResponse.ErrorMessage,
                    PaymentResponseType = PaymentResponseType.Failure
                });
            }

            var notificationResponse = notificatiionMembershipService.UpgradeNotify(payment.Customer);

            if (notificationResponse.MembershipServiceResponseType == MembershipServiceResponseType.Failure)
            {
                Logger.Instance.Log(LoggerType.Error, notificationResponse.ErrorMessage);

                return(new PaymentResponseBo
                {
                    ErrorMessage = membershipServiceResponse.ErrorMessage,
                    PaymentResponseType = PaymentResponseType.Failure
                });
            }

            Logger.Instance.Log(LoggerType.Information, this.localizedMessageProvider.GetUpgradeMembershipPaymentSucessfulMessage);

            return(new PaymentResponseBo
            {
                PaymentResponseType = PaymentResponseType.Success
            });
        }
예제 #2
0
        public PaymentResponseBo Pay(PaymentBo payment)
        {
            var paymentProcessingService = this.paymentFactory.Create(payment.PaymentType);
            var response = paymentProcessingService.Process(payment);

            return(response);
        }
        public override PaymentResponseBo Process(PaymentBo payment)
        {
            var packagingSlipServiceResponse = packagingSlipService.GenerateNewSlip();

            if (packagingSlipServiceResponse.PackagingSlipGenerationResponseType == PackagingSlipGenerationResponseType.Failure)
            {
                Logger.Instance.Log(LoggerType.Error, packagingSlipServiceResponse.ErrorMessage);

                return(new PaymentResponseBo
                {
                    ErrorMessage = packagingSlipServiceResponse.ErrorMessage,
                    PaymentResponseType = PaymentResponseType.Failure
                });
            }

            CalculateAgentCommission(payment);

            Logger.Instance.Log(LoggerType.Information, this.localizedMessageProvider.GetPhysicalProductPaymentSucessfulMessage);

            return(new PackagingSlipPaymentResponseBo
            {
                PaymentResponseType = PaymentResponseType.Success,
                PackagingSlip = packagingSlipServiceResponse.PackagingSlip
            });
        }
예제 #4
0
 public abstract PaymentResponseBo Process(PaymentBo payment);
예제 #5
0
        public void CalculateAgentCommission(PaymentBo payment)
        {
            var commission = commissionService.Calculate(payment.PaymentValue);

            agentService.ReceieveCommission(payment.Agent, commission);
        }