public string AsyncSend(Agent_asyncsendlog log1) { lock (lockobj) { Agent_asyncsendlog log = new Agent_asyncsendlog { Id = 0, Pno = log1.Pno, Num = log1.Num, Sendtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), Confirmtime = log1.Confirmtime, Issendsuc = 0,//0失败;1成功 Agentupdatestatus = (int)AgentUpdateStatus.Fail, Agentcomid = log1.Agentcomid, Comid = log1.Comid, Remark = "", Issecondsend = 1, Platform_req_seq = log1.Platform_req_seq,//平台流水号,同一次验证的平台流水号相同,分销商根据平台流水号判断是否是同一次验证 Request_content = "", Response_content = "", b2b_etcket_logid = log1.b2b_etcket_logid }; int inslog = new Agent_asyncsendlogData().EditLog(log); log.Id = inslog; try { var eticketinfo = new B2bEticketData().GetEticketDetail(log1.Pno); if (eticketinfo.Agent_id > 0)//分销商电子票,需要发送验证同步请求 { //获得分销商信息 Agent_company agentinfo = new AgentCompanyData().GetAgentCompany(log1.Agentcomid); if (agentinfo != null) { string agent_updateurl = agentinfo.Agent_updateurl; #region 糯米分销 if (agentinfo.Agent_type == (int)AgentCompanyType.NuoMi)//糯米分销 { //查询站外码状态 string username = agentinfo.Agent_auth_username; //百度糯米用户名 string token = agentinfo.Agent_auth_token; //百度糯米token string code = eticketinfo.Pno; //券码 string bindcomname = agentinfo.Agent_bindcomname; //供应商名称 string updateurl = agent_updateurl + "?auth={\"userName\":\"" + username + "\",\"token\":\"" + token + "\"}&code=" + code + "&userName="******"&dealId=&phone=";; 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); return("糯米成功"); } else { log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return("糯米失败:" + log.Agentupdatestatus); } } else { log.Remark = info; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return("糯米失败:" + log.Remark); } } #endregion #region 一般分销推送验证同步请求 else { //一般分销推送验证同步请求 if (agent_updateurl.Trim() == "" || agentinfo.Inter_deskey == "") { log.Remark = "分销商验证同步通知或秘钥没提供";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return(log.Remark); } if (eticketinfo.Oid == 0) { log.Remark = "电子票对应的订单号为0";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return(log.Remark); } //a订单:原分销向指定商户提交的订单;b订单:指定商户下的绑定分销向拥有产品的商户提交的订单 //电子票表中记录的Oid是b订单 //判断b订单 是否 属于某个a订单 B2b_order loldorder = new B2bOrderData().GetOldorderBybindingId(eticketinfo.Oid); if (loldorder != null) { eticketinfo.Oid = loldorder.Id; } /*根据订单号得到分销商订单请求记录(当前需要得到原订单请求流水号)*/ List <Agent_requestlog> listagent_rlog = new Agent_requestlogData().GetAgent_requestlogByOrdernum(eticketinfo.Oid.ToString(), "add_order", "1"); if (listagent_rlog == null) { log.Remark = "根据订单号得到分销商订单请求记录失败";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return(log.Remark); } if (listagent_rlog.Count == 0) { log.Remark = "根据订单号得到分销商订单请求记录失败.";//单引号替换为'',双引号不用处理; log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return(log.Remark); } /*验证通知发送内容*/ 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>" + //<!--订单信息--> "<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, eticketinfo.Oid, log.Num, ConvertDateTimeInt(log.Confirmtime)); string updateurl = agent_updateurl + "?xml=" + sbuilder; string 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); return("成功"); } else { log.Agentupdatestatus = (int)AgentUpdateStatus.Fail; new Agent_asyncsendlogData().EditLog(log); return(re); } } #endregion } else { return("分销商信息获取失败"); } } else { return("直销订单无需发送验证通知"); } } catch (Exception e) { log.Id = inslog; log.Remark = e.Message.Replace("'", "''");//单引号替换为'',双引号不用处理 new Agent_asyncsendlogData().EditLog(log); return(log.Remark); } } }
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 //一般分销 { /*根据订单号得到分销商订单请求记录(当前需要得到原订单请求流水号)*/ 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); } }
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); } }