public async Task WHEN_valid_request_SHOULD_succeed()
        {
            //Arrange
            var findOrderRequest = new FindOrdersRequest();
            var orderQueryResult = new OrderQueryResult
            {
                TotalCount = 1,
                Results    = new List <OrderItem>
                {
                    new OrderItem()
                }
            };
            var orderRepository = _container.CreateInstance <OrderRepository>();

            _container.GetMock <IFindOrdersRequestFactory>()
            .Setup(r => r.Create(It.IsAny <GetCustomerOrdersParam>()))
            .Returns(findOrderRequest);

            _container.GetMock <IOvertureClient>()
            .Setup(r => r.SendAsync(findOrderRequest))
            .ReturnsAsync(orderQueryResult);

            //Act
            var result = await orderRepository.GetCustomerOrdersAsync(BuildGetCustomerOrdersParam()).ConfigureAwait(false);

            //Assert
            result.Should().NotBeNull();
            result.TotalCount.ShouldBeEquivalentTo(1);
            result.Results.Should().NotBeNull();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据ID获取收件人信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public List <busi_sendorder> GetInfoByID(Int64?id)
        {
            OrderQueryResult result = new OrderQueryResult();

            using (var db = SugarDao.GetInstance(LoginUser.GetConstr()))
            {
                if (id == 0)
                {
                    result.success = false;
                    result.Msg     = "参数错误";
                    return(null);
                }
                try
                {
                    var list = db.Queryable <busi_sendorder>().Where("del_flag=1 and custorder_id=" + id + "").ToList();
                    if (list.Count == 0)
                    {
                        result.success    = false;
                        result.DataResult = "";
                        return(null);
                    }

                    result.success    = true;
                    result.DataResult = list;
                    return(list.ToList());
                }
                catch (Exception)
                {
                    return(null);
                }
            }
        }
        protected virtual async Task <Dictionary <Guid, TrackingInfoViewModel> > GetShipmentsTrackingInfoViewModels(
            OrderQueryResult orderQueryResult,
            GetCustomerOrdersParam param)
        {
            var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>();

            var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam
            {
                OrderNumber = order.OrderNumber,
                Scope       = param.Scope
            }));

            var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false);

            foreach (var order in orders)
            {
                foreach (var shipment in order.Cart.Shipments)
                {
                    var shippingTrackingProvider = ShippingTrackingProviderFactory.ResolveProvider(shipment.FulfillmentMethod.Name);
                    var trackingInfoVm           = shippingTrackingProvider.GetTrackingInfoViewModel(shipment, param.CultureInfo);
                    shipmentsTrackingInfos.Add(shipment.Id, trackingInfoVm);
                }
            }

            return(shipmentsTrackingInfos);
        }
        public ActionResult OrderQuery(string transactionId, string orderNumber)
        {
            string nonceStr = TenPayV3Util.GetNoncestr();
            ////设置订单参数
            TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(WxOpenAppId, TenPayV3_MchId, transactionId, nonceStr, orderNumber, TenPayV3_Key);
            OrderQueryResult result            = TenPayV3.OrderQuery(data);

            return(new JsonResult(HttpResult.Success(result)));
        }
Ejemplo n.º 5
0
        private bool OrderPay(string user_id, string financial_id, string order_num, decimal changes_amount, string order_payid, string operator_way)
        {
            bool isSuccess = false;

            try
            {
                UserInfoManager uim = new UserInfoManager();
                if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString())
                {
                    WxOrderQuery     orderQuery  = new WxOrderQuery();
                    OrderQueryResult queryResult = orderQuery.Query(order_payid);
                    if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                    {
                        Hashtable hashuf = new Hashtable();
                        hashuf["ID"]       = financial_id;
                        hashuf["OrderNum"] = order_num;
                        hashuf["UserID"]   = user_id;
                        hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                        hashuf["TradeNo"]  = queryResult.transaction_id;
                        hashuf["TotalFee"] = queryResult.total_fee;
                        hashuf["PayWay"]   = UserFinancialOperatorWay.WeixinPay;
                        decimal changesAmount = changes_amount;
                        if (Math.Abs(changesAmount) == queryResult.total_fee)
                        {
                            isSuccess = uim.OrderPayCallback(hashuf);
                        }
                    }
                }
                else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString())
                {
                    AlipayOrderQuery orderQuery  = new AlipayOrderQuery();
                    OrderQueryResult queryResult = orderQuery.Query(order_payid);
                    if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                    {
                        Hashtable hashuf = new Hashtable();
                        hashuf["ID"]       = financial_id;
                        hashuf["OrderNum"] = order_num;
                        hashuf["UserID"]   = user_id;
                        hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                        hashuf["TradeNo"]  = queryResult.transaction_id;
                        hashuf["TotalFee"] = queryResult.total_fee;
                        hashuf["PayWay"]   = UserFinancialOperatorWay.Alipay;
                        decimal changesAmount = changes_amount;
                        if (Math.Abs(changesAmount) == queryResult.total_fee)
                        {
                            isSuccess = uim.OrderPayCallback(hashuf);
                        }
                    }
                }
                return(isSuccess);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 6
0
        public OrderQueryResult PostXml(OrderQueryParam param)
        {
            SetParams(param);
            ValidateParameters();
            ResultBuilder resultBuilder = PostForResult(PaymentConfig.Instance.OrderQueryUrl, false, PaymentConfig.Instance.TimeOut);

            //结果验证
            resultBuilder.BasicValidate();
            resultBuilder.ValidateNotNullField("trade_state", "交易状态为空");

            OrderQueryResult result = new OrderQueryResult(resultBuilder);

            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="localTradeNo">系统交易单号(预付单返回的OutTradeNo)</param>
        /// <returns></returns>
        public bool TryOrderQuery(string appId, string mchId, string mchKey, string localTradeNo,
                                  out OrderQueryResult result)
        {
            string nonceStr = TenPayV3Util.GetNoncestr();

            result = TenPayV3.OrderQuery(new TenPayV3OrderQueryRequestData(
                                             appId,
                                             mchId,
                                             null,
                                             nonceStr,
                                             localTradeNo,
                                             mchKey));

            Logger.LogInformation($"微信支付订单查询,out_trade_no:{localTradeNo},result:{result.ResultXml}");
            return(result.IsReturnCodeSuccess() && result.IsResultCodeSuccess());
        }
Ejemplo n.º 8
0
        public IActionResult  Query([FromRoute] string orderid)
        {
            IActionResult  actionResult      = NoContent();
            string         nonceStr          = TenPayV3Util.GetNoncestr();
            RequestHandler packageReqHandler = new RequestHandler(null);

            try
            {
                var _order = _context.Order.FirstOrDefault(od => od.OrderID == orderid);
                if (_order != null)
                {
                    //设置package订单参数
                    packageReqHandler.SetParameter("appid", TenPayV3Info.AppId);            //公众账号ID
                    packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId);           //商户号
                    packageReqHandler.SetParameter("transaction_id", _order.TransactionId); //填入微信订单号
                    packageReqHandler.SetParameter("out_trade_no", orderid);                //填入商家订单号
                    packageReqHandler.SetParameter("nonce_str", nonceStr);                  //随机字符串
                    string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);
                    packageReqHandler.SetParameter("sign", sign);                           //签名
                    string           data             = packageReqHandler.ParseXML();
                    var              result           = TenPayV3.OrderQuery(data);
                    OrderQueryResult orderQueryResult = new OrderQueryResult(result);
                    _order.TransactionId = orderQueryResult.transaction_id;
                    _order.ActPay        = decimal.Parse(orderQueryResult.total_fee);
                    var trade_state = Enum.Parse <TradeState>(orderQueryResult.trade_state);
                    _order.OrderStatus = trade_state;
                    _order.PayType     = orderQueryResult.fee_type;
                    _order.OpenID      = orderQueryResult.openid;
                    _context.Order.Update(_order);
                    _context.SaveChanges();
                    actionResult = CreatedAtRoute("api/Orders", orderid);
                }
                else
                {
                    actionResult = Ok(new { code = 1014, msg = "订单不存在" });
                    _logger.LogInformation($"订单{orderid}不存在");
                }
            }
            catch (Exception ex)
            {
                actionResult = Ok(new { code = 1005, msg = ex.Message });
                _logger.LogError(ex, "查询订单时异常" + ex.Message);
            }
            return(actionResult);
        }
Ejemplo n.º 9
0
        public string PaySuccess(HttpContext httpContext, Action <string> ac)
        {
            var response   = new ResponseHandler(httpContext);
            var request    = new RequestHandler(null);
            var orderQuery = new OrderQueryResult(response.ParseXML());

            if (!orderQuery.IsResultCodeSuccess() || !orderQuery.IsResultCodeSuccess())
            {
                request.SetParameter("return_msg", "Fail");
            }
            else
            {
                ac(orderQuery.out_trade_no);
                request.SetParameter("return_msg", "SUCCESS");
            }

            request.SetParameter("return_code", "SUCCESS");
            return(request.ParseXML());
        }
Ejemplo n.º 10
0
        public ActionResult GetInfoByID(Int64?order_id)
        {
            OrderQueryResult com = new OrderQueryResult();

            try
            {
                List <busi_sendorder> mylist     = _service.GetInfoByID(order_id.Value);
                OrderQueryViewModelEE mylistview = new OrderQueryViewModelEE();
                mylistview.supplist = mylist;
                com.DataResult      = mylistview;
                com.success         = true;
                return(Json(com));
            }
            catch (Exception ex)
            {
                com.Msg     = ex.ToString();
                com.success = false;
                return(Json(com));
            }
        }
Ejemplo n.º 11
0
        public OrderQueryResult OrderQuery(OrderQueryDTO dto)
        {
            OrderQueryResult result = new OrderQueryResult();

            try
            {
                AliPayTradeQueryDTO queryDto = new AliPayTradeQueryDTO();
                queryDto.trade_no     = dto.OnlineTradeNo;
                queryDto.out_trade_no = dto.OutTradeNo;
                AlipayTradeQueryRequest payRequest = new AlipayTradeQueryRequest();
                payRequest.BizContent = queryDto.BuildJson();
                AlipayTradeQueryResponse response = Execute(payRequest);
                result.SetAlipayResult(response);
                return(result);
            }
            catch (Exception e)
            {
                throw new F2FPayException(e.Message);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public OrderQueryResult OrderQuery(OrderQueryDTO dto)
        {
            WeixinDataHelper data = new WeixinDataHelper(this._weixinKey);

            if (!string.IsNullOrEmpty(dto.OnlineTradeNo))//如果微信订单号存在,则以微信订单号为准
            {
                data.SetValue("transaction_id", dto.OnlineTradeNo);
            }
            else//微信订单号不存在,才根据商户订单号去查单
            {
                data.SetValue("out_trade_no", dto.OutTradeNo);
            }

            WeixinDataHelper response = weixinPayApi.OrderQuery(data);//提交订单查询请求给API,接收返回数据

            var result = new OrderQueryResult();

            result.SetWeixiResult(response);
            return(result);
        }
Ejemplo n.º 13
0
        public async Task ShouldQueryOrdersAsync()
        {
            Response <OrderQueryResult> response = await _client.Orders().QueryOrdersAsync();

            Assert.True(response.Success);

            OrderQueryResult orderQueryResult = response.Result;

            Assert.NotNull(orderQueryResult.Results);
            Assert.True(orderQueryResult.Results.Count >= 1);

            int limit = 2;

            response = await _client.Orders().QueryOrdersAsync(limit: limit);

            Assert.True(response.Success);

            orderQueryResult = response.Result;
            Assert.NotNull(orderQueryResult.Results);
            Assert.True(orderQueryResult.Results.Count <= limit);
        }
Ejemplo n.º 14
0
        public async Task ShouldQueryOrdersAsync()
        {
            Response <OrderQueryResult> response = await _client.Orders().QueryOrdersAsync();

            Assert.IsTrue(response.Success);

            OrderQueryResult orderQueryResult = response.Result;

            Assert.NotNull(orderQueryResult.Results);
            Assert.GreaterOrEqual(orderQueryResult.Results.Count, 1);

            int limit = 2;

            response = await _client.Orders().QueryOrdersAsync(limit: limit);

            Assert.IsTrue(response.Success);

            orderQueryResult = response.Result;
            Assert.NotNull(orderQueryResult.Results);
            Assert.LessOrEqual(orderQueryResult.Results.Count, limit);
        }
Ejemplo n.º 15
0
        public ActionResult GetpageE(Int64?order_id)
        {
            OrderQueryResult        com    = new OrderQueryResult();
            string                  exmsg  = string.Empty;
            List <OrderQueryModelE> mylist = _service.GetIOrderQueryListE(out exmsg, order_id.Value);

            if (!string.IsNullOrEmpty(exmsg))
            {
                com.Msg     = exmsg;
                com.success = false;
                return(Json(com));
            }
            else
            {
                OrderQueryViewModelE mylistview = new OrderQueryViewModelE();
                mylistview.supplist = mylist;
                com.DataResult      = mylistview;
                com.success         = true;
                return(Json(com));
            }
        }
Ejemplo n.º 16
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["OrderPayID"] == null || res["OrderPayID"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid         = res["UID"].ToString().Trim();
                order_payid = res["OrderPayID"].ToString().Trim();

                AlipayOrderQuery orderQuery = new AlipayOrderQuery();
                //OrderQueryResult queryResult = orderQuery.Query(order_payid);
                OrderQueryResult queryResult = orderQuery.QueryByTradeNO(order_payid);
                string           result      = JsonConvert.SerializeObject(queryResult);
                return(result);
            }
        }
Ejemplo n.º 17
0
        public ActionResult Getpage(string pagenum, string onepagecount, Int64?shop_id, DateTime?create_time, string order_code, string custorder_code, string emp_name)
        {
            OrderQueryResult com = new OrderQueryResult();

            if (!Regex.IsMatch(pagenum, @"(?i)^[0-9a-z\u4e00-\u9fa5]+$") && !string.IsNullOrEmpty(pagenum))
            {
                com.Msg     = "页数不正确";
                com.success = false;
                return(Json(com));
            }

            if (!Regex.IsMatch(onepagecount, @"(?i)^[0-9a-z\u4e00-\u9fa5]+$") && !string.IsNullOrEmpty(onepagecount))
            {
                com.Msg     = "每页数量不正确";
                com.success = false;
                return(Json(com));
            }
            int    totil     = 0;
            int    totilpage = 0;
            string exmsg     = string.Empty;
            List <OrderQueryModel> mylist = _service.GetIOrderQueryList(Convert.ToInt32(pagenum), Convert.ToInt32(onepagecount), out totil,
                                                                        out totilpage, out exmsg, shop_id, create_time, order_code, custorder_code, emp_name);

            if (!string.IsNullOrEmpty(exmsg))
            {
                com.Msg     = exmsg;
                com.success = false;
                return(Json(com));
            }
            else
            {
                OrderQueryViewModel mylistview = new OrderQueryViewModel();
                mylistview.supplist   = mylist;
                mylistview.totil      = totil.ToString();
                mylistview.totilcount = totilpage.ToString();
                com.DataResult        = mylistview;
                com.success           = true;
                return(Json(com));
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 微信订单查询结果
        /// </summary>
        /// <param name="xml">xml</param>
        /// <returns>微信订单查询结果</returns>
        public static OrderQueryResult ConvertToOrderqueryResult(string xml)
        {
            OrderQueryResult orderqueryResult = new OrderQueryResult();
            XElement         doc = XElement.Parse(xml);

            if (doc.Element("return_code").GetString() == "SUCCESS")
            {
                if (doc.Element("result_code").GetString() == "SUCCESS")
                {
                    var tradeState = doc.Element("trade_state").GetString();
                    if (tradeState == "SUCCESS")
                    {
                        orderqueryResult.IsSuccess = true;
                    }
                    else
                    {
                        orderqueryResult.IsSuccess = false;
                    }
                    orderqueryResult.TradeState    = tradeState;
                    orderqueryResult.Appid         = doc.Element("appid").GetString();
                    orderqueryResult.MchId         = doc.Element("mch_id").GetString();
                    orderqueryResult.BankType      = doc.Element("bank_type").GetString();
                    orderqueryResult.TotalFee      = doc.Element("total_fee").GetInt();
                    orderqueryResult.TimeEnd       = doc.Element("time_end").GetString();
                    orderqueryResult.TransactionId = doc.Element("transaction_id").GetString();
                }
                else
                {
                    orderqueryResult.IsSuccess = false;
                    orderqueryResult.Message   = doc.Element("err_code_des").GetString();
                }
            }
            else
            {
                orderqueryResult.IsSuccess = false;
                orderqueryResult.Message   = doc.Element("return_msg").GetString();
            }
            return(orderqueryResult);
        }
        public async Task WHEN_result_is_empty_SHOULD_return_null()
        {
            //Arrange
            var findOrderRequest = new FindOrdersRequest();
            var orderQueryResult = new OrderQueryResult
            {
                TotalCount = 0,
            };
            var orderRepository = _container.CreateInstance <OrderRepository>();

            _container.GetMock <IFindOrdersRequestFactory>()
            .Setup(r => r.Create(It.IsAny <GetCustomerOrdersParam>()))
            .Returns(findOrderRequest);

            _container.GetMock <IOvertureClient>()
            .Setup(r => r.SendAsync(findOrderRequest))
            .ReturnsAsync(orderQueryResult);

            //Act
            var result = await orderRepository.GetCustomerOrdersAsync(BuildGetCustomerOrdersParam()).ConfigureAwait(false);

            //Assert
            result.Should().BeNull();
        }
        /// <summary>
        /// Run Order example code.
        /// </summary>
        /// <param name="client">Client</param>
        /// <param name="project">Project</param>
        public async static Task Run(Client client, Project.Project project)
        {
            string currency = project.Currencies[0];
            string country  = project.Countries[0];
            string language = project.Languages[0];

            /*  CREATE ORDER
             *  ===================================================================================
             *  An order is created from an existing cart.  To create an order from a cart, the
             *  cart cannot be empty and it must have a shipping address set.
             */

            // Retrieve 2 products to add to a cart.
            Response <ProductProjectionQueryResult> productProjectionQueryResponse = await client.ProductProjections().QueryProductProjectionsAsync(limit: 2);

            List <ProductProjection> products       = new List <ProductProjection>();
            List <LineItemDraft>     lineItemDrafts = new List <LineItemDraft>();

            if (productProjectionQueryResponse.Success)
            {
                ProductProjectionQueryResult productProjectionQueryResult = productProjectionQueryResponse.Result;
                Console.WriteLine("Retrieved {0} products.", productProjectionQueryResult.Results.Count);

                foreach (ProductProjection product in productProjectionQueryResult.Results)
                {
                    LineItemDraft lineItemDraft = new LineItemDraft(product.Id, product.MasterVariant.Id)
                    {
                        Quantity = 1
                    };

                    lineItemDrafts.Add(lineItemDraft);
                }
            }
            else
            {
                Helper.WriteError <ProductProjectionQueryResult>(productProjectionQueryResponse);
            }

            // Create a shipping address.
            Address shippingAddress = new Address();

            shippingAddress.FirstName    = "John";
            shippingAddress.LastName     = "Doe";
            shippingAddress.StreetNumber = "123";
            shippingAddress.StreetName   = "Main St.";
            shippingAddress.PostalCode   = "11111";
            shippingAddress.City         = "City";
            shippingAddress.Country      = country;

            // Create the cart.
            Cart cart = null;

            if (lineItemDrafts.Count > 0)
            {
                CartDraft cartDraft = new CartDraft(currency)
                {
                    ShippingAddress = shippingAddress,
                    LineItems       = lineItemDrafts
                };

                Response <Cart> cartResponse = await client.Carts().CreateCartAsync(cartDraft);

                if (cartResponse.Success)
                {
                    cart = cartResponse.Result;
                    Console.WriteLine("Created new cart with ID {0}.", cart.Id);
                }
                else
                {
                    Helper.WriteError <Cart>(cartResponse);
                }
            }

            // Create the order from the cart.
            Response <Order> orderResponse = null;
            Order            order         = null;

            if (cart != null)
            {
                OrderFromCartDraft orderFromCartDraft = new OrderFromCartDraft(cart);
                orderResponse = await client.Orders().CreateOrderFromCartAsync(orderFromCartDraft);

                if (orderResponse.Success)
                {
                    order = orderResponse.Result;
                    Console.WriteLine("Created new order with ID {0}.", order.Id);

                    foreach (LineItem lineItem in order.LineItems)
                    {
                        Console.WriteLine("Order has a line iten named '{0}' with an ID of {1}.", lineItem.Name[language], lineItem.Id);
                    }
                }
                else
                {
                    Helper.WriteError <Order>(orderResponse);
                }
            }

            /*  GET ORDERS
             *  ===================================================================================
             */

            // Get 3 most recent orders.
            Response <OrderQueryResult> orderQueryResponse = await client.Orders().QueryOrdersAsync(sort: "createdAt desc", limit: 3);

            List <Order> orders = new List <Order>();

            if (orderQueryResponse.Success)
            {
                OrderQueryResult orderQueryResult = orderQueryResponse.Result;
                orders = orderQueryResult.Results;

                Console.WriteLine("Retrieved {0} orders.", orders.Count);
            }
            else
            {
                Helper.WriteError <OrderQueryResult>(orderQueryResponse);
            }

            // Get a single order by its ID.
            if (orders.Count > 0)
            {
                string orderId = orders[0].Id;
                orderResponse = await client.Orders().GetOrderByIdAsync(orderId);

                if (orderResponse.Success)
                {
                    order = orderResponse.Result;
                    Console.WriteLine("Retrieved order with ID {0}.", order.Id);
                }
                else
                {
                    Helper.WriteError <Order>(orderResponse);
                }
            }

            /*  UPDATE AN ORDER
             *  ===================================================================================
             *  Each change is made using its own update action object which maps to an update
             *  action call in the API. The list of update action objects are sent to the API using
             *  a single request. If there is an update action in the API that has not yet been
             *  implemented in the SDK, you can use the GenericAction class to make any request you
             *  want (as long as it is a valid update action supported by the API).
             */
            if (order != null)
            {
                ChangeOrderStateAction changeOrderStateAction = new ChangeOrderStateAction(OrderState.Confirmed);

                // Here is how you would make the setDescription request using a GenericAction object.
                GenericAction setOrderNumberAction = new GenericAction("setOrderNumber");
                setOrderNumberAction["orderNumber"] = "ABC123";

                List <UpdateAction> actions = new List <UpdateAction>()
                {
                    changeOrderStateAction, setOrderNumberAction
                };

                orderResponse = await client.Orders().UpdateOrderAsync(order, actions);

                if (orderResponse.Success)
                {
                    order = orderResponse.Result;
                    Console.WriteLine("Updated order with ID {0}.", order.Id);
                    Console.WriteLine("Order state: {0}", order.OrderState);
                    Console.WriteLine("Order number: {0}", order.OrderNumber);
                }
                else
                {
                    Helper.WriteError <Order>(orderResponse);
                }
            }

            /*  DELETE AN ORDER
             *  ===================================================================================
             *  Delete API requests return a generic response, but some return the object that was
             *  deleted. The Orders delete request returns a generic response.
             */
            if (order != null)
            {
                Response <JObject> deleteResponse = await client.Orders().DeleteOrderAsync(order);

                if (deleteResponse.Success)
                {
                    Console.WriteLine("Deleted order with ID {0}.", order.Id);
                }
                else
                {
                    Helper.WriteError <JObject>(deleteResponse);
                }
            }
        }
Ejemplo n.º 21
0
        public override async Task <PayResult> PayResultNotify(
            IEnumerable <KeyValuePair <string, string> > query,
            IDictionary <string, string> header,
            IDictionary <string, string> form,
            Stream body)
        {
            var notifyResult = new PayResult()
            {
                Success = false
            };

            string xml = await body.ReadToStringAsync();

            if (xml.IsNullOrWhiteSpace())
            {
                notifyResult.Message = "微信支付回调,xml请求数据为空!";
                Logger.LogError(notifyResult.Message);
                return(notifyResult);
            }

            ResponseHandler  resHandler;
            OrderQueryResult result;

            try
            {
                // 获取微信回调数据
                // ResponseHandler读取body时没有seek,先seek下
                HttpContextAccessor.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin);
                resHandler = new ResponseHandler(HttpContextAccessor.HttpContext);

                Logger.LogInformation($"微信支付回调:" + xml);
                // 转换为对象
                result = new OrderQueryResult(xml);
            }
            catch (XmlException)
            {
                // xml格式异常直接不管
                notifyResult.Message = "微信支付回调,xml数据异常!";
                //logger.LogError(notifyResult.Message);
                return(notifyResult);
            }
            catch (Exception ex)
            {
                notifyResult.Message = "微信支付回调,数据解析错误!";
                Logger.LogError(ex, notifyResult.Message);
                return(notifyResult);
            }

            var secret = MchOptions.Value.Get(result.mch_id)?.MchKey;

            if (secret.IsNullOrWhiteSpace())
            {
                notifyResult.Message = $"微信支付回调,未找到商户密钥,mchId:{result.mch_id},result:{xml}";
                return(notifyResult);
            }

            // 设置appkey,用于验证参数签名
            resHandler.SetKey(secret);
            // 参数签名验证
            if (!resHandler.IsTenpaySign())
            {
                notifyResult.Message = $"微信支付回调:签名错误,result:{xml}";
                Logger.LogError(notifyResult.Message);
                return(notifyResult);
            }

            // 支付回调结果是否正确
            if (!result.IsReturnCodeSuccess() || !result.IsResultCodeSuccess())
            {
                notifyResult.Message = $"微信支付回调,支付失败:return error,result:{xml}";
                Logger.LogError(notifyResult.Message);
                return(notifyResult);
            }

            notifyResult.Success       = true;
            notifyResult.RealPayAmount = notifyResult.Amount = result.total_fee.ConvertTo <int>();
            notifyResult.LocalTradeNo  = result.out_trade_no;
            notifyResult.TransactionId = result.transaction_id;
            notifyResult.Attach        = result.attach;
            notifyResult.TraderId      = result.openid;
            notifyResult.PayData       = xml;
            notifyResult.MchId         = result.mch_id;
            notifyResult.AppId         = result.appid;

            return(await Task.FromResult(notifyResult));
        }
Ejemplo n.º 22
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0 ||
                res["Money"] == null || res["Money"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid = res["UID"].ToString().Trim();
                int.TryParse(res["PayWay"].ToString().Trim(), out payway);
                cacheKey += uid;
                decimal.TryParse(res["Money"].ToString().Trim(), out money);

                //在充值时进行身份验证
                UserFinancialManager ufm  = new UserFinancialManager();
                UserInfoManager      uim  = new UserInfoManager();
                Hashtable            user = uim.GetUserInfoByUserID(uid);
                if (user == null || user.Keys.Count <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员"));
                }
                else
                {
                    //验证用户是否经过身份认证
                    if ("4".CompareTo(user["REALNAMECERTIFICATION"].ToString()) != 0)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未完成实名认证,请完成实名认证后重试"));
                    }
                    //验证用户状态是否有效
                    if ("0".CompareTo(user["USERSTATE"].ToString()) == 0)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已被禁用无法充值"));
                    }
                }
                //----------------------------------------------------------------------------------

                #region 检测前一笔未确认支付交易是否成功,成功则调用支付成功业务逻辑

                Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Recharge);
                if (financial_ht != null && financial_ht.Keys.Count > 0)
                {
                    string order_payid  = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID");
                    string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay");
                    if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString())
                    {
                        WxOrderQuery     orderQuery  = new WxOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.WeixinPay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.RechargeCallBack(hashuf);
                            }
                        }
                    }
                    else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString())
                    {
                        AlipayOrderQuery orderQuery  = new AlipayOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.Alipay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.RechargeCallBack(hashuf);
                            }
                        }
                    }
                }

                #endregion

                webRoot         = SiteHelper.GetWebRoot();
                weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/recharge_notify_url.aspx");
                alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/recharge_notify_url.aspx");

                string result = "";
                ICache cache  = null;
                switch (payway)
                {
                case 1:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("充值支付宝支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = AliPay(uid, money);
                    break;

                case 2:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("充值微信支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = WxPay(uid, money);
                    break;

                default:
                    break;
                }
                return(result);
            }
        }
Ejemplo n.º 23
0
        protected void Save_Click(object sender, EventArgs e)
        {
            try
            {
                bool      result         = false;
                int       returnType     = 0;
                Hashtable ht             = depositManager.GetDataByID(_key);
                string    depositMoney   = SiteHelper.GetHashTableValueByKey(ht, "DepositMoney");
                string    depositPayWay  = SiteHelper.GetHashTableValueByKey(ht, "DepositPayWay");
                string    depositTradeNo = SiteHelper.GetHashTableValueByKey(ht, "DepositTradeNo");
                string    realName       = SiteHelper.GetHashTableValueByKey(ht, "RealName");
                string    bindPhone      = SiteHelper.GetHashTableValueByKey(ht, "BindPhone");
                decimal   refundMoney    = 0.00m;
                refundMoney = decimal.Parse(depositMoney);
                if (State.Value == "2")
                {
                    string errmsg = "";
                    string code   = "";
                    if (depositPayWay == "1")
                    {
                        //支付宝退款
                        AlipayRefund alipay = new AlipayRefund();
                        result = alipay.Refund2(depositTradeNo, refundMoney, out errmsg, out code);
                        Logger.Warn(string.Format("{0},{1}支付宝退款:{2}", realName, bindPhone, errmsg));
                        if (!result && "40004".Equals(code))
                        {
                            //ShowMsgHelper.Alert_Error("支付宝退款失败:" + errmsg + "!");
                            //return;

                            //判断是否保存了buyer_id
                            string buyer_id = SiteHelper.GetHashTableValueByKey(ht, "buyer_id");
                            if (string.IsNullOrEmpty(buyer_id))
                            {
                                //buyer_id为空需要查询订单
                                AlipayOrderQuery orderQuery  = new AlipayOrderQuery();
                                OrderQueryResult queryResult = orderQuery.QueryByTradeNO(depositTradeNo);
                                buyer_id = queryResult.buyer_user_id;
                            }

                            if (!string.IsNullOrEmpty(buyer_id))
                            {
                                //执行单笔转账到支付宝账户
                                result = alipay.Transfer(depositTradeNo, buyer_id, refundMoney, out errmsg);
                                Logger.Warn(string.Format("{0},{1}支付宝转账退款:{2}", realName, bindPhone, errmsg));
                                returnType = 1;
                                if (!result)
                                {
                                    ShowMsgHelper.Alert_Error("支付宝转账退款失败:" + errmsg + "!");
                                    return;
                                }
                            }
                        }
                    }
                    else if (depositPayWay == "2")
                    {
                        //微信退款
                        WxRefund wxpay = new WxRefund();
                        result = wxpay.refund2(depositTradeNo, refundMoney, out errmsg);
                        if (!result)
                        {
                            ShowMsgHelper.Alert_Error("微信退款失败:" + errmsg + "!");
                            return;
                        }
                    }
                    else if (depositPayWay == "5")
                    {
                        //微信公众号退款
                        api.weapp.pay.wxpay.WxRefund wxpay = new api.weapp.pay.wxpay.WxRefund();
                        result = wxpay.refund2(depositTradeNo, refundMoney, out errmsg);
                        if (!result)
                        {
                            ShowMsgHelper.Alert_Error("微信公众号退款失败:" + errmsg + "!");
                            return;
                        }
                    }
                }
                else
                {
                    result = true;
                }
                if (result)
                {
                    result = depositManager.HandleReturnDeposit(_key, State.Value, Remark.Text.Trim(), RequestSession.GetSessionUser().UserName.ToString(), returnType);
                    if (result)
                    {
                        ShowMsgHelper.AlertMsgNoFresh("操作成功!");
                    }
                    else
                    {
                        ShowMsgHelper.Alert_Error("操作失败!");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 24
0
        /// <summary>
        /// 查询订单
        /// </summary>
        /// <param name="trade_no"></param>
        /// <returns></returns>
        public OrderQueryResult QueryByTradeNO(string trade_no)
        {
            OrderQueryResult result = new OrderQueryResult();

            try
            {
                StringBuilder biz_content = new StringBuilder();
                biz_content.Append(@"{");
                biz_content.AppendFormat("\"trade_no\":\"{0}\"", trade_no);
                biz_content.Append(@"}");

                SortedDictionary <string, string> dicArray = new SortedDictionary <string, string>();
                dicArray.Add("app_id", Config.app_id);
                dicArray.Add("biz_content", biz_content.ToString());
                dicArray.Add("charset", charset);
                dicArray.Add("format", "JSON");
                dicArray.Add("method", method);
                dicArray.Add("sign_type", sign_type);
                dicArray.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                dicArray.Add("version", "1.0");
                //dicArray.Add("sign", );

                string sign_content = CreateLinkString(dicArray);
                string sign         = RSA.sign(sign_content, Config.private_key, "UTF-8", sign_type);
                dicArray.Add("sign", sign);

                string postDataStr    = CreateLinkStringUrlencode(dicArray);
                string responseString = HttpUtil.Get(https_url, postDataStr, "utf-8");

                JObject jsonObj = (JObject)JsonConvert.DeserializeObject(responseString);
                string  alipay_trade_query_response = jsonObj["alipay_trade_query_response"].ToString();

                Dictionary <string, string> dict1 = new Dictionary <string, string>();
                JavaScriptSerializer        jss   = new JavaScriptSerializer();
                dict1 = jss.Deserialize <Dictionary <string, string> >(alipay_trade_query_response);
                Notify aliNotify = new Notify();
                if (aliNotify.GetSignVeryfy(dict1, jsonObj["sign"].ToString()))
                {
                    AlipayQueryResponse query_response = Newtonsoft.Json.JsonConvert.DeserializeObject <AlipayQueryResponse>(alipay_trade_query_response);
                    if (query_response.code == "10000")
                    {
                        result.out_trade_no   = query_response.out_trade_no;
                        result.total_fee      = query_response.total_amount;
                        result.transaction_id = query_response.trade_no;
                        result.buyer_logon_id = query_response.buyer_logon_id;
                        result.buyer_user_id  = query_response.buyer_user_id;
                        string trade_state = query_response.trade_status;
                        result.trade_state = TradeStateEnum.OTHERS;
                        switch (trade_state)
                        {
                        case "TRADE_SUCCESS":
                            result.trade_state = TradeStateEnum.SUCCESS;
                            break;

                        case "WAIT_BUYER_PAY":
                            result.trade_state = TradeStateEnum.NOTPAY;
                            break;

                        case "TRADE_CLOSED":
                            result.trade_state = TradeStateEnum.CLOSED;
                            break;

                        default:
                            break;
                        }
                    }
                    else if (query_response.code == "40004")
                    {
                        if (query_response.sub_code == "ACQ.TRADE_NOT_EXIST")
                        {
                            result.trade_state = TradeStateEnum.NOTEXIST;
                        }
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Ejemplo n.º 25
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid = res["UID"].ToString().Trim();
                int.TryParse(res["PayWay"].ToString().Trim(), out payway);
                cacheKey += uid;
                UserFinancialManager ufm            = new UserFinancialManager();
                SysSettingManager    settingManager = new SysSettingManager();
                string depositMoney = settingManager.GetValueByKey("GoldDepositAmount");
                decimal.TryParse(depositMoney, out money);

                //在充值时进行身份验证
                UserInfoManager uim  = new UserInfoManager();
                Hashtable       user = uim.GetUserInfoByUserID(uid);
                if (user == null || user.Keys.Count <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员"));
                }
                //----------------------------------------------------------------------------------

                //判断用户是否已缴纳押金
                decimal deposit = 0.00m;
                decimal.TryParse(user["DEPOSIT"].ToString(), out deposit);
                if (deposit > 0.00m)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金"));
                }
                //-------------------------------------------------------------------------------------

                #region 检测前一笔未确认支付交易是否成功,成功则禁止重复支付

                Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Deposit);
                if (financial_ht != null && financial_ht.Keys.Count > 0)
                {
                    //是否添加前一笔和当前时间差判断逻辑??????
                    string order_payid  = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID");
                    string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay");
                    if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString())
                    {
                        WxOrderQuery     orderQuery  = new WxOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.WeixinPay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.DepositCallBack(hashuf);
                            }
                            if (isSuccess)
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金"));
                            }
                        }
                    }
                    else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString())
                    {
                        AlipayOrderQuery orderQuery  = new AlipayOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.Alipay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.DepositCallBack(hashuf);
                            }
                            if (isSuccess)
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金"));
                            }
                        }
                    }
                }

                #endregion

                webRoot         = SiteHelper.GetWebRoot();
                weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/deposit_notify_url.aspx");
                alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/deposit_notify_url.aspx");

                string result = "";
                ICache cache  = null;
                switch (payway)
                {
                case 1:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("保证金支付宝支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = AliPay(uid, money);
                    break;

                case 2:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("保证金微信支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = WxPay(uid, money);
                    break;

                default:
                    break;
                }
                return(result);
            }
        }
Ejemplo n.º 26
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0 ||
                res["OrderNum"] == null || res["OrderNum"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid = res["UID"].ToString().Trim();
                int.TryParse(res["PayWay"].ToString().Trim(), out payway);
                cacheKey += uid;
                string ordernum                    = res["OrderNum"].ToString().Trim();
                string couponID                    = "";
                UserFinancialManager ufm           = new UserFinancialManager();
                UserInfoManager      uim           = new UserInfoManager();
                OrdersManager        om            = new OrdersManager();
                UserCouponManager    couponManager = new UserCouponManager();
                Hashtable            order_ht      = om.GetOrderInfoByNum(ordernum);
                if (order_ht == null)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到订单数据,支付失败"));
                }
                int     payState   = int.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "PayState"));
                int     orderState = int.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "OrderState"));
                decimal payMoney   = decimal.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "PayMoney"));
                decimal totalMoney = decimal.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "TotalMoney"));

                if (OrderState.UnPay.GetHashCode() != orderState)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "订单支付失败"));
                }
                if (totalMoney <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "未产生支付费用,无需进行支付操作"));
                }

                #region 检测前一笔未确认支付交易是否成功,成功则禁止重复支付

                Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Consumption);
                if (financial_ht != null && financial_ht.Keys.Count > 0)
                {
                    string order_num    = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum");
                    string order_payid  = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID");
                    string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay");
                    if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString())
                    {
                        WxOrderQuery     orderQuery  = new WxOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["OrderNum"] = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.WeixinPay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.OrderPayCallback(hashuf);
                            }
                            if (isSuccess && ordernum == order_num)
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前订单已成功支付"));
                            }
                        }
                    }
                    else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString())
                    {
                        AlipayOrderQuery orderQuery  = new AlipayOrderQuery();
                        OrderQueryResult queryResult = orderQuery.Query(order_payid);
                        if (queryResult.trade_state == TradeStateEnum.SUCCESS)
                        {
                            Hashtable hashuf = new Hashtable();
                            hashuf["ID"]       = SiteHelper.GetHashTableValueByKey(financial_ht, "ID");
                            hashuf["OrderNum"] = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum");
                            hashuf["UserID"]   = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID");
                            hashuf["State"]    = UserFinancialState.Effect.GetHashCode();
                            hashuf["TradeNo"]  = queryResult.transaction_id;
                            hashuf["TotalFee"] = queryResult.total_fee;
                            hashuf["PayWay"]   = UserFinancialOperatorWay.Alipay;
                            decimal changesAmount = 0.00m;
                            decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount);
                            bool isSuccess = false;
                            if (Math.Abs(changesAmount) == queryResult.total_fee)
                            {
                                isSuccess = uim.OrderPayCallback(hashuf);
                            }
                            if (isSuccess && ordernum == order_num)
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前订单已成功支付"));
                            }
                        }
                    }
                }

                #endregion

                if (res["CouponID"] != null && res["CouponID"].ToString().Trim().Length > 0)
                {
                    couponID = res["CouponID"].ToString().Trim();
                    Hashtable coupon_ht = couponManager.GetDataByID(couponID);
                    if (coupon_ht == null || coupon_ht.Keys.Count == 0)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败"));
                    }
                    string  orderid     = SiteHelper.GetHashTableValueByKey(coupon_ht, "OrderID");
                    string  begintime   = SiteHelper.GetHashTableValueByKey(coupon_ht, "BeginTime");
                    string  endtime     = SiteHelper.GetHashTableValueByKey(coupon_ht, "EndTime");
                    string  userid      = SiteHelper.GetHashTableValueByKey(coupon_ht, "UserID");
                    decimal couponMoney = 0.00m;
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(coupon_ht, "Money"), out couponMoney);
                    if (userid != uid)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败"));
                    }
                    if (!string.IsNullOrEmpty(orderid))
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败"));
                    }
                    if (DateTime.Parse(begintime) > DateTime.Now || DateTime.Parse(endtime) < DateTime.Now)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败"));
                    }
                    if (couponMoney > totalMoney)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败"));
                    }

                    Hashtable update_order_ht = new Hashtable();
                    update_order_ht["CouponID"]    = couponID;
                    update_order_ht["CouponMoney"] = couponMoney;
                    update_order_ht["PayMoney"]    = totalMoney - couponMoney;
                    bool rrr = om.AddOrEditOrdersInfo(update_order_ht, SiteHelper.GetHashTableValueByKey(order_ht, "ID"));
                }

                webRoot         = SiteHelper.GetWebRoot();
                weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/order_notify_url.aspx");
                alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/order_notify_url.aspx");

                string result = "";
                ICache cache  = null;
                switch (payway)
                {
                case 1:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("订单支付宝支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = AliPay(uid, ordernum);
                    break;

                case 2:
                    cache = CacheFactory.GetCache();
                    if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                    {
                        cache.Dispose();
                        Logger.Error("订单微信支付5秒内," + uid);
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击"));
                    }
                    cache.Dispose();
                    result = WxPay(uid, ordernum);
                    break;

                case 3:
                    result = BalancePay(uid, ordernum);
                    break;

                default:
                    break;
                }
                return(result);
            }
        }
Ejemplo n.º 27
0
        protected virtual async Task <List <Overture.ServiceModel.Orders.Order> > GetOrders(OrderQueryResult orderQueryResult,
                                                                                            GetCustomerOrdersParam param)
        {
            var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam
            {
                OrderNumber = order.OrderNumber,
                Scope       = param.Scope
            }));

            var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false);

            return(orders.ToList());
        }