Exemplo n.º 1
0
        public async Task <ResponseMessage> AuthorizePayment(Payment payment)
        {
            var transacion = await _paymentFacade.AuthorizePayment(payment);

            var validationResult = new ValidationResult();

            if (transacion.Status != TransactionStatus.Authorized)
            {
                validationResult.Errors.Add(new ValidationFailure("Payment", "Error to process your payment, please contact your card operator"));

                return(new ResponseMessage(validationResult));
            }

            payment.AddTransaction(transacion);

            _paymentRepository.AddPayment(payment);

            if (!await _paymentRepository.UnitOfWork.Commit())
            {
                validationResult.Errors.Add(new ValidationFailure("Payment", "Error to process your payment"));

                //TODO: implement the process to revert the payment, request to Gateway.
                //you can send to the Queue in case  you need to to more operation
                // OR if you only want to revert, you can simply call this method _paymentRepository.RevertPayment(transacion.Nsu);

                return(new ResponseMessage(validationResult));
            }

            return(new ResponseMessage(validationResult));
        }
Exemplo n.º 2
0
        public async Task <ResponseMessage> AuthorizePayment(PaymentInfo payment)
        {
            var transaction = await _paymentFacade.AuthorizePayment(payment);

            var validationResult = new ValidationResult();

            if (transaction.Status != StatusTransaction.Authorized)
            {
                validationResult.Errors.Add(new ValidationFailure("Payment",
                                                                  "Payment declined, contact your card operator"));

                return(new ResponseMessage(validationResult));
            }

            payment.AddTransaction(transaction);
            _paymentRepository.AddPayment(payment);

            if (!await _paymentRepository.UnitOfWork.Commit())
            {
                validationResult.Errors.Add(new ValidationFailure("Payment",
                                                                  "There was an error making the payment."));

                return(new ResponseMessage(validationResult));
            }

            return(new ResponseMessage(validationResult));
        }