public ReturnResult SimulationMTGetDeal(string url, OrderCancelRequestBody body) { ReturnResult result = new ReturnResult { IsSuccess = false, }; try { OrderCancelRequest requestData = new OrderCancelRequest { partnerId = agentinfo.mt_partnerId, body = body }; var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData)); if (string.IsNullOrEmpty(responseStr)) { result.Message = "返回数据为空"; } else { OrderCancelResponse responseBody = (OrderCancelResponse)JsonConvert.DeserializeObject(responseStr, typeof(OrderCancelResponse)); if (responseBody.code == 200) { result.IsSuccess = true; result.Message = JsonConvert.SerializeObject(responseBody); } else { result.Message = responseBody.describe; } } } catch (Exception ex) { result.Message = "异常" + ex.Message; } return(result); }
private string Cancel_order(Agent_requestlog reqlog, OrderCancelRequestBody body, string organization, Meituan_reqlog mlog) { var response = new OrderCancelResponse(); response.partnerId = int.Parse(agentinfo.mt_partnerId); string mtorderid = body.orderId.ToString(); string order_num = body.partnerOrderId; string num = body.refundQuantity.ToString(); mlog.mtorderid = mtorderid; mlog.ordernum = order_num; #region 条件判断 if (order_num.ConvertTo <int>(0) == 0) { response.code = 699; response.describe = "订单号格式有误"; return(EditMTlog_Err(response, mlog, reqlog)); } if (num.ConvertTo <int>(0) == 0) { response.code = 606; response.describe = "退票张数格式有误"; return(EditMTlog_Err(response, mlog, reqlog)); } //判断订单是否是当前分销的订单 bool isselforder = new Agent_requestlogData().Getisselforder(organization, order_num); if (isselforder == false) { response.code = 699; response.describe = "订单并非此分销的订单"; return(EditMTlog_Err(response, mlog, reqlog)); } #endregion B2b_order morder = new B2bOrderData().GetOrderById(order_num.ConvertTo <int>(0)); if (morder != null) { if (morder.Pro_id > 0) { B2b_com_pro pro = new B2bComProData().GetProById(morder.Pro_id.ToString()); if (pro == null) { response.code = 607; response.describe = "产品不存在"; return(EditMTlog_Err(response, mlog, reqlog)); } else { if (pro.Source_type == 2)//产品来源:1.系统自动生成2.倒码产品 { response.code = 607; response.describe = "倒码产品不支持接口退票"; return(EditMTlog_Err(response, mlog, reqlog)); } else { //得到订单的验证方式:0(一码多验);1(一码一验), #region 一码多验 退票 按订单号退票,或者外部接口订单 if (morder.yanzheng_method == 0 || pro.Source_type == 3) { string data = OrderJsonData.QuitOrder(pro.Com_id, order_num.ConvertTo <int>(0), pro.Id, num.ConvertTo <int>(0), "分销外部接口退票"); XmlDocument retdoc = (XmlDocument)JsonConvert.DeserializeXmlNode("{\"root\":" + data + "}"); XmlElement retroot = retdoc.DocumentElement; string type = retroot.SelectSingleNode("type").InnerText; string msg = retroot.SelectSingleNode("msg").InnerText; if (type == "100")//取消订单成功 { response.code = 200; response.describe = "success"; response.body = new OrderCancelResponseBody { orderId = body.orderId, refundId = body.refundId, partnerOrderId = body.partnerOrderId, requestTime = reqlog.Request_time.ToString("yyyy-MM-dd HH:mm:ss"), responseTime = reqlog.Return_time.ToString("yyyy-MM-dd HH:mm:ss") }; reqlog.Ordernum = order_num; reqlog.Is_dealsuc = 1; return(EditMTlog_Err(response, mlog, reqlog)); } else//取消订单失败 { response.code = 606; response.describe = msg; return(EditMTlog_Err(response, mlog, reqlog)); } } #endregion #region 一码一验 ,或非接口产品 else { response.code = 604; response.describe = "订单验码方式不支持"; return(EditMTlog_Err(response, mlog, reqlog)); } #endregion } } } else { response.code = 699; response.describe = "订单中产品不存在"; return(EditMTlog_Err(response, mlog, reqlog)); } } else { response.code = 699; response.describe = "订单不存在"; return(EditMTlog_Err(response, mlog, reqlog)); } }
/// 订单退票 public string Getorderrefund(Meituan_reqlog mlog) { var response = new OrderCancelResponse(); response.partnerId = int.Parse(agentinfo.mt_partnerId); try { int organization = agentinfo.Id; #region 把分销商发送过来的请求记入数据库日志表2 agent_requestlog Agent_requestlog reqlog = new Agent_requestlog() { Id = 0, Organization = organization, Encode_requeststr = "", Decode_requeststr = _requestParam, Request_time = DateTime.Now, Encode_returnstr = "", Decode_returnstr = "", Return_time = DateTime.Parse("1970-01-01 00:00:00"), Errmsg = "", Request_type = "cancel_order", Req_seq = "", Ordernum = "", Is_dealsuc = 0, Is_second_receivereq = 0, Request_ip = CommonFunc.GetRealIP() }; int reqlogid = new Agent_requestlogData().Editagent_reqlog(reqlog); reqlog.Id = reqlogid; #endregion var data = JsonConvert.DeserializeObject <OrderCancelRequest>(_requestParam); if (data.body == null) { response.code = 699; response.describe = "数据解析失败"; return(EditMTlog_Err(response, mlog, reqlog)); } else { OrderCancelRequestBody body = data.body; string mtorderid = body.orderId.ToString(); string order_num = body.partnerOrderId; int num = body.refundQuantity; //日志表2 判断是否是二次发送相同的请求 int is_secondreq = new Agent_requestlogData().Is_secondreq(organization.ToString(), mtorderid, reqlog.Request_type); #region 把发送的请求类型,请求流水号,订单号,是否是二次发送相同的请求录入数据库 日志表2 reqlog.Req_seq = mtorderid; reqlog.Ordernum = order_num; reqlog.Is_second_receivereq = is_secondreq; new Agent_requestlogData().Editagent_reqlog(reqlog); #endregion #region 编辑日志表1 mlog.mtorderid = mtorderid; mlog.ordernum = order_num; mlog.issecond_req = is_secondreq; new Meituan_reqlogData().EditReqlog(mlog); #endregion if (is_secondreq == 1) { //获取处理成功的请求信息:如果没有则重新操作 Agent_requestlog suclog = new Agent_requestlogData().GetAgent_cancelorderlogByReq_seq(organization.ToString(), mtorderid, 1); if (suclog != null) { //return suclog.Decode_returnstr; response = (OrderCancelResponse)JsonConvert.DeserializeObject(suclog.Decode_returnstr, typeof(OrderCancelResponse)); reqlog.Is_dealsuc = 1; //reqlog.Ordernum = suclog.Ordernum; mlog.ordernum = suclog.Ordernum; return(EditMTlog_Err(response, mlog, reqlog)); } else { return(Cancel_order(reqlog, body, organization.ToString(), mlog)); } } else { return(Cancel_order(reqlog, body, organization.ToString(), mlog)); } } } catch (Exception ex) { response.code = 699; response.describe = "异常错误"; return(EditMTlog_Err(response, mlog, null)); } }