Ejemplo n.º 1
0
        public void Handle_RequestonOrderStatus_ReturnsOrderNotFound()
        {
            V1Processing processing = new V1Processing();

            RequestOrderStatus request = new RequestOrderStatus {
                OrderId = "2"
            };

            OperationStatus answer = processing.Handle(new Packet <IPacketContent>(request)
            {
                Version = "v1"
            }).Content as OperationStatus;


            Assert.Equal(ResultCode.OrderNotFound, answer.ResultCode);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Проверка статуса заказа
        /// </summary>
        /// <param name="order_id">идентификатор заказа на стороне продавца</param>
        /// <returns>Код статуса заказа или код ошибки</returns>
        public ResultCode GetStatus(string order_id)
        {
            #region Проверка входящих параметров
            //ненулеватость
            if (String.IsNullOrWhiteSpace(order_id))
            {
                throw new ArgumentNullException(nameof(order_id));
            }
            #endregion

            RequestOrderStatus request = new RequestOrderStatus {
                OrderId = order_id
            };

            OperationStatus response = transport.SendRequest <RequestOrderStatus, OperationStatus>(request);

            return(response.ResultCode);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Запрос статуса
        /// </summary>
        /// <param name="request">Запрос</param>
        /// <returns>OperationStatus с кодом статуса или ошибкой</returns>
        private OperationStatus Handle(RequestOrderStatus request)
        {
            OperationStatus orderStatus = new OperationStatus();

            //Предтранзакционные проверки
            foreach (var checkup in RequestOrderStatusPreCheckups)
            {
                if (!checkup.Perform(request, orderStatus))
                {
                    return(orderStatus); //Входные данные не прошли проверку
                }
            }

            Order order = Storage.Orders.Values.FirstOrDefault(o => o.OrderId == request.OrderId);

            if (order == null)
            {
                orderStatus.ResultCode = ResultCode.OrderNotFound;
                return(orderStatus);
            }

            switch (order.Status)
            {
            case OrderStatus.Paid:
                orderStatus.ResultCode = ResultCode.OrderPaid;
                break;

            case OrderStatus.Refunded:
                orderStatus.ResultCode = ResultCode.OrderRefunded;
                break;

            case OrderStatus.OnHold:
                orderStatus.ResultCode = ResultCode.OrderOnHold;
                break;

            default:
                orderStatus.ResultCode = ResultCode.GeneralError;
                break;
            }

            return(orderStatus);
        }