コード例 #1
0
        public async Task <Order> PaymentNotifiedAsync(PaymentNotice payment)
        {
            Order order = await GetOrderByBookingIdAsync(payment.BookingId);

            var orderStatusBefore = order?.Status;

            if (order == null)
            {
                if (payment.Status == "approved" || payment.Status == "in_process")
                {
                    order = _mapper.Map <PaymentNotice, Order>(payment);
                    order.Registration = await _userManager.FindByIdAsync(payment.User_Id ?? string.Empty);

                    order = await CreateOrderAsync(order);
                }
            }

            if (order != null && orderStatusBefore != "approved" && (order.Status == "approved" || payment.Status == "approved"))
            {
                order.PickUpTime = _calendarRepository.GetPickupEstimate(order.PreparationTime);
                order.Status     = "approved";
                MapMercadoPagoData(ref order, payment);
                order.Factura = await _billing.Facturar(order);

                _appDbContext.Orders.Update(order);
                _appDbContext.SaveChanges();
                await AfterOrderConfirmedAsync(order);
            }

            return(order);
        }
コード例 #2
0
        public async Task <Order> PaymentNotified(PaymentNotice payment)
        {
            Order order = GetOrderByBookingId(payment.BookingId);

            var orderStatusBefore = order?.Status;

            if (order == null)
            {
                if (payment.Status == "approved" || payment.Status == "in_process")
                {
                    order = _mapper.Map <PaymentNotice, Order>(payment);
                    order.Registration = await _userManager.FindByIdAsync(payment.User_Id ?? string.Empty);

                    order = CreateOrder(order);
                }
            }

            if (order != null && orderStatusBefore != "approved" && (order.Status == "approved" || payment.Status == "approved"))
            {
                order.PickUpTime = _calendarRepository.GetPickupEstimate(order.PreparationTime);
                order.Status     = "approved";
                order.Payout     = _calendarRepository.LocalTime();
                _appDbContext.Orders.Update(order);
                _appDbContext.SaveChanges();
                await _emailRepository.SendOrderConfirmationAsync(order,
                                                                  () => _smsRepository.NotifyAdmins($"¡Pedido nuevo! Código {order.FriendlyBookingId}"));
            }

            return(order);
        }
コード例 #3
0
 private void MapMercadoPagoData(ref Order order, PaymentNotice payment)
 {
     order.PaymentReceived     = true;
     order.MercadoPagoMail     = payment.MercadoPagoMail;
     order.MercadoPagoName     = payment.MercadoPagoName;
     order.MercadoPagoUsername = payment.MercadoPagoUsername;
     order.PhoneNumber         = payment.PhoneNumber;
     order.CardHolderName      = payment.CardHolderName;
     order.CardHolderNumber    = payment.CardHolderNumber;
     order.CardHolderType      = payment.CardHolderType;
     order.PayerIdNumber       = payment.PayerIdNumber;
     order.PayerIdType         = payment.PayerIdType;
     order.Payout = _calendarRepository.LocalTime();
 }