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