protected void Page_Load(object sender, EventArgs e) { #region 签名验证 string date = System.Web.HttpContext.Current.Request.Headers.Get("Date"); string PartnerId = System.Web.HttpContext.Current.Request.Headers.Get("PartnerId"); string Authorization = System.Web.HttpContext.Current.Request.Headers.Get("Authorization"); string requestMethod = System.Web.HttpContext.Current.Request.HttpMethod; string URI = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath; //authorization 形式: "MWS" + " " + client + ":" + sign; //string mtSign = Authorization.Substring(Authorization.IndexOf(":") + 1); //string beforeSign = requestMethod + " " + URI + "\n" + "Wed, 06 May 2015 10:34:20 GMT"; string beforeSign = "POST /rhone/mtp/api/order/test/ba" + "\n" + "Wed, 06 May 2015 10:34:20 GMT"; string afterSign = new MeiTuanInter().GetSign(beforeSign); //判断签名是否正确 if (afterSign == "") { //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\MTlog.txt", "签名错误:mtSign-" + mtSign + " meSign-" + afterSign); Response.Write("签名正确:" + afterSign); return; } else { Response.Write("签名错误:" + afterSign + "::::" + afterSign); return; } #endregion // mlog.req_type = URI; // string actionResult = GetProductList(mlog); }
public ReturnResult SimulationMTGetDeal(string url, MtpOrderRefundedMessageRequestBody body) { ReturnResult result = new ReturnResult { IsSuccess = false, }; try { MtpOrderRefundedMessageRequest requestData = new MtpOrderRefundedMessageRequest { partnerId = agentinfo.mt_partnerId.ConvertTo <int>(0), 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 { MtpApiResponse responseBody = (MtpApiResponse)JsonConvert.DeserializeObject(responseStr, typeof(MtpApiResponse)); 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); }
protected void Page_Load(object sender, EventArgs e) { #region 记入日志表Meituan_reqlog string reqip = CommonFunc.GetRealIP(); Meituan_reqlog mlog = new Meituan_reqlog { id = 0, reqstr = _requestParam, subtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), respstr = "", resptime = "", code = "", describe = "", req_type = "", sendip = reqip, stockagentcompanyid = 0 }; int logid = new Meituan_reqlogData().EditReqlog(mlog); mlog.id = logid; #endregion string date = System.Web.HttpContext.Current.Request.Headers.Get("Date"); string PartnerId = System.Web.HttpContext.Current.Request.Headers.Get("PartnerId"); string Authorization = System.Web.HttpContext.Current.Request.Headers.Get("Authorization"); string requestMethod = System.Web.HttpContext.Current.Request.HttpMethod; string URI = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath; //authorization 形式: "MWS" + " " + client + ":" + sign; string mtSign = Authorization.Substring(Authorization.IndexOf(":") + 1); mlog.req_type = URI; agentinfo = new AgentCompanyData().GetAgentCompanyByMeituanPartnerId(PartnerId); #region 验证是否已经配置美团合作商信息 if (agentinfo == null) { var response = new PoiResponse(); response.partnerId = int.Parse(PartnerId); response.code = 300; response.describe = "分销尚未配置美团合作商信息(合作商PartnerId:" + PartnerId + ")"; string json = JsonConvert.SerializeObject(response); //把处理结果录入日志 mlog.respstr = json; mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mlog.code = response.code.ToString(); mlog.describe = response.describe; new Meituan_reqlogData().EditReqlog(mlog); LogHelper.RecordSelfLog("Error", "meituan", response.describe); Response.Write(json); return; } #endregion mlog.stockagentcompanyid = agentinfo.Id; #region 签名验证 string beforeSign = requestMethod + " " + URI + "\n" + date; string afterSign = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).GetSign(beforeSign); //判断签名是否正确 if (afterSign != mtSign) { var response = new PoiResponse(); response.partnerId = int.Parse(PartnerId); response.code = 300; response.describe = "签名验证失败"; string json = JsonConvert.SerializeObject(response); //把处理结果录入日志 mlog.respstr = json; mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mlog.code = response.code.ToString(); mlog.describe = response.describe; new Meituan_reqlogData().EditReqlog(mlog); LogHelper.RecordSelfLog("Error", "meituan", "拉取产品 签名错误 mtSign-" + mtSign + " meSign-" + afterSign); Response.Write(json); return; } #endregion string actionResult = GetPoiList(mlog); Response.Write(actionResult); }
public static void AsyncSend(string updateurl, string pno, int confirmnum, string confirmtime, int agentcomid, int comidd1, int validateticketlogid, int aorderid) { Agent_asyncsendlog log = new Agent_asyncsendlog { Id = 0, Pno = pno, Num = confirmnum, Sendtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), Confirmtime = DateTime.Parse(confirmtime), Issendsuc = 0,//0失败;1成功 Agentupdatestatus = (int)AgentUpdateStatus.Fail, Agentcomid = agentcomid, Comid = comidd1, Remark = "", Issecondsend = 0, Platform_req_seq = (1000000000 + agentcomid).ToString() + DateTime.Now.ToString("yyyyMMddhhssmm") + CommonFunc.CreateNum(6),//请求流水号 Request_content = "", Response_content = "", b2b_etcket_logid = validateticketlogid }; int inslog = new Agent_asyncsendlogData().EditLog(log); log.Id = inslog; try { //获得分销商信息 Agent_company agentinfo = new AgentCompanyData().GetAgentCompany(agentcomid); if (agentinfo != null) { string agent_updateurl = agentinfo.Agent_updateurl; #region 糯米分销 if (agentinfo.Agent_type == (int)AgentCompanyType.NuoMi)//糯米分销 { string re = new GetUrlData().HttpPost(updateurl, ""); XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode("{\"root\":" + re + "}"); XmlElement root = doc.DocumentElement; string info = root.SelectSingleNode("info").InnerText; //只要返回了数据,则是发送成功 log.Id = inslog; log.Issendsuc = 1; log.Request_content = updateurl; log.Response_content = re; if (info == "success") { string errCode = root.SelectSingleNode("res/errCode").InnerText;//分销商更新结果 if (errCode == "0") { log.Agentupdatestatus = (int)AgentUpdateStatus.Suc; new Agent_asyncsendlogData().EditLog(log); } else { log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); } } else { log.Remark = info; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); } } #endregion #region 驴妈妈 else if (agentinfo.Agent_type == (int)AgentCompanyType.Lvmama) { /*根据订单号得到分销商订单请求记录(当前需要得到原订单请求流水号)*/ Lvmama_reqlog LvmamaOrderCrateSucLog = new lvmama_reqlogData().GetLvmama_OrderpayreqlogBySelforderid(aorderid, "0"); if (LvmamaOrderCrateSucLog == null) { log.Remark = "根据订单号得到分销商订单请求记录失败";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return; } B2b_order morder = new B2bOrderData().GetOrderById(aorderid); if (morder == null) { log.Remark = "根据订单号查询订单失败.";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return; } string state = "1"; if (morder.U_num > confirmnum) { state = "2"; } else if (confirmnum == morder.U_num) { state = "3"; } else { state = "1"; } var lvmamadata = new LVMAMA_Data(agentinfo.Lvmama_uid, agentinfo.Lvmama_password, agentinfo.Lvmama_Apikey); //初始的时候没有sign值,等组合后下面生成加密文件 var hexiaojson = lvmamadata.usedticketscallback_json(LvmamaOrderCrateSucLog.mtorderid, agentinfo.Lvmama_uid, agentinfo.Lvmama_password, state, "", DateTime.Now.ToString("yyyyMMddHHmmss"), confirmnum.ToString()); #region 签名验证 string Md5Sign = lvmamadata.usedticketscallbackmd5(hexiaojson); string afterSign = lvmamadata.lumamasign(Md5Sign, agentinfo.Lvmama_Apikey); #endregion hexiaojson.sign = afterSign; var asynnoticecall = lvmamadata.useConsumeNotify(hexiaojson, agentinfo.Id); return; } #endregion #region 一般分销 else //一般分销 { #region 如果是美团分销,则向美团发送验证通知 Agent_company mtagentcompany = new AgentCompanyData().GetAgentCompany(agentinfo.Id); if (mtagentcompany != null) { if (mtagentcompany.mt_partnerId != "") { B2b_order ordermodel = new B2bOrderData().GetOrderById(aorderid); Meituan_reqlog meituanlogg = new Meituan_reqlogData().GetMt_OrderpayreqlogBySelforderid(ordermodel.Id, "200"); if (meituanlogg == null) { LogHelper.RecordSelfLog("Erro", "meituan", "美团验证通知发送失败:查询美团支付成功订单失败"); } else { #region 订单电子票使用情况 string all_pno = ""; //全部电子码 string keyong_pno = ""; //可用电子码 int buy_num = 0; int keyong_num = 0; int consume_num = 0; int tuipiao_num = ordermodel.Cancelnum; #endregion string meituancontent = "{" + "\"partnerId\": " + mtagentcompany.mt_partnerId + "," + "\"body\": " + "{" + "\"orderId\": " + meituanlogg.mtorderid + "," + "\"partnerOrderId\": \"" + aorderid + "\"," + "\"quantity\": " + ordermodel.U_num + "," + "\"usedQuantity\": " + confirmnum + "," + "\"refundedQuantity\": " + tuipiao_num + "," + "\"voucherList\": " + "[{" + "\"voucher\":\"" + pno + "\"," + "\"voucherPics\":\"\"," + "\"voucherInvalidTime\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\"," + "\"quantity\":" + confirmnum + "," + "\"status\":1" + //4.10 凭证码状态:0 未使用;1 已使用;2 已退款;3 已废弃 对应的门票还未消费,但是此凭证码作废了 "}]" + "}" + "}"; OrderConsumeNotice mrequest = (OrderConsumeNotice)JsonConvert.DeserializeObject(meituancontent, typeof(OrderConsumeNotice)); ETS2.PM.Service.Meituan.Data.ReturnResult r = new MeiTuanInter(mtagentcompany.mt_partnerId, mtagentcompany.mt_secret, mtagentcompany.mt_client).ConsumeNotify(mrequest, mtagentcompany.Id); } } } #endregion /*根据订单号得到分销商订单请求记录(当前需要得到原订单请求流水号)*/ List <Agent_requestlog> listagent_rlog = new Agent_requestlogData().GetAgent_requestlogByOrdernum(aorderid.ToString(), "add_order", "1"); if (listagent_rlog == null) { log.Remark = "根据订单号得到分销商订单请求记录失败";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return; } if (listagent_rlog.Count == 0) { log.Remark = "根据订单号得到分销商订单请求记录失败.";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return; } /*验证通知发送内容*/ string sbuilder = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<business_trans>" + "<request_type>sync_order</request_type>" + //<!--验证同步--> "<req_seq>{0}</req_seq>" + //<!--原订单请求流水号--> "<platform_req_seq>{1}</platform_req_seq>" + //<!--平台请求流水号--> "<order>" + //<!--订单信息--> "<code>{5}</code>" + //<!-- 验证电子码 y--> "<order_num>{2}</order_num>" + //<!-- 订单号 y--> "<num>{3}</num>" + //<!-- 使用张数 --> "<use_time>{4}</use_time>" + //<!-- 使用时间 --> "</order>" + "</business_trans>", listagent_rlog[0].Req_seq, log.Platform_req_seq, aorderid, confirmnum, CommonFunc.ConvertDateTimeInt(DateTime.Parse(confirmtime)), pno); #region 分销通知发送方式post if (agentinfo.inter_sendmethod.ToLower() == "post") { string re = ""; if (agentcomid == 6490) { re = new GetUrlData().HttpPost(updateurl, sbuilder); updateurl += "?xml=" + sbuilder;//只为记录 } else { updateurl += "?xml=" + sbuilder; re = new GetUrlData().HttpPost(updateurl, ""); } //只要返回了数据,则是发送成功 log.Id = inslog; log.Issendsuc = 1; log.Request_content = updateurl; log.Response_content = re; log.Remark = re.Replace("'", "''");//单引号替换为'',双引号不用处理; if (re.Length >= 7) { re = re.Substring(0, 7); } if (re == "success") { log.Agentupdatestatus = (int)AgentUpdateStatus.Suc; new Agent_asyncsendlogData().EditLog(log); } else { log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); } } #endregion #region 分销通知发送方式get else { if (updateurl.IndexOf('?') > -1) { updateurl += "&xml=" + sbuilder; } else { updateurl += "?xml=" + sbuilder; } string re = new GetUrlData().HttpGet(updateurl); //只要返回了数据,则是发送成功 log.Id = inslog; log.Issendsuc = 1; log.Request_content = updateurl; log.Response_content = re; log.Remark = re.Replace("'", "''");//单引号替换为'',双引号不用处理; if (re.Length >= 7) { re = re.Substring(0, 7); } if (re == "success") { log.Agentupdatestatus = (int)AgentUpdateStatus.Suc; new Agent_asyncsendlogData().EditLog(log); } else { log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); } } #endregion } #endregion } else { log.Remark = "分销商获取失败"; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); } } catch (Exception e) { log.Id = inslog; log.Remark = e.Message.Replace("'", "''");//单引号替换为'',双引号不用处理 new Agent_asyncsendlogData().EditLog(log); } }