/// <summary> /// 检查支付宝退款是否成功 /// </summary> private void IsAlipayRefund() { string OrderId = Utils.GetFormValue(this.CancleOrder_hidOrderId.UniqueID);//订单ID //根据ID获取订单明细 EyouSoft.IBLL.TicketStructure.ITicketOrder OrderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); orderInfo = OrderBll.GetOrderInfoById(OrderId); //判断是否有当前订单内容 if (orderInfo == null)//没有 { //输出提示信息 Utils.ResponseMeg(false, "当前订单不存在"); } string batchno = Utils.GetQueryStringValue("batchno");//退款批次号 //根据订单ID,批次号,获取 拒绝出票退款请求 记录 IList <EyouSoft.Model.TicketStructure.TicketPay> PayList = OrderBll.GetPayList(orderInfo.OrderId, EyouSoft.Model.TicketStructure.ItemType.平台到采购商_订单, string.Empty, batchno); EyouSoft.Model.TicketStructure.TicketPay payModel = null;//支付记录 //判断该请求交易 是否存在 if (PayList != null && PayList.Count > 0)//存在 { payModel = PayList[0]; //判断交易 是否成功 if (payModel.PayState == EyouSoft.Model.TicketStructure.PayState.交易完成) { Utils.ResponseMeg(true, "款项已经成功退到采购商帐户中"); } else if (payModel.PayState == EyouSoft.Model.TicketStructure.PayState.交易失败) { Utils.ResponseMeg(false, "退款失败(退款错误码:" + payModel.Remark + "),请稍候再试"); } else if (payModel.PayState == EyouSoft.Model.TicketStructure.PayState.支付接口正在处理) { Response.Clear(); Response.Write(string.Format("{{success:'1',message:'支付接口正在处理中...',search:'{0}'}}", "1")); Response.End(); } else { Utils.ResponseMeg(false, "退款请求提交失败,请稍候再试"); } } else//不存在 { Utils.ResponseMeg(false, "退款请求不存在"); } }
protected void Page_Load(object sender, EventArgs e) { order_no = Utils.GetQueryStringValue("order_no"); total_fee = Utils.GetQueryStringValue("total_fee"); proName = string.Format("同业114机票平台(订单号:{0})", order_no); EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo info = orderBll.GetOrderInfoByNo(order_no); orderid = info.OrderId; if (info.FreightType == EyouSoft.Model.TicketStructure.FreightType.单程) { proDetail = string.Format("订单号:{0}/航程信息:单程 {1}/{2}至{3}/", order_no, info.LeaveTime.ToString("yyyy-MM-dd"), info.HomeCityName, info.DestCityName); } else { proDetail = string.Format("订单号:{0}/航程信息:去程 {1}/{2}至{3}/回程 {4}/{5}-{6}", order_no, info.LeaveTime.ToString("yyyy-MM-dd"), info.HomeCityName, info.DestCityName, info.ReturnTime.ToString("yyyy-MM-dd"), info.DestCityName, info.HomeCityName); } resultMess = Utils.GetQueryStringValue("result") == "1" ? "交易成功" : "交易失败"; }
protected void Page_Load(object sender, EventArgs e) { //密钥 string key = TenpayParameters.Key; //创建PayResponseHandler实例 PayResponseHandler resHandler = new PayResponseHandler(Context); resHandler.setKey(key); //判断签名 if (resHandler.isTenpaySign()) { //交易单号 string trade_no = resHandler.getParameter("transaction_id"); //金额金额,以分为单位 decimal total_fee = Convert.ToDecimal(resHandler.getParameter("total_fee")) / 100; //支付结果 string pay_result = resHandler.getParameter("pay_result"); //订单号 string order_no = resHandler.getParameter("sp_billno"); //支付账号 string buyer_email = ""; EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); string sWord = "Notify_URL:trade_no=" + trade_no + "\n total_fee:sign=" + total_fee + "&order_no=" + order_no + ""; IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList("", EyouSoft.Model.TicketStructure.ItemType.供应商付款到平台_购买运价, order_no, ""); if ("0".Equals(pay_result)) { //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { if (payList[0].PayState != EyouSoft.Model.TicketStructure.PayState.交易完成) { EyouSoft.BLL.TicketStructure.FreightBuyLog.CreateInstance().PayAfter(trade_no, total_fee, EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.财付通, "", order_no, DateTime.Now, ""); //调用doShow, 打印meta值跟js代码,告诉财付通处理成功,并在用户浏览器显示show.aspx页面. // AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord + "||支付完成,修改状态完成"); resHandler.doShow(string.Format(Domain.UserBackCenter + "/TicketsCenter/tenpay/Show.aspx?logId={0}", payList[0].ItemId)); } if (payList[0].PayState != EyouSoft.Model.TicketStructure.PayState.交易完成) { // AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord + "||支付完成,修改状态未完成!"); resHandler.doShow(string.Format(Domain.UserBackCenter + "/TicketsCenter/tenpay/Show.aspx?logId={0}", payList[0].ItemId)); } } else { // AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord + "||payList count 为0!"); Response.Write("未找到相关订单!"); //Response.Write("trade_status=" + Request.QueryString["trade_status"]); } } else { // AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord + "||交易失败"); Response.Write("交易失败"); Response.Write("trade_status=" + Request.QueryString["trade_status"]); } } //获取debug信息,建议把debug信息写入日志,方便定位问题 else { Response.Write("认证签名失败"); } }
/// <summary> /// 初始化订单列表 /// </summary> private void InitOrderList() { int intRecordCount = 0; int Type = Utils.GetInt(Utils.GetQueryStringValue("type"), 0); //当前查询类型:type=1搜索查询,其余则 精确查询 EyouSoft.Model.TicketStructure.RateType? RateType = null; //机票类型 EyouSoft.Model.TicketStructure.OrderState? OrderState = null; //订单状态 EyouSoft.Model.TicketStructure.OrderChangeType? OrderChangeType = null; //订单变更类型 EyouSoft.Model.TicketStructure.OrderChangeState?OrderChangeState = null; //订单变更状态 // 搜索查询 int?FlightId = Utils.GetIntNull(Utils.GetQueryStringValue("flightid")); //航空公司 int?HomeCityId = Utils.GetIntNull(Utils.GetQueryStringValue("homecityid")); //始发地 int?DestCityId = Utils.GetIntNull(Utils.GetQueryStringValue("destcityid")); //目的地 int?rateTypeId = Utils.GetIntNull(Request.QueryString["ratetype"]); //机票类型ID if (rateTypeId.HasValue) //如果机票类型ID有效 { //将ID转换为 机票类型 RateType = (EyouSoft.Model.TicketStructure.RateType)rateTypeId.Value; } //订单生成时段 DateTime?StartTime = Utils.GetDateTimeNullable(Request.QueryString["starttime"]); //开始时间 DateTime?EndTime = Utils.GetDateTimeNullable(Request.QueryString["endtime"]); //结束时间 int tmpOrderState = Utils.GetInt(Request.QueryString["orderstate"], 0); //订单状态ID int tmpOrderChangeState = Utils.GetInt(Request.QueryString["orderchangestate"]); //订单变更状态ID //if (Utils.GetQueryStringValue("orderchangestate") != string.Empty) //{ // OrderChangeState = (EyouSoft.Model.TicketStructure.OrderChangeState)Utils.GetInt(Utils.GetQueryStringValue("orderchangestate")); //} //订单状态处理 /* * 退票,作废,改期,改签 * 这四种状态,属于 订单变更类型 * */ if (tmpOrderState == 7) { OrderChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.退票; } else if (tmpOrderState == 8) { OrderChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.作废; } else if (tmpOrderState == 9) { OrderChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.改期; } else if (tmpOrderState == 10) { OrderChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.改签; } else { OrderState = (EyouSoft.Model.TicketStructure.OrderState)tmpOrderState; } //如果当前的订单状态 属于 订单变更类型 //则初始化 属于对应变更类型的变更状态 if (OrderChangeType.HasValue)//属于 { OrderChangeState = (EyouSoft.Model.TicketStructure.OrderChangeState)tmpOrderChangeState; } // 精确查询 string OrderNo = Server.UrlDecode(Utils.GetQueryStringValue("orderno")); string TicketNo = Server.UrlDecode(Utils.GetQueryStringValue("ticketno")); string TravellerName = Server.UrlDecode(Utils.GetQueryStringValue("travellername")); string PNR = Utils.GetQueryStringValue("PNR"); CurrencyPage = Utils.GetInt(Utils.GetQueryStringValue("Page"), 1); IList <EyouSoft.Model.TicketStructure.OrderInfo> list = null; EyouSoft.IBLL.TicketStructure.ITicketOrder bll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); if (Type == 1)//模糊查询 { list = bll.ShouSuoSearch(SiteUserInfo.CompanyID, FlightId, RateType, HomeCityId, DestCityId, StartTime, EndTime, OrderState, OrderChangeType, OrderChangeState, intPageSize, CurrencyPage, ref intRecordCount); } else//精确查询 { list = bll.precisionSearch(SiteUserInfo.CompanyID, OrderNo, TicketNo, TravellerName, PNR); } //如果是精确查询,则隐藏分页控件 if (Type != 1) { ExportPageInfo1.Visible = false; } if (list != null && list.Count > 0) { this.QueryOrderList_rptOrderList.DataSource = list; this.QueryOrderList_rptOrderList.DataBind(); //如果是 搜索查询 ,则初始化分页控件 if (Type == 1) { this.ExportPageInfo1.intPageSize = intPageSize; this.ExportPageInfo1.intRecordCount = intRecordCount; this.ExportPageInfo1.CurrencyPage = CurrencyPage; this.ExportPageInfo1.PageLinkURL = Request.ServerVariables["SCRIPT_NAME"].ToString() + "?"; this.ExportPageInfo1.UrlParams.Add("type", Type.ToString()); this.ExportPageInfo1.UrlParams.Add("flightid", FlightId.HasValue ? FlightId.ToString() : ""); this.ExportPageInfo1.UrlParams.Add("homecityid", HomeCityId.HasValue ? HomeCityId.ToString() : ""); this.ExportPageInfo1.UrlParams.Add("destcityid", DestCityId.HasValue ? DestCityId.ToString() : ""); this.ExportPageInfo1.UrlParams.Add("ratetype", RateType.HasValue ? ((int)RateType).ToString() : ""); this.ExportPageInfo1.UrlParams.Add("starttime", StartTime.HasValue ? StartTime.Value.ToString("yyyy-MM-dd") : ""); this.ExportPageInfo1.UrlParams.Add("endtime", EndTime.HasValue ? EndTime.Value.ToString("yyyy-MM-dd") : ""); this.ExportPageInfo1.UrlParams.Add("orderstate", OrderState.HasValue ? ((int)OrderState).ToString() : ""); this.ExportPageInfo1.UrlParams.Add("orderchangestate", OrderChangeType.HasValue ? ((int)OrderChangeState).ToString() : ""); } } else { this.QueryOrderList_pnlNoData.Visible = true; } this.QueryOrderList_lblOrderCount.Text = list.Count.ToString(); }
protected EyouSoft.Model.TicketStructure.TicketWholesalersAllInfo supplierInfo; //供应商信息 protected void Page_Load(object sender, EventArgs e) { this.Master.Naviagtion = AirTicketNavigation.团队预定散拼; this.Title = "预定-组团预定/散拼-机票"; string method = Utils.GetFormValue("method"); //当前操作 if (method == "") //初次进来显示运价信息 { startDate = Utils.GetQueryStringValue("startDate"); backDate = Utils.GetQueryStringValue("backDate"); startCity = Utils.GetQueryStringValue("startCity"); toCity = Utils.GetQueryStringValue("toCity"); airType = Utils.GetQueryStringValue("airType"); peopleTypeInt = Utils.GetInt(Utils.GetQueryStringValue("peopleType")); peopleType = (EyouSoft.Model.TicketStructure.TravellerType)peopleTypeInt; id = Utils.GetQueryStringValue("id"); info = EyouSoft.BLL.TicketStructure.TicketFreightInfo.CreateInstance().GetModel(id);//获取运价信息实体 if (info != null) { freightDate = GetDate(info); freightDateBack = GetBackDate(info); startCityName = info.NoGadHomeCityIdName; toCityName = info.NoGadDestCityName; supplierInfo = EyouSoft.BLL.TicketStructure.TicketSupplierInfo.CreateInstance().GetSupplierInfo(info.Company.ID); //touristCount = info.MaxPCount; touristCount = 100; companyId = SiteUserInfo.CompanyID; } } if (method == "save") //下订单 { id = Utils.GetFormValue("id"); info = EyouSoft.BLL.TicketStructure.TicketFreightInfo.CreateInstance().GetModel(id); supplierInfo = EyouSoft.BLL.TicketStructure.TicketSupplierInfo.CreateInstance().GetSupplierInfo(info.Company.ID); string[] touristNames = Utils.GetFormValues("tb_tourName1"); string[] tourTypes = Utils.GetFormValues("tb_tourType1"); string[] tourSex = Utils.GetFormValues("tb_tourSex1"); string[] cerTypes = Utils.GetFormValues("tb_cerType1"); string[] cerNos = Utils.GetFormValues("tb_cerNo1"); int length = touristNames.Length; List <EyouSoft.Model.TicketStructure.TicketVistorInfo> visitorList = new List <EyouSoft.Model.TicketStructure.TicketVistorInfo>(); List <EyouSoft.Model.TicketStructure.OrderTravellerInfo> orderVisitorList = new List <EyouSoft.Model.TicketStructure.OrderTravellerInfo>(); int isTableNum = 0;//是否购买行程单的人数 EyouSoft.IBLL.TicketStructure.ITicketVisitor visitorBll = EyouSoft.BLL.TicketStructure.TicketVisitor.CreateInstance(); for (int i = 0; i < length; i++) { EyouSoft.Model.TicketStructure.TicketVistorInfo visitorInfo = new EyouSoft.Model.TicketStructure.TicketVistorInfo(); EyouSoft.Model.TicketStructure.OrderTravellerInfo orderVisitorInfo = new EyouSoft.Model.TicketStructure.OrderTravellerInfo(); //添加订单旅客 orderVisitorInfo.TravellerName = touristNames[i]; orderVisitorInfo.CertNo = cerNos[i]; orderVisitorInfo.TravellerId = Guid.NewGuid().ToString(); orderVisitorInfo.CertType = (EyouSoft.Model.TicketStructure.TicketCardType)Utils.GetInt(cerTypes[i]); orderVisitorInfo.Gender = (EyouSoft.Model.CompanyStructure.Sex)Utils.GetInt(tourSex[i]); orderVisitorInfo.InsPrice = 0; orderVisitorInfo.TravellerType = (EyouSoft.Model.TicketStructure.TicketVistorType)Utils.GetInt(tourTypes[i]); orderVisitorInfo.IsBuyIns = Utils.GetFormValue("tb_isInsure1_" + (i + 1)) == "1"; orderVisitorInfo.IsBuyItinerary = Utils.GetFormValue("tb_isTable1_" + (i + 1)) == "1"; if (orderVisitorInfo.IsBuyItinerary) { isTableNum++; } orderVisitorInfo.TravellerState = EyouSoft.Model.TicketStructure.TravellerState.正常; orderVisitorList.Add(orderVisitorInfo); if (Utils.GetFormValue("tb_isOften1_" + (i + 1)) == "1") { //添加常旅客 if (IsLetter(touristNames[i])) { visitorInfo.EnglishName = touristNames[i]; } else { visitorInfo.ChinaName = touristNames[i]; } visitorInfo.Id = orderVisitorInfo.TravellerId; visitorInfo.CardType = (EyouSoft.Model.TicketStructure.TicketCardType)Utils.GetInt(cerTypes[i]); visitorInfo.CardNo = cerNos[i]; visitorInfo.VistorType = (EyouSoft.Model.TicketStructure.TicketVistorType)Utils.GetInt(tourTypes[i]); visitorInfo.IssueTime = DateTime.Now; visitorInfo.ContactSex = orderVisitorInfo.Gender; visitorInfo.CompanyId = SiteUserInfo.CompanyID; if (!visitorBll.VisitorIsExists(visitorInfo.CardNo, SiteUserInfo.CompanyID, "")) { visitorList.Add(visitorInfo); } } } //添加常旅客到数据库 visitorBll.AddTicketVisitorList(visitorList); //构造订单信息 EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo orderInfo = new EyouSoft.Model.TicketStructure.OrderInfo(); orderInfo.Travellers = orderVisitorList; orderInfo.TravellerType = (EyouSoft.Model.TicketStructure.TravellerType)Utils.GetInt(Utils.GetFormValue("peopleType")); if (info.FreightType == EyouSoft.Model.TicketStructure.FreightType.来回程) { orderInfo.TotalAmount = (info.FromSetPrice + info.ToSetPrice + info.FromFuelPrice + info.ToFuelPrice + info.ToBuildPrice + info.FromBuildPrice) * length + supplierInfo.ServicePrice * isTableNum; } else { orderInfo.TotalAmount = (info.FromSetPrice + info.FromFuelPrice + info.FromBuildPrice) * length + supplierInfo.ServicePrice * isTableNum; } if (isTableNum > 0) { orderInfo.TotalAmount += supplierInfo.DeliveryPrice; } orderInfo.BuyerCId = SiteUserInfo.CompanyID; orderInfo.BuyerCName = SiteUserInfo.CompanyName; orderInfo.BuyerContactAddress = EyouSoft.BLL.CompanyStructure.CompanyInfo.CreateInstance().GetModel(SiteUserInfo.CompanyID).CompanyAddress; orderInfo.BuyerContactMobile = SiteUserInfo.ContactInfo.Mobile; orderInfo.BuyerContactMQ = SiteUserInfo.ContactInfo.MQ; orderInfo.BuyerContactName = SiteUserInfo.ContactInfo.ContactName; orderInfo.BuyerRemark = Utils.InputText(Utils.GetFormValue("tb_remark"), 250);//特殊要求备注 orderInfo.BuyerUId = SiteUserInfo.ID; orderInfo.DestCityId = info.NoGadDestCityId; orderInfo.DestCityName = info.NoGadDestCityName; orderInfo.EMSPrice = supplierInfo.DeliveryPrice; orderInfo.FlightId = info.FlightId; orderInfo.FreightType = info.FreightType; orderInfo.HomeCityId = info.NoGadHomeCityId; orderInfo.HomeCityName = info.NoGadHomeCityIdName; orderInfo.ItineraryPrice = supplierInfo.ServicePrice; orderInfo.LeaveTime = DateTime.Parse(Utils.GetFormValue("startDate")); EyouSoft.Model.TicketStructure.OrderRateInfo rateInfo = new EyouSoft.Model.TicketStructure.OrderRateInfo(); rateInfo.DestCityId = info.NoGadDestCityId; rateInfo.DestCityName = info.NoGadDestCityName; rateInfo.FlightId = info.FlightId; rateInfo.FreightType = info.FreightType; rateInfo.HomeCityId = info.NoGadHomeCityId; rateInfo.HomeCityName = info.NoGadHomeCityIdName; rateInfo.LBuildPrice = info.FromBuildPrice; rateInfo.LeaveDiscount = info.FromReferRate; rateInfo.LeaveFacePrice = info.FromReferPrice; rateInfo.LeavePrice = info.FromSetPrice; //计算去程运价有效期 rateInfo.LeaveTimeLimit = GetDate(info); rateInfo.LFuelPrice = info.FromFuelPrice; rateInfo.MaxPCount = info.MaxPCount; rateInfo.RBuildPrice = info.ToBuildPrice; rateInfo.ReturnDiscount = info.ToReferRate; rateInfo.ReturnFacePrice = info.ToReferPrice; rateInfo.ReturnPrice = info.ToSetPrice; //计算回程运价有效期 rateInfo.ReturnTimeLimit = GetBackDate(info); rateInfo.RFuelPrice = info.ToFuelPrice; rateInfo.SupplierRemark = info.SupplierRemark; orderInfo.OrderRateInfo = rateInfo; string act = Utils.GetFormValue("act"); if (act == "0") { orderInfo.OrderState = EyouSoft.Model.TicketStructure.OrderState.等待审核; } else { orderInfo.OrderState = EyouSoft.Model.TicketStructure.OrderState.审核通过; } orderInfo.OrderTime = DateTime.Now; orderInfo.PCount = length; orderInfo.RateType = info.RateType; orderInfo.ReturnTime = Utils.GetDateTime(Utils.GetFormValue("backDate"), DateTime.Now); orderInfo.SupplierCId = info.Company.ID; orderInfo.SupplierCName = info.Company.CompanyName; orderInfo.OrderId = Guid.NewGuid().ToString(); if (orderBll.CreateOrder(orderInfo)) { Utils.ResponseMeg(true, orderInfo.OrderId); } else { Utils.ResponseMegError(); } } }
protected void Page_Load(object sender, EventArgs e) { //判断是否登录 if (this.IsLogin == false)//没有登录 { //输出提示信息 Response.Clear(); Response.Write("请重新登录"); Response.End(); } string flag = Utils.GetQueryStringValue("flag"); //当前请求类型 if (flag != string.Empty) //请求类型不为空 { //判断请求类型 if (flag.Equals("save", StringComparison.OrdinalIgnoreCase))//保存数据 { SaveData(); } else if (flag.Equals("refund", StringComparison.OrdinalIgnoreCase))//检查支付宝退款是否成功 { IsAlipayRefund(); } } //页面初始化 if (!Page.IsPostBack) { string OrderId = Utils.GetQueryStringValue("orderid"); //订单ID this.CancleOrder_hidOrderId.Value = OrderId; //存储订单iD //根据订单ID获取订单明细 EyouSoft.IBLL.TicketStructure.ITicketOrder ibll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); orderInfo = ibll.GetOrderInfoById(OrderId); //根据订单ID获取订单最新的变更信息 orderChangeInfo = ibll.GetLatestChange(OrderId); //判断是否有当前订单内容 if (orderInfo == null)//没有 { //输出提示信息 Response.Clear(); Response.Write("当前订单不存在"); Response.End(); } EyouSoft.Model.TicketStructure.OrderState? OrderState = null; //请求的订单状态 EyouSoft.Model.TicketStructure.OrderChangeType?ChangeType = null; //请求的订单变更类型 //初始化请求订单状态 int tmpOrderStateid = Utils.GetInt(Request.QueryString["orderstate"], -1); //请求的订单状态ID if (tmpOrderStateid != -1) //有效 { OrderState = (EyouSoft.Model.TicketStructure.OrderState)tmpOrderStateid; this.CancleOrder_hidOrderState.Value = tmpOrderStateid.ToString(); } //初始化请求订单变更类型 int tmpChangeTypeId = Utils.GetInt(Request.QueryString["changetype"], -1);//请求的订单变更类型ID if (tmpChangeTypeId != -1) { ChangeType = (EyouSoft.Model.TicketStructure.OrderChangeType)tmpChangeTypeId; this.CancleOrder_hidChangeType.Value = tmpChangeTypeId.ToString(); } ////请求的订单状态ID是否有效 //if (tmpOrderStateid != -1)//有效 //{ // //将ID转换为请求的订单状态 // OrderState = (EyouSoft.Model.TicketStructure.OrderState)tmpOrderStateid; // this.CancleOrder_hidOrderState.Value = tmpOrderStateid.ToString(); // //判断请求的订单状态是否 与订单当前状态是否同步 // if (OrderState != orderInfo.OrderState) // { // Response.Clear(); // Response.Write("订单状态已经修改"); // Response.End(); // } //} //else//无效 //{ // Response.Clear(); // Response.Write("参数错误"); // Response.End(); //} /* * 判断请求的订单处理状态 是否与 订单的当前状态 是否同步 * */ if (OrderState == EyouSoft.Model.TicketStructure.OrderState.等待审核 || OrderState == EyouSoft.Model.TicketStructure.OrderState.支付成功) //拒绝审核请求,拒绝出票请求 { if (OrderState != orderInfo.OrderState) { Utils.ResponseNoPermit("当前订单的状态已经被修改"); } } if (OrderState == EyouSoft.Model.TicketStructure.OrderState.出票完成)//拒绝 退/废/改/签 请求 { if (orderChangeInfo == null) { Utils.ResponseNoPermit("当前订单不能【退/废/改/签】处理"); } if (ChangeType != orderChangeInfo.ChangeType || orderChangeInfo.ChangeState == EyouSoft.Model.TicketStructure.OrderChangeState.接受 || orderChangeInfo.ChangeState == EyouSoft.Model.TicketStructure.OrderChangeState.拒绝) { Utils.ResponseNoPermit("当前订单的状态已经被修改"); } } } }
private void SaveData() { bool IsResult = false; string OrderId = Utils.GetFormValue(this.CancleOrder_hidOrderId.UniqueID);//订单ID //根据ID获取订单明细 EyouSoft.IBLL.TicketStructure.ITicketOrder OrderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); orderInfo = OrderBll.GetOrderInfoById(OrderId); //根据订单ID获取订单最新的变更信息 orderChangeInfo = OrderBll.GetLatestChange(OrderId); //判断是否有当前订单内容 if (orderInfo == null)//没有 { //输出提示信息 Utils.ResponseMeg(false, "当前订单不存在"); } EyouSoft.Model.TicketStructure.OrderState?OrderState = null; //请求的订单状态 int tmpOrderStateId = Utils.GetInt(Utils.GetFormValue(this.CancleOrder_hidOrderState.UniqueID), -1); //订单状态ID if (tmpOrderStateId != -1) { OrderState = (EyouSoft.Model.TicketStructure.OrderState)tmpOrderStateId; } EyouSoft.Model.TicketStructure.OrderChangeType?ChangeType = null; //请求的订单变更类型 int tmpOrderChangeTypeId = Utils.GetInt(Utils.GetFormValue(this.CancleOrder_hidChangeType.UniqueID), -1); //订单变更类型ID if (tmpOrderChangeTypeId != -1) { ChangeType = (EyouSoft.Model.TicketStructure.OrderChangeType)tmpOrderChangeTypeId; } EyouSoft.Model.TicketStructure.OrderInfo OrderModel = orderInfo; //订单明细 string Remark = Server.UrlDecode(Utils.GetFormValue("txtRemark", 250)); //备注信息 /* * 根据请求的订单状态,请求的订单变更类型,获取请求类型 */ if (OrderState == EyouSoft.Model.TicketStructure.OrderState.等待审核)// 拒绝审核订单请求 { #region 拒绝审核 //判断当前订单状态与 请求的订单状态是否同步 if (OrderState == OrderModel.OrderState) { IsResult = OrderBll.SupplierNotCheckOrder(OrderId, Remark, SiteUserInfo.ID, SiteUserInfo.CompanyID); Utils.ResponseMeg(IsResult, IsResult ? "订单修改成功" : "订单修改失败,请稍候再试"); } else { Utils.ResponseMeg(false, "页面已经过期"); } #endregion } else if (OrderState == EyouSoft.Model.TicketStructure.OrderState.支付成功)// 拒绝出票订单请求 { #region 拒绝出票 //判断当前订单状态与 请求的订单状态是否同步 if (OrderState != OrderModel.OrderState) { Utils.ResponseMeg(false, "页面已经过期"); } string BatchNo = string.Empty; // 判断是否有写入支付记录 IList <EyouSoft.Model.TicketStructure.TicketPay> PayList = OrderBll.GetPayList(OrderModel.OrderId, EyouSoft.Model.TicketStructure.ItemType.平台到采购商_订单, string.Empty, string.Empty); if (PayList == null || PayList.Count == 0 || PayList.Where(item => item.PayState == EyouSoft.Model.TicketStructure.PayState.交易完成).Count() == 0) { // 拒绝出票完成前写入支付明细记录 IsResult = OrderBll.NoOutputTicketBefore(OrderId, OrderModel.OrderNo, SiteUserInfo.ID, SiteUserInfo.CompanyID, OrderModel.TotalAmount, OrderModel.PayType, Remark, out BatchNo); } // 获取当前订单上相关的支付接口信息和账户信息 #region 获取当前订单上相关的支付接口信息和账户信息 string AccountNumber = string.Empty; string PayNumber = string.Empty;//支付接口返回的交易号 EyouSoft.Model.TicketStructure.OrderAccountInfo AccountModel = OrderBll.GetOrderAccountInfo(OrderModel.OrderId); if (AccountModel != null) { AccountNumber = AccountModel.PayAccount; //AccountNumber = "*****@*****.**"; PayNumber = AccountModel.PayNumber; } AccountModel = null; #endregion #region 退款 if (OrderModel.PayType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝) { #region 支付宝退款 string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string notify_url = AlipayParameters.DomainPath + "/TicketsCenter/alipay/refund/notify3_url.aspx"; //通知地址 string batch_no = BatchNo; //批次号 string refund_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //退款日期 string batch_num = "1"; //退款数量 string detail_data = ""; //退款请求数据集 //计算支付宝退款金额对应的手续费 decimal alipayFee = Refund_Platform_Parameter.ComputeAlipayFee(OrderModel.TotalAmount); if (alipayFee > 0) { Refund_Platform_Parameter parameter = new Refund_Platform_Parameter( PayNumber, OrderModel.TotalAmount.ToString("F2"), Remark, AlipayParameters.Seller_mailer, alipayFee.ToString("F2"), Remark); detail_data = parameter.ToString(); } else { Refund_Platform_Parameter parameter = new Refund_Platform_Parameter(PayNumber, OrderModel.TotalAmount.ToString("F2"), Remark); detail_data = parameter.ToString(); } RefundNoPwd refund = new RefundNoPwd(partner, key, sign_type, input_charset, notify_url, batch_no, refund_date, batch_num, detail_data); string url = refund.Create_url(); CreateSSL ssl = new CreateSSL(url); string responseFromServer = ssl.GetResponse(); Distribute_royalty_Result result = new Distribute_royalty_Result(responseFromServer); IsResult = result.IsSuccess; //判断退款请求是否提交成功 if (result.IsSuccess == false)//退款请求提交失败 { OrderBll.PayAfterCallBack(PayNumber, OrderModel.TotalAmount, EyouSoft.Model.TicketStructure.PayState.未提交到支付接口, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, string.Empty, result.ErrorCode, OrderModel.OrderNo, DateTime.Now, batch_no); Utils.ResponseMeg(false, "退款请求提交失败,请稍候再试"); } else//退款请求提交成功 { //因为支付宝的退款成功信息,是通过异步通知的方式通知 //返回到客户端后,在客户端需要启用 实时的请求 查询 数据库,查看退款成功或者失败 Response.Clear(); Response.Write(string.Format("{{success:'1',message:'{0}',paytype:'{1}',batchno:'{2}'}}", "退款请求提交成功,正在退款中...", "2", batch_no)); Response.End(); } #endregion } else if (OrderModel.PayType == EyouSoft.Model.TicketStructure.TicketAccountType.财付通) { #region 财付通退款 //商户号 string bargainor_id = TenpayParameters.Bargainor_ID; //密钥 string key = TenpayParameters.Key; //创建请求对象 BaseSplitRequestHandler reqHandler = new BaseSplitRequestHandler(Context); //通信对象 TenpayHttpClient httpClient = new TenpayHttpClient(); //应答对象 ScriptClientResponseHandler resHandler = new ScriptClientResponseHandler(); //----------------------------- //设置请求参数 //----------------------------- reqHandler.init(); reqHandler.setKey(key); reqHandler.setGateUrl("https://mch.tenpay.com/cgi-bin/refund_b2c_split.cgi"); reqHandler.setParameter("cmdno", "93"); reqHandler.setParameter("version", "4"); reqHandler.setParameter("fee_type", "1"); reqHandler.setParameter("bargainor_id", bargainor_id); //商户号 reqHandler.setParameter("sp_billno", OrderModel.OrderNo); //商家订单号 reqHandler.setParameter("transaction_id", PayNumber); //财付通交易单号 reqHandler.setParameter("return_url", "http://127.0.0.1/"); //后台系统调用,必现填写为http://127.0.0.1/ reqHandler.setParameter("total_fee", Utils.GetMoney(OrderModel.TotalAmount * 100)); //退款ID,同个ID财付通认为是同一个退款,格式为109+10位商户号+8位日期+7位序列号 reqHandler.setParameter("refund_id", "109" + bargainor_id + BatchNo); reqHandler.setParameter("refund_fee", Utils.GetMoney(OrderModel.TotalAmount * 100)); //----------------------------- //设置通信参数 //----------------------------- //证书必须放在用户下载不到的目录,避免证书被盗取 httpClient.setCertInfo(Server.MapPath(TenpayParameters.PfxPath), TenpayParameters.PfxPwd); string requestUrl = reqHandler.getRequestURL(); //设置请求内容 httpClient.setReqContent(requestUrl); //设置超时 httpClient.setTimeOut(10); string rescontent = ""; IList <EyouSoft.Model.TicketStructure.TicketPay> tmpPayList = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().GetPayList(string.Empty, EyouSoft.Model.TicketStructure.ItemType.平台到采购商_订单, string.Empty, BatchNo); //后台调用 if (httpClient.call()) { //获取结果 rescontent = httpClient.getResContent(); resHandler.setKey(key); //设置结果参数 resHandler.setContent(rescontent); //判断签名及结果 if (resHandler.isTenpaySign() && resHandler.getParameter("pay_result") == "0") { //取结果参数做业务处理 if (tmpPayList != null && tmpPayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = tmpPayList[0]; // 拒绝出票完成后更新订单状态为‘拒绝出票’,并修改支付明细状态 IsResult = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(PayNumber, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易完成, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, BatchNo); //判断支付记录 修改是否成功 if (IsResult)//成功 { Utils.ResponseMeg(true, "款项已经成功退到采购商帐户中,拒绝出票成功"); } else//失败 { Utils.ResponseMeg(true, "款项已经成功退到采购商帐户中,订单状态修改失败,请联系客服"); } PayModel = null; } tmpPayList = null; } else { string errorCode = resHandler.getParameter("pay_result"); //错误时,返回结果未签名。 //如包格式错误或未确认结果的,请使用原来订单号重新发起,确认结果,避免多次操作 if (tmpPayList != null && tmpPayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = tmpPayList[0]; //修改之前的支付记录 为 交易失败 EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(PayNumber, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易失败, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, BatchNo); PayModel = null; } IsResult = false; tmpPayList = null; Utils.ResponseMeg(false, "退款失败,修改订单失败(错误码:" + errorCode + ")"); } } else { //后台调用通信失败 if (tmpPayList != null && tmpPayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = tmpPayList[0]; EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(PayNumber, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易失败, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, BatchNo); PayModel = null; } IsResult = false; tmpPayList = null; //有可能因为网络原因,请求已经处理,但未收到应答。 Utils.ResponseMeg(false, "操作失败,有可能因为网络原因,请求已经处理,但未收到应答。"); } #endregion } #endregion #endregion } else if (OrderState == EyouSoft.Model.TicketStructure.OrderState.出票完成) { if (ChangeType.HasValue == false) { Utils.ResponseMeg(false, "参数错误"); } #region 拒绝退票、改签、改期、作废 string ChangeID = string.Empty; EyouSoft.Model.TicketStructure.OrderChangeInfo ChangeModel = orderChangeInfo; //OrderBll.GetLatestChange(OrderModel.OrderId); /* * 判断请求的订单处理状态 是否与 订单的当前状态 是否同步 * */ if (ChangeModel == null) { Utils.ResponseNoPermit("当前订单不能进行【退/废/改/签】处理"); } if (ChangeType.Value != ChangeModel.ChangeType || ChangeModel.ChangeState == EyouSoft.Model.TicketStructure.OrderChangeState.接受 || ChangeModel.ChangeState == EyouSoft.Model.TicketStructure.OrderChangeState.拒绝) { Utils.ResponseNoPermit("当前订单的状态已经被修改"); } ChangeID = ChangeModel.ChangeId; IsResult = OrderBll.CheckOrderChange(ChangeID, SiteUserInfo.ID, Remark, EyouSoft.Model.TicketStructure.OrderChangeState.拒绝); Utils.ResponseMeg(IsResult, IsResult ? "订单修改成功" : "订单修改失败,请稍候再试"); #endregion } //return IsResult; }
protected void Page_Load(object sender, EventArgs e) { //密钥 string key = TenpayParameters.Key; //创建PayResponseHandler实例 PayResponseHandler resHandler = new PayResponseHandler(Context); resHandler.setKey(key); //判断签名 if (resHandler.isTenpaySign()) { //交易单号 string trade_no = resHandler.getParameter("transaction_id"); //金额金额,以分为单位 decimal total_fee = decimal.Parse(resHandler.getParameter("total_fee")) / 100; //支付结果 string pay_result = resHandler.getParameter("pay_result"); //订单号 string order_no = resHandler.getParameter("sp_billno"); //支付账号 string buyer_email = ""; EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo info = orderBll.GetOrderInfoByNo(order_no); if (info.OrderState == EyouSoft.Model.TicketStructure.OrderState.审核通过) { IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(info.SupplierCId); //获取供应商所有账户 string sellAccount = ""; //供应商账户 EyouSoft.Model.TicketStructure.TicketCompanyAccount accountModel = list.FirstOrDefault(i => i.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.财付通); //获取供应商账户实体 if (accountModel != null) { sellAccount = accountModel.AccountNumber;//赋值供应商账户 } string batchNo = ""; decimal IntoRatio = decimal.Parse(TenpayParameters.TongyeFee); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList(info.OrderId, EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单, order_no, null); if ("0".Equals(pay_result)) { if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, total_fee, EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.财付通, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, total_fee, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, total_fee, EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.财付通, buyer_email, "", order_no, DateTime.Now, ""); } //调用doShow, 打印meta值跟js代码,告诉财付通处理成功,并在用户浏览器显示show.aspx页面. resHandler.doShow(string.Format("/AirTickets/tenpay/directpay/Show.aspx?order_no={0}&total_fee={1}&result={2}", order_no, total_fee, "1")); } else { //当做不成功处理 if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, total_fee, EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.财付通, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, total_fee, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, total_fee, EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.财付通, buyer_email, "", order_no, DateTime.Now, ""); } resHandler.doShow(string.Format("/AirTickets/tenpay/directpay/Show.aspx?order_no={0}&total_fee={1}&result={2}", order_no, total_fee, "0")); //Response.Write("支付失败"); } } //获取debug信息,建议把debug信息写入日志,方便定位问题 //string debuginfo = resHandler.getDebugInfo(); //Response.Write("<br/>debuginfo:" + debuginfo + "<br/>"); } else { Response.Write("认证签名失败"); } }
protected void Page_Load(object sender, EventArgs e) { string method = Utils.GetFormValue("method"); this.Title = "支付-组团预定/散拼-机票"; if (method != "InsertAccount") { this.Master.Naviagtion = AirTicketNavigation.团队预定散拼; orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); string orderId = Utils.GetQueryStringValue("orderId"); orderInfo = orderBll.GetOrderInfoById(orderId); EyouSoft.Model.TicketStructure.TicketFlightCompany companyModel = EyouSoft.BLL.TicketStructure.TicketFlightCompany.CreateInstance().GetTicketFlightCompany(orderInfo.FlightId); if (companyModel != null) { flightName = companyModel.AirportName; } companyName = SiteUserInfo.CompanyName; contactName = SiteUserInfo.ContactInfo.ContactName; address = ""; moible = SiteUserInfo.ContactInfo.Mobile; buyInsCount = orderInfo.Travellers.Where(i => i.IsBuyIns).Count(); //保险数 buyItineraryCount = orderInfo.Travellers.Where(i => i.IsBuyItinerary).Count(); //行程单数 supplierInfo = EyouSoft.BLL.TicketStructure.TicketSupplierInfo.CreateInstance().GetSupplierInfo(orderInfo.SupplierCId); acl_rptCustomerList.DataSource = orderInfo.Travellers; acl_rptCustomerList.DataBind(); list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(orderInfo.SupplierCId); } else { string payWhich = Utils.GetFormValue("paywhich"); string freightType = Utils.GetFormValue("freightType"); string orderId = Utils.GetFormValue("orderId"); string orderNo = Utils.GetFormValue("orderNo"); string sellCId = Utils.GetFormValue("sellcId"); string batchNo = ""; decimal total = decimal.Parse(Utils.GetFormValue("total")); string companyName = Utils.GetFormValue("companyname"); string contactName = Utils.GetFormValue("contactname"); string moible = Utils.GetFormValue("moible"); string address = Utils.GetFormValue("address"); string currUId = SiteUserInfo.ID; string currCId = SiteUserInfo.CompanyID; string theUrl = GetPayUrl(payWhich, orderNo, total, freightType); decimal IntoRatio = decimal.Parse(AlipayParameters.TongyeFee); //平台交易费 orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); orderBll.UpdateBuyerContact(orderId, companyName, contactName, moible, address); //修改订单联系方式 EyouSoft.Model.TicketStructure.ItemType? itemType = EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单; //流水金额记录项类型 IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList(orderId, itemType, orderNo, ""); //获取交易记录 list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(sellCId); //获取供应商所有账户 EyouSoft.Model.TicketStructure.TicketAccountType accountType = (EyouSoft.Model.TicketStructure.TicketAccountType)Utils.GetInt(payWhich); //获取支付类型 string sellAccount = ""; //供应商账户 EyouSoft.Model.TicketStructure.TicketCompanyAccount accountModel = list.FirstOrDefault(i => i.InterfaceType == accountType); //获取供应商账户实体 if (accountModel != null) { sellAccount = accountModel.AccountNumber; //赋值供应商账户 } else { Utils.ResponseMegError(); //如果对应接口账户不存在则输出失败 return; } if (payList == null || payList.Count == 0 || (payList != null && payList.Where(i => i.PayState == EyouSoft.Model.TicketStructure.PayState.交易完成).Count() < 1))//如果交易记录不存在或交易状态不是完成则添加支付前交易记录 { if (orderBll.PayBefore(orderId, orderNo, sellAccount, IntoRatio, SiteUserInfo.ID, SiteUserInfo.CompanyID, total, accountType, sellCId, "", out batchNo)) { Utils.ResponseMeg(true, theUrl); } else { Utils.ResponseMegError(); } } else if (payList != null && payList.Where(i => i.PayState == EyouSoft.Model.TicketStructure.PayState.交易完成).Count() > 0) { Utils.ResponseMeg(false, "你已经支付过,并且交易完成了!"); } else { Utils.ResponseMeg(true, theUrl); } } }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 ////写日志记录(若要调试,请取消下面两行注释) string sWord = "Notify_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["total_fee"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 sWord += "\n TRUE"; //表示交易成功(TRADE_FINISHED/TRADE_SUCCESS) EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList("", EyouSoft.Model.TicketStructure.ItemType.供应商付款到平台_购买运价, order_no, ""); if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { if (payList[0].PayState != EyouSoft.Model.TicketStructure.PayState.交易完成) { EyouSoft.BLL.TicketStructure.FreightBuyLog.CreateInstance().PayAfter(trade_no, Utils.GetDecimal(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, order_no, DateTime.Now, ""); } } } else { Response.Write("trade_status=" + Request.Form["trade_status"]); } AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); Response.Write("success"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 //写日志记录(若要调试,请取消下面两行注释) string sWord = "refund_Notify1_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string notify_id = Request.Form["notify_id"]; string notify_time = Request.Form["notify_time"]; string batch_no = Request.Form["batch_no"]; sWord += "\n batch_no: " + batch_no; string success_num = Request.Form["success_num"]; sWord += "\n success_num: " + success_num; string result_details = Request.Form["result_details"]; sWord += "\n result_details: " + result_details; Refund_Distribute_Result result = Refund_Distribute_Result.Load(result_details); EyouSoft.IBLL.TicketStructure.ITicketOrder OrderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); IList <EyouSoft.Model.TicketStructure.TicketPay> PayList = OrderBll.GetPayList(string.Empty, EyouSoft.Model.TicketStructure.ItemType.供应商到平台_变更, string.Empty, batch_no); if (result.IsSuccess)//成功 { bool isResult = false; if (PayList != null && PayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = PayList[0]; // 供应商退票到平台成功之后更新明细记录状态 isResult = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack( result.Trade_No, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易完成, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, batch_no); AlipayFunction.log_result(Server.MapPath("../log/供应商退款到平台—" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); // 供应商退款成功之后发起平台退款 if (isResult) { string BatchNo = string.Empty; // 平台退款到采购商 bool aa = OrderBll.BackOrDisableTicketBeforePC(PayModel.ItemId, PayModel.TradeNo, PayModel.PayPrice, PayModel.CurrUserId, PayModel.PayType, PayModel.CurrCompanyId, PayModel.Remark, out BatchNo); //发起平台退款 Get(result.Trade_No, PayModel.PayPrice, BatchNo); } } PayList = null; } else { if (PayList != null && PayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = PayList[0]; // 供应商退票到平台成功之后更新明细记录状态 EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(result.Trade_No, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易失败, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, batch_no); PayModel = null; } AlipayFunction.log_result(Server.MapPath("../log/供应商退款到平台—" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); } sWord += "\n TRUE"; Response.Write("success"); } else//验证失败 { sWord += "\n FAIL"; Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected string orderid; //订单编号 protected void Page_Load(object sender, EventArgs e) { this.Title = "完成-组团预定/散拼-机票"; SortedDictionary <string, string> sArrary = GetRequestGet(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.QueryString["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.QueryString["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 ////写日志记录(若要调试,请取消下面两行注释) //string sWord = "Return_URL:responseTxt=" + responseTxt + "\n return_url_log:sign=" + Request.QueryString["sign"] + "&mysign=" + mysign + "\n return回来的参数:" + aliNotify.PreSignStr; //AlipayFunction.log_result(Server.MapPath("../log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string trade_no = Request.QueryString["trade_no"]; //支付宝交易号 order_no = Request.QueryString["out_trade_no"]; //获取订单号 total_fee = Request.QueryString["total_fee"]; //获取总金额 string subject = Request.QueryString["subject"]; //商品名称、订单名称 string body = Request.QueryString["body"]; //商品描述、订单备注、描述 string buyer_email = Request.QueryString["buyer_email"]; //买家支付宝账号 string trade_status = Request.QueryString["trade_status"]; //交易状态 int sOld_trade_status = 0; //获取商户数据库中查询得到该笔交易当前的交易状态 proName = string.Format("同业114机票平台(订单号:{0})", order_no); buyerAccount = buyer_email; string notify_id = Request.QueryString["notify_id"]; string notify_time = Request.QueryString["notify_time"]; string buyer_id = Request.QueryString["buyer_id"]; //打印页面 //lbTrade_no.Text = trade_no; //lbOut_trade_no.Text = order_no; //lbTotal_fee.Text = total_fee; //lbSubject.Text = subject; //lbBody.Text = body; //lbBuyer_email.Text = buyer_email; //lbTrade_status.Text = trade_status; //lbVerify.Text = "验证成功"; //lblNotifyId.Text = notify_id; //lblNotifyTime.Text = notify_time; //lblBuyerID.Text = buyer_id; //假设: //sOld_trade_status="0" 表示订单未处理; //sOld_trade_status="1" 表示交易成功(TRADE_FINISHED/TRADE_SUCCESS) EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo info = orderBll.GetOrderInfoByNo(order_no); orderid = info.OrderId; if (info.FreightType == EyouSoft.Model.TicketStructure.FreightType.单程) { proDetail = string.Format("订单号:{0}/航程信息:单程 {1}/{2}至{3}/", order_no, info.LeaveTime.ToString("yyyy-MM-dd"), info.HomeCityName, info.DestCityName); } else { proDetail = string.Format("订单号:{0}/航程信息:去程 {1}/{2}至{3}/回程 {4}/{5}-{6}", order_no, info.LeaveTime.ToString("yyyy-MM-dd"), info.HomeCityName, info.DestCityName, info.ReturnTime, info.DestCityName, info.HomeCityName); } if (info.OrderState == EyouSoft.Model.TicketStructure.OrderState.审核通过) { IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(info.SupplierCId); //获取供应商所有账户 string sellAccount = ""; //供应商账户 EyouSoft.Model.TicketStructure.TicketCompanyAccount accountModel = list.FirstOrDefault(i => i.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝); //获取供应商账户实体 if (accountModel != null) { sellAccount = accountModel.AccountNumber;//赋值供应商账户 } string batchNo = ""; //decimal IntoRatio = EyouSoft.BLL.TicketStructure.TicketSupplierInfo.CreateInstance().GetSupplierInfo(info.SupplierCId).IntoRatio; decimal IntoRatio = decimal.Parse(AlipayParameters.TongyeFee); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList(info.OrderId, EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单, order_no, null); if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } resultMess = "交易成功"; //if (sOld_trade_status < 1) //{ // //根据订单号更新订单,把订单状态处理成交易成功 //} } else { if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } //Response.Write("trade_status=" + Request.QueryString["trade_status"]); resultMess = "交易失败"; } } else { resultMess = info.OrderState.ToString(); } // 请根据您的业务逻辑来编写程序(以上代码仅作参考) } else//验证失败 { resultMess = "验证失败"; } } else { resultMess = "无返回参数"; } }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 ////写日志记录(若要调试,请取消下面两行注释) string sWord = "Notify_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["total_fee"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 //string notify_id = Request.QueryString["notify_id"]; //string notify_time = Request.QueryString["notify_time"]; //string buyer_id = Request.QueryString["buyer_id"]; //string gmt_create = Request.QueryString["gmt_create"]; //string gmt_payment = Request.QueryString["gmt_payment"]; sWord += "\n TRUE"; //表示交易成功(TRADE_FINISHED/TRADE_SUCCESS) EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo info = orderBll.GetOrderInfoByNo(order_no); if (info.OrderState == EyouSoft.Model.TicketStructure.OrderState.审核通过) { IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(info.SupplierCId); //获取供应商所有账户 string sellAccount = ""; //供应商账户 EyouSoft.Model.TicketStructure.TicketCompanyAccount accountModel = list.FirstOrDefault(i => i.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝); //获取供应商账户实体 if (accountModel != null) { sellAccount = accountModel.AccountNumber;//赋值供应商账户 } string batchNo = ""; decimal IntoRatio = decimal.Parse(AlipayParameters.TongyeFee); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList(info.OrderId, EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单, order_no, null); if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { sWord += "/n 交易成功"; //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { sWord += "/n you"; orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { sWord += "/n meiyou"; orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } } else { sWord += "/n 交易失败"; if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } } AlipayFunction.log_result(Server.MapPath("../log/" + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); } Response.Write("success"); } else//验证失败 { //sWord += "\n FAIL"; Response.Write("fail"); } } else { Response.Write("无通知参数"); } }