Esempio n. 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
                });
            }
        }