コード例 #1
0
        ResultGetOperations GetDummyErrorOperation(string merchantTransactionId)
        {
            var resultGetOperations = new ResultGetOperations();

            resultGetOperations.Status = GetOperationsStatus.ERROR;
            resultGetOperations.MerchantTransactionId = merchantTransactionId;
            return(resultGetOperations);
        }
コード例 #2
0
        ResultGetOperations GetDummyDeniedOperation(string merchantTransactionId)
        {
            var resultGetOperations = new ResultGetOperations();

            resultGetOperations.Status = GetOperationsStatus.DENIED;
            resultGetOperations.MerchantTransactionId = merchantTransactionId;
            return(resultGetOperations);
        }
コード例 #3
0
ファイル: PaymentService.cs プロジェクト: pampero/hopeOnline
        // Actualiza los estados de la orden, si llega por Cancelada se le cambia el estado y se recupera el stock virtual tomado previamente.
        // NO ACTUALIZA LA BASE DE DATOS, la actualización se hace desde el llamante para que sea transaccional.
        private void DoUpdateOrderStatus(ResultGetOperations resultGetOperations, string merchantTransactionId, ref HopeLingerieEntities context)
        {
            var transactionId = Convert.ToInt32(merchantTransactionId);
            var order = context.Orders.SingleOrDefault(a => a.OrderId == transactionId);

            // Si el estado de la Orden es En Proceso realiza la operación sino no hace nada
            if ((order == null) || (order.OrderStatusId != 1)) return;

            // TODO: Poner estado que no se encontró el Trx_Id, poner estado 5 (FinalizadaConError) y recuperar stock
            if (resultGetOperations.Status == GetOperationsStatus.DENIED)
            {
                // No encontró el TransactionId en DineroMail
                var stockService = new StockService(new VirtualStock());
                // Cancela la orden y recupera Stock Virtual
                stockService.CancelStockAndOrder(order, ref context);

                //throw new DineroMailInterfaceException("ACCESO DENEGADO A DINEROMAIL" + resultGetOperations.Message);
            }
            else if (resultGetOperations.Status == GetOperationsStatus.ERROR)
            {
                throw new DineroMailInterfaceException("ERROR AL CONECTAR CON DINEROMAIL-" + resultGetOperations.Message);
            }
            else if (resultGetOperations.Status == GetOperationsStatus.OK)
            {
                // Debería tener una sola operación asociada al transactionId
                var operationDetail = resultGetOperations.Operations.LastOrDefault();

                if (operationDetail != null)
                {
                    if (operationDetail.State == OperationDetailState.PENDING)
                    {
                        //order.PaymentStatus = "Pendiente";
                        // TODO: Definir Status correcto
                        order.OrderStatusId = 5; //realizada sin cobrar
                    }
                    else if (operationDetail.State == OperationDetailState.ACCREDITED)
                    {
                        //order.PaymentStatus = "Pagada";
                        order.OrderStatusId = 8; // Finalizada
                    }
                    else if (operationDetail.State == OperationDetailState.CANCELED)
                    {
                        //  order.PaymentStatus = "Cancelada";
                        var stockService = new StockService(new VirtualStock());
                        // Cancela la orden y recupera Stock Virtual
                        stockService.CancelStockAndOrder(order, ref context);
                    }

                    order.PaymentMethod = operationDetail.PaymentMethod;
                }
                else  // en caso de que no se haya ingresado la orden a dineromail por fallo o porque se arrepintió, acredito stock, cancelo la orden y la pongo en finalizada con error.
                {
                    var stockService = new StockService(new VirtualStock());
                    // Cancela la orden y recupera Stock Virtual
                    stockService.CancelStockAndOrder(order, ref context);
                }
            }
        }
コード例 #4
0
        ResultGetOperations GetDummyOKCanceledOperation(string merchantTransactionId)
        {
            var resultGetOperations = new ResultGetOperations();

            resultGetOperations.Status = GetOperationsStatus.OK;
            resultGetOperations.MerchantTransactionId = merchantTransactionId;

            OperationDetail[] operations = { new OperationDetail {
                                                 Amount = 90, NetAmount = 100, PaymentMethod = "Credito", State = OperationDetailState.CANCELED
                                             } };
            resultGetOperations.Operations = operations;

            return(resultGetOperations);
        }
コード例 #5
0
        // Este método de ACTUALIZACION DE ORDENES se ejecuta desde los metodos ClosedWithErrorsOrders, ClosedNotPayedOrders, InProcessOrders.
        // Envia el transactionId de la orden a DineroMail via WebService y luego actualiza el estado de la misma.
        // NO ACTUALIZA LA BASE DE DATOS, la actualización se hace desde el llamante para que sea transaccional.
        public void UpdateOrderStatus(string transactionIds, ref HopeLingerieEntities context)
        {
            PaymentService paymentService = new PaymentService();

            var transactions = transactionIds.Split(',');

            DineroMail dineroMail = new DineroMail();

            // Evalúa y actualiza el estado de cada orden en el sistema local con cada operación en dineromail.
            foreach (var merchantTransactionId in transactions)
            {
                ResultGetOperations resultOGetOperations = dineroMail.GetOperation(merchantTransactionId);

                // Metodos Dummy para Testing
                //var resultOGetOperations = GetDummyDeniedOperation(merchantTransactionId);
                //var resultOGetOperations = GetDummyErrorOperation(merchantTransactionId);
                //var resultOGetOperations = GetDummyOKPendingOperation(merchantTransactionId);
                //var resultOGetOperations = GetDummyOKAccreditedOperation(merchantTransactionId);
                //var resultOGetOperations = GetDummyOKCanceledOperation(merchantTransactionId);

                DoUpdateOrderStatus(resultOGetOperations, merchantTransactionId, ref context);
            }
        }
コード例 #6
0
        // Actualiza los estados de la orden, si llega por Cancelada se le cambia el estado y se recupera el stock virtual tomado previamente.
        // NO ACTUALIZA LA BASE DE DATOS, la actualización se hace desde el llamante para que sea transaccional.
        private void DoUpdateOrderStatus(ResultGetOperations resultGetOperations, string merchantTransactionId, ref HopeLingerieEntities context)
        {
            var transactionId = Convert.ToInt32(merchantTransactionId);
            var order         = context.Orders.SingleOrDefault(a => a.OrderId == transactionId);

            // Si el estado de la Orden es En Proceso realiza la operación sino no hace nada
            if ((order == null) || (order.OrderStatusId != 1))
            {
                return;
            }

            // TODO: Poner estado que no se encontró el Trx_Id, poner estado 5 (FinalizadaConError) y recuperar stock
            if (resultGetOperations.Status == GetOperationsStatus.DENIED)
            {
                // No encontró el TransactionId en DineroMail
                var stockService = new StockService(new VirtualStock());
                // Cancela la orden y recupera Stock Virtual
                stockService.CancelStockAndOrder(order, ref context);

                //throw new DineroMailInterfaceException("ACCESO DENEGADO A DINEROMAIL" + resultGetOperations.Message);
            }
            else if (resultGetOperations.Status == GetOperationsStatus.ERROR)
            {
                throw new DineroMailInterfaceException("ERROR AL CONECTAR CON DINEROMAIL-" + resultGetOperations.Message);
            }
            else if (resultGetOperations.Status == GetOperationsStatus.OK)
            {
                // Debería tener una sola operación asociada al transactionId
                var operationDetail = resultGetOperations.Operations.LastOrDefault();

                if (operationDetail != null)
                {
                    if (operationDetail.State == OperationDetailState.PENDING)
                    {
                        //order.PaymentStatus = "Pendiente";
                        // TODO: Definir Status correcto
                        order.OrderStatusId = 5; //realizada sin cobrar
                    }
                    else if (operationDetail.State == OperationDetailState.ACCREDITED)
                    {
                        //order.PaymentStatus = "Pagada";
                        order.OrderStatusId = 8; // Finalizada
                    }
                    else if (operationDetail.State == OperationDetailState.CANCELED)
                    {
                        //  order.PaymentStatus = "Cancelada";
                        var stockService = new StockService(new VirtualStock());
                        // Cancela la orden y recupera Stock Virtual
                        stockService.CancelStockAndOrder(order, ref context);
                    }

                    order.PaymentMethod = operationDetail.PaymentMethod;
                }
                else  // en caso de que no se haya ingresado la orden a dineromail por fallo o porque se arrepintió, acredito stock, cancelo la orden y la pongo en finalizada con error.
                {
                    var stockService = new StockService(new VirtualStock());
                    // Cancela la orden y recupera Stock Virtual
                    stockService.CancelStockAndOrder(order, ref context);
                }
            }
        }
コード例 #7
0
ファイル: PaymentService.cs プロジェクト: pampero/hopeOnline
        ResultGetOperations GetDummyOKPendingOperation(string merchantTransactionId)
        {
            var resultGetOperations = new ResultGetOperations();
            resultGetOperations.Status = GetOperationsStatus.OK;
            resultGetOperations.MerchantTransactionId = merchantTransactionId;

            OperationDetail[] operations = { new OperationDetail { Amount = 90, NetAmount = 100, PaymentMethod = "Credito", State = OperationDetailState.PENDING } };
            resultGetOperations.Operations = operations;

            return resultGetOperations;
        }
コード例 #8
0
ファイル: PaymentService.cs プロジェクト: pampero/hopeOnline
 ResultGetOperations GetDummyErrorOperation(string merchantTransactionId)
 {
     var resultGetOperations = new ResultGetOperations();
     resultGetOperations.Status = GetOperationsStatus.ERROR;
     resultGetOperations.MerchantTransactionId = merchantTransactionId;
     return resultGetOperations;
 }
コード例 #9
0
ファイル: PaymentService.cs プロジェクト: pampero/hopeOnline
 ResultGetOperations GetDummyDeniedOperation(string merchantTransactionId)
 {
     var resultGetOperations = new ResultGetOperations();
     resultGetOperations.Status = GetOperationsStatus.DENIED;
     resultGetOperations.MerchantTransactionId = merchantTransactionId;
     return resultGetOperations;
 }