Ejemplo n.º 1
0
        public void TestCancelParkedOrder()
        {
            var insertParkedOrderCallback = new DataCallback <ParkedOrderInfo>((DataResult <ParkedOrderInfo> result) =>
            {
                ParkedOrderInfo pParkedOrder = new ParkedOrderInfo();
                pParkedOrder = result.Result;
                if (result.IsSuccess)
                {
                    var cancelParkedOrderCallback = new DataCallback <ParkedOrderInfo>((DataResult <ParkedOrderInfo> cancelParkedOrderResult) =>
                    {
                        pParkedOrder = cancelParkedOrderResult.Result;
                        if (cancelParkedOrderResult.IsSuccess)
                        {
                            Console.WriteLine("预埋撤单录入成功,ParkedOrderActionID:{0}", pParkedOrder.ParkedOrderActionID);
                        }
                        else
                        {
                            Console.WriteLine("预埋撤单录入失败:{0}", cancelParkedOrderResult.Error);
                        }
                        Assert.IsTrue(cancelParkedOrderResult.IsSuccess);
                    });
                    CancelOrderParameter fieldAction = new CancelOrderParameter();
                    fieldAction.ActionFlag           = ActionFlag.Delete;
                    fieldAction.InstrumentID         = pParkedOrder.InstrumentID;
                    fieldAction.OrderRef             = pParkedOrder.OrderRef;
                    fieldAction.ExchangeID           = pParkedOrder.ExchangeID;
                    fieldAction.OrderSysID           = new string('\0', 21 - pParkedOrder.OrderSysID.Length) + pParkedOrder.OrderSysID;

                    _adapter.CancelParkedOrder(cancelParkedOrderCallback, fieldAction);
                    Thread.Sleep(50);
                }
                else
                {
                    Console.WriteLine("预埋单录入失败:", result.Error);
                }
                Assert.IsTrue(result.IsSuccess);
            });
            OrderParameter field = new OrderParameter();

            field.InstrumentID        = "TF1809";
            field.OrderRef            = "1";
            field.Direction           = DirectionType.Buy;
            field.PriceType           = OrderPriceType.LimitPrice;
            field.OpenCloseFlag       = OpenCloseFlag.Open;
            field.HedgeFlag           = HedgeFlag.Speculation;
            field.Price               = 97.010M;
            field.Quantity            = 1;
            field.TimeCondition       = TimeConditionType.GFD;
            field.VolumeCondition     = VolumeConditionType.AV;
            field.MinVolume           = 1;
            field.ContingentCondition = ContingentConditionType.Immediately;
            field.ForceCloseReason    = ForceCloseReasonType.NotForceClose;
            field.IsAutoSuspend       = 0;
            field.UserForceClose      = 0;

            _adapter.InsertParkedOrder(insertParkedOrderCallback, field);
            Thread.Sleep(200);
        }
Ejemplo n.º 2
0
        public void TestCancelOrder()
        {
            var insertOrderCallback = new DataCallback <OrderInfo>((DataResult <OrderInfo> result) =>
            {
                OrderInfo orderInfo = new OrderInfo();
                orderInfo           = result.Result;
                if (result.IsSuccess)
                {
                    var cancelOrderCallback = new DataCallback <OrderInfo>((DataResult <OrderInfo> cancelOrderResult) =>
                    {
                        orderInfo = cancelOrderResult.Result;
                        if (cancelOrderResult.IsSuccess)
                        {
                            Console.WriteLine("撤单成功,OrderRef:{0}, InstrumentID:{1}", orderInfo.OrderRef, orderInfo.InstrumentID);
                        }
                        Assert.IsTrue(cancelOrderResult.IsSuccess);
                    });
                    CancelOrderParameter field = new CancelOrderParameter();
                    field.ActionFlag           = ActionFlag.Delete;
                    field.InstrumentID         = "TF1809";
                    field.OrderRef             = orderInfo.OrderRef;
                    field.ExchangeID           = orderInfo.ExchangeID;
                    field.OrderSysID           = new string('\0', 21 - orderInfo.OrderSysID.Length) + orderInfo.OrderSysID;

                    _adapter.CancelOrder(cancelOrderCallback, field);
                    Thread.Sleep(50);
                }
                Assert.IsTrue(result.IsSuccess);
            });
            OrderParameter order = new OrderParameter();

            order.InstrumentID        = "TF1809";
            order.OrderRef            = "1";
            order.Direction           = DirectionType.Buy;
            order.PriceType           = OrderPriceType.LimitPrice;
            order.OpenCloseFlag       = OpenCloseFlag.Open;
            order.HedgeFlag           = HedgeFlag.Speculation;
            order.Price               = 97.270M;
            order.Quantity            = 1;
            order.TimeCondition       = TimeConditionType.GFD;
            order.VolumeCondition     = VolumeConditionType.AV;
            order.MinVolume           = 1;
            order.ContingentCondition = ContingentConditionType.Immediately;
            order.ForceCloseReason    = ForceCloseReasonType.NotForceClose;
            order.IsAutoSuspend       = 0;
            order.UserForceClose      = 0;

            _adapter.InsertOrder(insertOrderCallback, order);
            Thread.Sleep(200);
        }
Ejemplo n.º 3
0
        public void CancelOrder(CancelOrderParameter parameter)
        {
            var dict = new Dictionary <string, object>();

            dict["order_id"] = parameter.OrderID;
            switch (parameter.Reason)
            {
            case CancelOrderReason.AddressError:
                dict["type"]   = 1;
                dict["reason"] = "不在配送范围内";
                break;

            case CancelOrderReason.Busy:
                dict["type"]   = 7;
                dict["reason"] = "餐厅太忙";
                break;

            case CancelOrderReason.CanNotContact:
                dict["type"]   = 8;
                dict["reason"] = "联系不上用户";
                break;

            case CancelOrderReason.CustomerCancel:
                dict["type"]   = 5;
                dict["reason"] = "用户取消订单";
                break;

            case CancelOrderReason.RepeatOrder:
                dict["type"]   = 6;
                dict["reason"] = "重复订单";
                break;

            case CancelOrderReason.SoldOut:
                dict["type"]   = 3;
                dict["reason"] = "美食已售完";
                break;

            case CancelOrderReason.StoreClosed:
                dict["type"]   = 2;
                dict["reason"] = "餐厅已打烊";
                break;

            default:
                dict["type"]   = -1;
                dict["reason"] = "其他";
                break;
            }
            Post("order.cancel", dict);
        }
Ejemplo n.º 4
0
        public void CancelOrder(CancelOrderParameter parameter)
        {
            var param = new Dictionary <string, object>();

            param["orderId"] = parameter.OrderID;
            switch (parameter.Reason)
            {
            case CancelOrderReason.AddressError:
                param["type"] = "distanceTooFar";
                break;

            case CancelOrderReason.Busy:
                param["type"] = "restaurantTooBusy";
                break;

            case CancelOrderReason.CanNotContact:
                param["type"] = "contactUserFailed";
                break;

            case CancelOrderReason.CustomerCancel:
                param["type"] = "forceRejectOrder";
                break;

            case CancelOrderReason.SoldOut:
                param["type"] = "foodSoldOut";
                break;

            case CancelOrderReason.StoreClosed:
                param["type"] = "restaurantClosed";
                break;

            default:
                param["type"] = "others";
                break;
            }
            var jsonObj = Post(parameter.Token, "eleme.order.cancelOrderLite", param);
        }
Ejemplo n.º 5
0
        public void CancelOrder(CancelOrderParameter parameter)
        {
            var postDict = new SortedDictionary <string, object>();

            postDict["appAuthToken"] = parameter.Token;
            postDict["charset"]      = "utf-8";
            postDict["timestamp"]    = (Helper.ConvertDateTimeInt(DateTime.Now)).ToString();
            postDict["orderId"]      = parameter.OrderID;
            //匹配原因
            switch (parameter.Reason)
            {
            case CancelOrderReason.AddressError:
                postDict["reasonCode"] = "2010";
                postDict["reason"]     = "地址无法配送";
                break;

            case CancelOrderReason.Busy:
                postDict["reasonCode"] = "2008";
                postDict["reason"]     = "店铺太忙";
                break;

            case CancelOrderReason.CanNotContact:
                postDict["reasonCode"] = "2012";
                postDict["reason"]     = "联系不上用户";
                break;

            case CancelOrderReason.CustomerCancel:
                postDict["reasonCode"] = "2006";
                postDict["reason"]     = "用户要求取消";
                break;

            case CancelOrderReason.DeliverDelay:
                postDict["reasonCode"] = "2004";
                postDict["reason"]     = "配送延迟";
                break;

            case CancelOrderReason.DeliverSlowly:
                postDict["reasonCode"] = "2015";
                postDict["reason"]     = "配送员送餐慢";
                break;

            case CancelOrderReason.LostFood:
                postDict["reasonCode"] = "2016";
                postDict["reason"]     = "配送员丢餐、少餐、餐洒";
                break;

            case CancelOrderReason.RepeatOrder:
                postDict["reasonCode"] = "2013";
                postDict["reason"]     = "重复订单";
                break;

            case CancelOrderReason.SoldOut:
                postDict["reasonCode"] = "2009";
                postDict["reason"]     = "商品已售完";
                break;

            case CancelOrderReason.StoreClosed:
                postDict["reasonCode"] = "2011";
                postDict["reason"]     = "店铺已打烊";
                break;

            case CancelOrderReason.TakeFoodSlowly:
                postDict["reasonCode"] = "2014";
                postDict["reason"]     = "配送员取餐慢";
                break;

            default:
                postDict["reasonCode"] = "2007";
                postDict["reason"]     = "其他原因";
                break;
            }

            postDict["sign"] = MeituanHelper.Sign(postDict, this.Config.SignKey);
            var result  = Helper.PostQueryString("http://api.open.cater.meituan.com/waimai/order/cancel", postDict, 8000);
            var jsonObj = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);

            Newtonsoft.Json.Linq.JToken errobj;
            if (jsonObj.TryGetValue("error", StringComparison.CurrentCultureIgnoreCase, out errobj))
            {
                throw new Exception(errobj.Value <string>("message"));
            }
            if (!string.Equals(jsonObj.Value <string>("data"), "ok", StringComparison.CurrentCultureIgnoreCase))
            {
                throw new Exception("发生错误");
            }
        }