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); }
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); }
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); }
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); }
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("发生错误"); } }