/// <summary> /// 根据公司编号及支付接口类型设置是否加入支付圈电子协议签约 /// </summary> /// <param name="companyId">公司编号</param> /// <param name="accountType">支付接口类型</param> /// <param name="isSign">是否加入支付圈电子协议签约</param> /// <returns></returns> public virtual bool SetIsSign(string companyId, EyouSoft.Model.TicketStructure.TicketAccountType accountType, bool isSign) { DbCommand cmd = this._db.GetSqlStringCommand(SQL_UPDATE_SetIsSign); this._db.AddInParameter(cmd, "IsSign", DbType.AnsiStringFixedLength, isSign ? "1" : "0"); this._db.AddInParameter(cmd, "CompanyId", DbType.AnsiStringFixedLength, companyId); this._db.AddInParameter(cmd, "AccountType", DbType.Byte, accountType); return(DbHelper.ExecuteSql(cmd, this._db) == 1 ? true : false); }
/// <summary> /// 绑定支付帐户信息 /// </summary> protected void BindAccount() { string account = Utils.GetQueryStringValue("account"); //支付帐户信息 int accountType = Utils.GetInt(Request.QueryString["accountType"]); //接口类型 string currentUserCompanyId = SiteUserInfo.CompanyID; //当前用户的公司ID //判断接口类型是否有效 if (accountType < 1 || accountType > 7)//无效 { Utils.ResponseMeg(false, "无效的接口类型"); return; } //判断支付帐户信息是否为空 if (account == string.Empty)//为空 { Utils.ResponseMeg(false, "支付帐户信息不能为空"); return; } EyouSoft.Model.TicketStructure.TicketAccountType ticketAccountType = (EyouSoft.Model.TicketStructure.TicketAccountType)accountType; EyouSoft.IBLL.TicketStructure.ITicketCompanyAccount bll = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance(); bool result = bll.AddTicketCompanyAccount(new EyouSoft.Model.TicketStructure.TicketCompanyAccount() { AccountNumber = account, CompanyId = currentUserCompanyId, InterfaceType = ticketAccountType, IsSign = false }); if (result) { string qianyueUrl = GetQianYueUrl(ticketAccountType, account);//获取签约URL Response.Clear(); Response.Write("{isBind:true,isSign:false,success:'1',accountNumber:'" + account + "',qianyueurl:'" + qianyueUrl + "'}"); Response.End(); } else { Utils.ResponseMeg(false, "绑定失败,请稍候再试!"); } }
/// <summary> /// 查询用户是否已经加入支付圈 /// </summary> protected void IsSign() { int accountType = Utils.GetInt(Request.QueryString["accountType"]); //接口类型 string currentUserCompanyId = SiteUserInfo.CompanyID; //当前用户的公司ID //判断接口类型是否有效 if (accountType < 1 || accountType > 7)//无效 { Utils.ResponseMeg(false, "无效的接口类型"); return; } //接口类型 EyouSoft.Model.TicketStructure.TicketAccountType ticketAccountType = (EyouSoft.Model.TicketStructure.TicketAccountType)accountType; EyouSoft.IBLL.TicketStructure.ITicketCompanyAccount bll = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance(); EyouSoft.Model.TicketStructure.TicketCompanyAccount model = bll.GetModel(currentUserCompanyId, ticketAccountType); //判断是否已经绑定过当前接口类型的帐户信息 if (model == null)//没有绑定过 { Response.Clear(); Response.Write("{isBind:false}"); Response.End(); } Response.Clear(); if (!model.IsSign) //没有进行过签约 { string qianyueUrl = GetQianYueUrl(ticketAccountType, model.AccountNumber); //获取用于签约的URL Response.Write("{isBind:true,isSign:" + model.IsSign.ToString().ToLower() + ",accountNumber:'" + model.AccountNumber + "',qianyueurl:'" + Server.UrlEncode(qianyueUrl) + "'}"); } else//进行过签约 { Response.Write("{isBind:true,isSign:true,accountNumber:'" + model.AccountNumber + "'}"); } Response.End(); }
/// <summary> /// 根据支付接口,生成相应的签约URL /// </summary> /// <param name="type">支付接口类型</param> /// <param name="accountNumber">支付帐户</param> /// <returns></returns> private string GetQianYueUrl(EyouSoft.Model.TicketStructure.TicketAccountType type, string accountNumber) { string url = string.Empty; switch (type) { case EyouSoft.Model.TicketStructure.TicketAccountType.财付通: TrustRefund trust = new TrustRefund(TenpayParameters.Bargainor_ID); url = trust.CreateUrl(); break; case EyouSoft.Model.TicketStructure.TicketAccountType.支付宝: QianYue qianyue = new QianYue(AlipayParameters.Partner, AlipayParameters.SignType, AlipayParameters.Key, AlipayParameters.Input_Charset, accountNumber); url = qianyue.Create_url(); break; } return(url); }
/// <summary> /// 支付回调函数 /// </summary> /// <param name="PayNumber">支付接口返回的交易号</param> /// <param name="PayState">交易状态</param> /// <param name="Remark">备注(更新后的备注=原来的+现在的)</param> /// <param name="TradeNo">提交到支付接口的交易号</param> /// <param name="BatchNo">批次号(没有批次号null)</param> /// <param name="PayType">支付接口类型</param> /// <param name="ItemId">记录项的ID</param> /// <param name="ItemType">记录项的类型</param> /// <param name="CurrCompanyId">当前操作公司编号</param> /// <param name="CurrUserId">当前操作用户编号</param> /// <returns>返回true表示成功</returns> public virtual bool PayCallback(string PayNumber, EyouSoft.Model.TicketStructure.PayState PayState, string Remark, string TradeNo, string BatchNo, EyouSoft.Model.TicketStructure.TicketAccountType PayType, out string ItemId, out EyouSoft.Model.TicketStructure.ItemType?ItemType, out string CurrCompanyId, out string CurrUserId) { ItemId = string.Empty; ItemType = null; CurrCompanyId = string.Empty; CurrUserId = string.Empty; if (string.IsNullOrEmpty(PayNumber) || string.IsNullOrEmpty(TradeNo)) { return(false); } bool IsResult = false; DbCommand dc = this._dataBase.GetStoredProcCommand("proc_TicketPay_PayCallback"); this._dataBase.AddInParameter(dc, "PayNumber", DbType.String, PayNumber); this._dataBase.AddInParameter(dc, "PayState", DbType.Byte, (int)PayState); this._dataBase.AddInParameter(dc, "Remark", DbType.String, Remark); this._dataBase.AddInParameter(dc, "TradeNo", DbType.String, TradeNo); this._dataBase.AddInParameter(dc, "BatchNo", DbType.String, BatchNo); this._dataBase.AddInParameter(dc, "PayType", DbType.Byte, (int)PayType); using (IDataReader dr = DbHelper.RunReaderProcedure(dc, this._dataBase)) { if (dr.Read()) { ItemId = dr["ItemId"].ToString(); if (!dr.IsDBNull(dr.GetOrdinal("ItemType"))) { ItemType = (EyouSoft.Model.TicketStructure.ItemType) int.Parse(dr["ItemType"].ToString()); } CurrCompanyId = dr["CurrCompanyId"].ToString(); CurrUserId = dr["CurrUserId"].ToString(); IsResult = true; } } return(IsResult); }
/// <param name="opearType">操作类型</param> private void OrderOperate(string opearType) { string OrderNum = Utils.GetFormValue("OrderId"); //订单ID bool result = false; //保存操作结果 string ErrorStr = string.Empty; if (!string.IsNullOrEmpty(opearType)) { if (opearType == "0") //只能执行采购商信息修改操作 { string mobile = Utils.GetFormValue("Mobile"); if (!Utils.IsMobile(mobile)) { Utils.ResponseMeg(false, "采购商手机号码填写错误!"); return; } result = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().UpdateBuyerContact(OrderNum, Utils.GetFormValue("CompanyName"), Utils.GetFormValue("LinkName"), mobile, Utils.GetFormValue("Address")); } else if (opearType == "5") //服务备注 { result = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().UpdateServiceRemark(OrderNum, Utils.GetFormValue("Content")); } else if (opearType == "6") //修改特殊备注 { result = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().UpdateBuyerRemark(OrderNum, Utils.GetFormValue("Content")); } else if (opearType == "InsertAccount") //支付前处理操作 { string orderId = Utils.GetFormValue("orderId"); string orderNo = Utils.GetFormValue("orderNo"); string sellCId = Utils.GetFormValue("sellcId"); string batchNo = ""; string total = Utils.GetFormValue("total"); string currUId = SiteUserInfo.ID; string currCId = SiteUserInfo.CompanyID; string payType = Utils.GetFormValue("PayType"); decimal IntoRatio = decimal.Parse(AlipayParameters.TongyeFee); //平台交易费 EyouSoft.IBLL.TicketStructure.ITicketCompanyAccount bll = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance(); //当前只能判断支付宝接口的帐户 IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = bll.GetTicketCompanyAccountList(sellCId); EyouSoft.Model.TicketStructure.ItemType? itemType = EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单; //流水金额记录项类型 IList <EyouSoft.Model.TicketStructure.TicketPay> payList = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().GetPayList(orderId, itemType, orderNo, ""); //获取交易记录 EyouSoft.Model.TicketStructure.TicketAccountType accountType = (EyouSoft.Model.TicketStructure.TicketAccountType)Utils.GetInt(payType); //获取支付类型 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)) { result = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayBefore(orderId, orderNo, sellAccount, IntoRatio, SiteUserInfo.ID, SiteUserInfo.CompanyID, Convert.ToDecimal(total), accountType, sellCId, "", out batchNo); } else if (payList != null && payList.Where(i => i.PayState == EyouSoft.Model.TicketStructure.PayState.交易完成).Count() > 0) { Utils.ResponseMeg(false, "你已经支付过,并且交易完成了!"); return; } else { result = true; } } else //退/作废/改/签操作 { EyouSoft.Model.TicketStructure.OrderChangeInfo changeinfo = new EyouSoft.Model.TicketStructure.OrderChangeInfo(); changeinfo.ChangeState = EyouSoft.Model.TicketStructure.OrderChangeState.申请; changeinfo.ChangeTime = DateTime.Now; changeinfo.ChangeUId = this.SiteUserInfo.ID; changeinfo.OrderId = OrderNum; changeinfo.ChangeId = Guid.NewGuid().ToString(); changeinfo.Travellers = new List <string>(); changeinfo.ChangeUFullName = SiteUserInfo.UserName; //IList<string> ids = null; string strids = Utils.GetFormValue("CheckperIds"); if (string.IsNullOrEmpty(strids)) { Utils.ResponseMeg(false, "请选择旅客!"); return; } else { //ids = new List<string>(); foreach (string item in StringValidate.Split(strids, ",")) { changeinfo.Travellers.Add(item); } } IsTravellerStateSucces(changeinfo.Travellers); //判断某旅客状态是否为退票成功 switch (opearType) { case "1": //退票 changeinfo.RefundTicketType = (EyouSoft.Model.TicketStructure.RefundTicketType)Enum.Parse(typeof(EyouSoft.Model.TicketStructure.RefundTicketType), Utils.GetFormValue("Content")); changeinfo.ChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.退票; changeinfo.ChangeState = EyouSoft.Model.TicketStructure.OrderChangeState.申请; break; case "2": //作废 changeinfo.RefundTicketType = (EyouSoft.Model.TicketStructure.RefundTicketType)Enum.Parse(typeof(EyouSoft.Model.TicketStructure.RefundTicketType), Utils.GetFormValue("Content")); changeinfo.ChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.作废; changeinfo.ChangeState = EyouSoft.Model.TicketStructure.OrderChangeState.申请; break; case "3": //改期 changeinfo.ChangeRemark = Utils.GetFormValue("Content"); changeinfo.ChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.改期; changeinfo.ChangeState = EyouSoft.Model.TicketStructure.OrderChangeState.申请; break; case "4": //改签 changeinfo.ChangeRemark = Utils.GetFormValue("Content"); changeinfo.ChangeType = EyouSoft.Model.TicketStructure.OrderChangeType.改签; changeinfo.ChangeState = EyouSoft.Model.TicketStructure.OrderChangeState.申请; break; default: break; } switch (EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().SetOrderChange(changeinfo)) { case 0: result = true; break; case 1: result = false; ErrorStr = "不能申请旅客状态变更!"; break; case 2: result = false; break; } } if (result) //根据操作结果提示 { Utils.ResponseMeg(true, "操作成功!"); return; } else { if (string.IsNullOrEmpty(ErrorStr)) { ErrorStr = "操作失败!"; } Utils.ResponseMeg(false, ErrorStr); return; } } }
/// <summary> /// 根据公司编号及支付接口类型设置是否加入支付圈电子协议签约 /// </summary> /// <param name="companyId">公司编号</param> /// <param name="accountType">支付接口类型</param> /// <param name="isSign">是否加入支付圈电子协议签约</param> /// <returns></returns> public bool SetIsSign(string companyId, EyouSoft.Model.TicketStructure.TicketAccountType accountType, bool isSign) { return(idal.SetIsSign(companyId, accountType, isSign)); }
/// <summary> /// 根据账户类型和公司ID返回公司账户实体 /// </summary> /// <param name="companyId">公司ID</param> /// <param name="accountType">账户类型</param> /// <returns></returns> public EyouSoft.Model.TicketStructure.TicketCompanyAccount GetModel(string companyId, EyouSoft.Model.TicketStructure.TicketAccountType accountType) { IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = GetTicketCompanyAccountList(companyId); EyouSoft.Model.TicketStructure.TicketCompanyAccount model = null; if (list != null) { model = list.FirstOrDefault(i => i.InterfaceType == accountType); } return(model); }
/// <summary> /// 支付回调 /// </summary> /// <param name="payNumber">支付接口返回的交易流水号</param> /// <param name="payprice">支付金额</param> /// <param name="paystate">支付状态</param> /// <param name="paytype">支付接口类型</param> /// <param name="payaccount">支付账号</param> /// <param name="paytradeno">提交到支付接口的交易号</param> /// <param name="paytime">支付时间</param> /// <param name="batchno">批次号</param> /// <returns></returns> public bool PayAfter(string payNumber, decimal?payprice, EyouSoft.Model.TicketStructure.PayState paystate, EyouSoft.Model.TicketStructure.TicketAccountType paytype, string payaccount, string paytradeno, DateTime?paytime, string batchno) { bool result = false; string itemId = string.Empty; //项目编号 string currCompanyId = string.Empty; //当前公司ID string currUserId = string.Empty; //当前用户ID EyouSoft.Model.TicketStructure.ItemType?itemType = null; //流水明细记录项类型 //回调后修改支付明细 idalTicketPayList.PayCallback(payNumber, paystate, string.Empty, paytradeno, batchno, paytype, out itemId, out itemType, out currCompanyId, out currUserId); if (paystate == EyouSoft.Model.TicketStructure.PayState.交易完成 && itemType.Value == EyouSoft.Model.TicketStructure.ItemType.供应商付款到平台_购买运价) { result = idal.SetPayInfo(itemId, true, DateTime.Now); } #region 回写运价信息 EyouSoft.Model.TicketStructure.TicketFreightBuyLog LogModel = idal.GetModelByOrderNo(paytradeno); if (LogModel != null) { if (LogModel.PackageType != EyouSoft.Model.TicketStructure.PackageTypes.常规 && !String.IsNullOrEmpty(LogModel.DestCityIds.Trim())) { string[] tmpDestCityIdList = LogModel.DestCityIds.Split(','); string[] tmpDestCityNameList = LogModel.DestCityNames.Split(','); IList <EyouSoft.Model.TicketStructure.TicketFreightInfo> FList = new List <EyouSoft.Model.TicketStructure.TicketFreightInfo>(); if (tmpDestCityIdList.Length > 0) { for (int i = 0; i < tmpDestCityIdList.Length; i++) { EyouSoft.Model.TicketStructure.TicketSeattle seattlemodel = EyouSoft.BLL.TicketStructure.TicketSeattle.CreateInstance().GetTicketSeattleById(Convert.ToInt32(tmpDestCityIdList[i])); if (seattlemodel != null) { EyouSoft.Model.TicketStructure.TicketFreightInfo FModel = new EyouSoft.Model.TicketStructure.TicketFreightInfo(); FModel.Id = Guid.NewGuid().ToString(); EyouSoft.Model.CompanyStructure.Company CompanyModel = new EyouSoft.Model.CompanyStructure.Company(); CompanyModel.ID = LogModel.CompanyId; FModel.Company = CompanyModel; CompanyModel = null; FModel.FlightId = LogModel.FlightId; FModel.FlightName = LogModel.FlightName; FModel.RateType = LogModel.RateType; FModel.NoGadHomeCityId = LogModel.HomeCityId; FModel.NoGadHomeCityIdName = LogModel.HomeCityName; FModel.NoGadDestCityId = int.Parse(tmpDestCityIdList[i]); FModel.NoGadDestCityName = seattlemodel.Seattle; FModel.BuyType = LogModel.PackageType; FModel.LastUpdateDate = DateTime.Now; FModel.IsEnabled = false; FModel.FreightBuyId = LogModel.Id; //FModel.FreightStartDate = LogModel.StartMonth; //FModel.FreightEndDate = LogModel.EndMonth; FList.Add(FModel); FModel = null; } } result = ifdal.AddFreightInfo(FList) > 0 ? true : false; FList = null; } } LogModel = null; } #endregion return(result); }
/// <summary> /// 购买运价套餐支付前添加支付流水明细信息 /// </summary> /// <param name="orderid">订单ID</param> /// <param name="orderno">订单号</param> /// <param name="userid">当前操作人ID</param> /// <param name="companyid">当前操作公司ID</param> /// <param name="payprice">支付金额</param> /// <param name="paytype">支付接口类型</param> /// <param name="batch_no">批次号</param> /// <returns></returns> public bool AddTicketPay(string orderid, string orderno, string userid, string companyid, decimal payprice, EyouSoft.Model.TicketStructure.TicketAccountType paytype, out string batch_no) { EyouSoft.Model.TicketStructure.TicketPay model = new EyouSoft.Model.TicketStructure.TicketPay(); model.ItemId = orderid; model.TradeNo = orderno; model.CurrCompanyId = companyid; model.CurrUserId = userid; model.IssueTime = DateTime.Now; model.PayPrice = payprice; model.PayState = EyouSoft.Model.TicketStructure.PayState.未提交到支付接口; model.PayType = paytype; model.Remark = string.Empty; model.ItemType = EyouSoft.Model.TicketStructure.ItemType.供应商付款到平台_购买运价; bool Isresult = idalTicketPayList.AddTicketPay(model); batch_no = model.BatchNo; return(Isresult); }
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); } } }