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)); }
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)); }