public SetOrderPaymentResponse SetOrderPayment(SetOrderPaymentRequest paymentRequest) { SetOrderPaymentResponse paymentResponse = new SetOrderPaymentResponse(); Order order = _orderRepository.FindBy(paymentRequest.OrderId); try { order.SetPayment(new Payment(DateTime.Now, paymentRequest.PaymentToken, paymentRequest.PaymentMerchant, paymentRequest.Amount)); Submit(order, paymentRequest.CustomerEmail); _orderRepository.Save(order); _uow.Commit(); } catch (OrderAlreadyPaidForException ex) { // Refund the payment using the payment service. _logger.LogError(ex.Message); } catch (PaymentAmountDoesNotEqualOrderTotalException ex) { // Refund the payment using the payment service. _logger.LogError(ex.Message); } paymentResponse.Order = _mapper.Map <Order, OrderView>(order); return(paymentResponse); }
public SetOrderPaymentResponse SetOrderPayment(SetOrderPaymentRequest paymentRequest) { SetOrderPaymentResponse paymentResponse = new SetOrderPaymentResponse(); Order order = _orderRepository.FindBy(paymentRequest.OrderId); try { order.SetPayment(PaymentFactory.CreatePayment(paymentRequest.PaymentToken, paymentRequest.Amount, paymentRequest.PaymentMerchant )); _orderRepository.Save(order); _uow.Commit(); } catch (OrderAlreadyPaidForException ex) { // Out of scope of case study: Refund the payment using the payment service... LoggingFactory.GetLogger().Log(ex.Message); } catch (PaymentAmountDoesNotEqualOrderTotalException ex) { // Out of scope of case study: Refund the payment using the payment service... LoggingFactory.GetLogger().Log(ex.Message); } paymentResponse.Order = order.ConvertToOrderView(); return(paymentResponse); }