public async Task Consume(ConsumeContext <ChargePayment> context) { Console.WriteLine($"Message received: {JsonSerializer.Serialize(context.Message)}"); var paymentDetails = await _paymentDetailsRepository.GetByOrderId(context.Message.OrderId); var paymentConfirmation = _paymentProvider.ChargeCreditCard(paymentDetails.CardNumber, paymentDetails.Amount); paymentDetails.Status = paymentConfirmation.Succeed ? PaymentStatus.Accepted : PaymentStatus.Rejected; await _context.SaveChangesAsync(); if (paymentConfirmation.Succeed) { await _eventBus.Publish(new PaymentAccepted { OrderId = context.Message.OrderId }); } else { await _eventBus.Publish(new PaymentRejected { OrderId = context.Message.OrderId }); } }
public async Task Consume(ConsumeContext <OrderCreated> context) { Console.WriteLine($"Message received: {JsonSerializer.Serialize(context.Message)}"); var cardDetails = _cardDetailsRepository.GetByUserId(context.Message.UserId); await _paymentDetailsRepository.Add(new PaymentDetails { Amount = context.Message.Amount, Status = PaymentStatus.Pending, CardNumber = cardDetails.Number, OrderId = context.Message.OrderId, TimeStamp = DateTime.UtcNow }); await _dbContext.SaveChangesAsync(); var chargePayment = new ChargePayment { OrderId = context.Message.OrderId }; await _commandBus.Send(chargePayment); }