Exemple #1
0
        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);
        }