protected void Page_Load(object sender, EventArgs e) { PayAPI.Model.Ali.AliPayTradeNotify notify = PayAPI.Ali.Alipay.Create.GetNotifyAsync();//支付宝的返回通知实体 if (notify.IsTradeSuccess) { var info = new EyouSoft.Model.YlStructure.MZaiXianZhiFuInfo(); //在线支付实体 var onlinepay = new EyouSoft.BLL.YlStructure.BZaiXianZhiFu(); //在线支付BLL foreach (var item in notify.OrderInfo.OrderID) { info.DingDanId = item; //订单ID info.DingDanLeiXing = (EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing)Convert.ToInt32(notify.AttachList["OrderType"].Value); //订单类型 bool ispay = onlinepay.IsZhiFu(info.DingDanId, info.DingDanLeiXing); //获取订单支付状态(成功/失败) if (!ispay) { info.JiaoYiHao = notify.OutTradeNo; //流水号 info.ApiJiaoYiHao = notify.TradeNo; //支付流水号 info.JinE = notify.Totalfee; //支付金额 info.ZhiFuFangShi = EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Alipay; //支付方式 info.IsZhiFu = true; //是否已支付 info.ZhiFuTime = DateTime.Now; //支付时间 int bllRetCode = onlinepay.Insert(info); //添加支付记录 if (bllRetCode == 1) { //实现其它操作处理 switch (info.DingDanLeiXing) { case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单: HandlerJiFenDingDan(info.DingDanId); break; case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单: HandlerHangQiDingDan(info.DingDanId); break; } } } } } //支付接口回调通知 Response.Write(notify.PayAPICallBackMsg); Response.End(); }
/// <summary> /// 初始化页面 /// </summary> void initPage() { string id = Utils.GetQueryStringValue("id"); MHangQiDingDanInfo model = new EyouSoft.BLL.YlStructure.BHangQiDingDan().GetDingDanInfo(id); if (model == null) { return; } fukuanzhuangtai.Text = model.FuKuanStatus.ToString(); if (model.FuKuanStatus == EyouSoft.Model.EnumType.YlStructure.FuKuanStatus.已付款) { var zxzfinfo = new EyouSoft.BLL.YlStructure.BZaiXianZhiFu().GetInfo(model.DingDanId); if (zxzfinfo != null) { switch (zxzfinfo.ZhiFuFangShi) { case EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Alipay: fukuanzhuangtai.Text += "【支付宝】"; break; case EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Bill99: fukuanzhuangtai.Text += "【快钱】"; break; default: break; } } } litZongJinE.Text = model.JinE.ToString("F2"); txtDingDanJiFen.Text = model.DingDanJiFen.ToString("F2"); if (model.DiKouInfo != null) { litDiKouJinE.Text = model.DiKouInfo.JinFenJinE.ToString("F2"); } else { litDiKouJinE.Text = "0.00"; } dingdanzhuangtai = ((int)(model.DingDanStatus)).ToString(); litKuaiDiJinE.Text = model.FaPiaoKuaiDiJinE.ToString("F2"); selectDDL.Text = getSelectState(((int)model.DingDanStatus).ToString()); txtCaoZuoBeiZhu.Value = model.CaoZuoBeiZhu; #region 游轮信息 gongyingshang.Text = model.GysName; youlungongsi.Text = model.GongSiName; youlunxilie.Text = model.XiLieName; youlunchuanzhi.Text = model.ChuanZhiName; var hangqi = new EyouSoft.BLL.YlStructure.BHangQi().GetHangQiInfo(model.HangQiId);//获取航期 if (hangqi != null) { chufagangkou.Text = hangqi.ChuFaGangKouMingCheng; didagangkou.Text = hangqi.DiDaGangKouMingCheng; xingchengtianshu.Text = string.Format("{0}天{1}晚", hangqi.TianShu1, hangqi.TianShu2); chanpinmingcheng.Text = hangqi.MingCheng; chanpinbianhao.Text = hangqi.BianHao; } #endregion #region 价格信息 jiagexingxi.Text = GetFangXingString(model); #endregion #region 附加产品 if (model.FuJiaChanPins != null && model.FuJiaChanPins.Count > 0) { rptfujia.DataSource = model.FuJiaChanPins; rptfujia.DataBind(); PlaceHolder2.Visible = false; } #endregion #region 优惠信息 if (model.YouHuis != null && model.YouHuis.Count > 0) { rptyouhuis.DataSource = model.YouHuis; rptyouhuis.DataBind(); } #endregion #region 游客信息 if (model.YouKes != null && model.YouKes.Count > 0) { rptyouke.DataSource = model.YouKes; rptyouke.DataBind(); PlaceHolder3.Visible = false; } #endregion #region 预订信息 yudingxingming.Text = model.YuDingRenName; //yudingzhanghao.Text=model.yudingz yudingshijian.Text = model.IssueTime.ToString(); yudinglianxidianhua.Text = model.YuDingRenDianHua; yudinglianxishouji.Text = model.YuDingRenShouJi; yudinglianxiyouxiang.Text = model.YuDingRenYouXiang; xiadanbeizhu.Text = model.XiaDanBeiZhu; #endregion #region 发票信息 if (model.IsXuYaoFaPiao) { var dizhi = new EyouSoft.BLL.YlStructure.BHuiYuan().GetDiZhiInfo(model.FaPiaoDiZhiId); if (dizhi != null) { var dizhixiangqing = new EyouSoft.BLL.ComStructure.BComCity().GetCPCD(SiteUserInfo.CompanyId, dizhi.GuoJiaId, dizhi.ShengFenId, dizhi.ChengShiId, dizhi.XianQuId); //youjidizhi.Text = string.Format("{0}({1})", dizhixiangqing != null ? dizhixiangqing.CountryName + dizhixiangqing.ProvinceName + dizhixiangqing.CityName + dizhixiangqing.CountyName + dizhi.DiZhi : "", model.FaPiaoPeiSongFangShi); if (dizhixiangqing != null) { youjidizhi.Text = dizhixiangqing.ProvinceName + " " + dizhixiangqing.CityName + " " + dizhixiangqing.CountyName + " " + dizhi.DiZhi; shoujianrenxingming.Text = dizhi.XingMing; shoujianrendianhua.Text = dizhi.DianHua; } } ltrFaPiaoTaiTou.Text = model.FaPiaoTaiTou; ltrFaPiaoMingXi.Text = model.FaPiaoMingXi; phFaPiao1.Visible = true; ltrShiFouXuYaoFaPiao.Text = "需要发票"; } else { ltrShiFouXuYaoFaPiao.Text = "不需要发票"; } #endregion chufariqi.Text = model.RiQi.ToString("yyyy-MM-dd"); if (model.DingDanStatus == EyouSoft.Model.EnumType.YlStructure.HangQiDingDanStatus.取消) { ltrCaoZuo.Text = "订单已取消"; } else { if (model.FuKuanStatus == EyouSoft.Model.EnumType.YlStructure.FuKuanStatus.已付款) { ltrCaoZuo.Text = "订单已付款"; } else { ltrCaoZuo.Text = "<a id=\"btnSave\" href=\"javascript:;\"><s class=\"baochun\"></s>保 存</a> "; } } }
protected void Page_Load(object sender, EventArgs e) { System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath("/unionpay/notify_data.txt")); sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); sw.Close(); // 要使用各种Srv必须先使用LoadConf载入配置 string strConfigPath = EyouSoft.Toolkit.ConfigHelper.ConfigClass.GetConfigString("UnionpayConfigFilepath"); UPOPSrv.LoadConf(Server.MapPath(strConfigPath)); // 使用Post过来的内容构造SrvResponse SrvResponse resp = new SrvResponse(Util.NameValueCollection2StrDict(Request.Form)); #region 取得返回参数 string respCode = resp.Fields["respCode"]; string merId = resp.Fields["merId"]; string orderAmount = resp.Fields["orderAmount"]; string orderNumber = resp.Fields["orderNumber"]; string qid = resp.Fields["qid"]; string respTime = resp.Fields["respTime"]; string version = resp.Fields["version"]; string strOrderID = orderNumber.Substring(15, orderNumber.Length - 15); string strOrderTpye = orderNumber.Substring(14, 1); var dingDanLeiXing = (EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing)Convert.ToInt32(strOrderTpye); string dingDanId = string.Empty; if (dingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单) { dingDanId = new EyouSoft.BLL.YlStructure.BDuiHuan().GetDingDanId(Utils.GetInt(strOrderID)); } else if (dingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单) { dingDanId = new EyouSoft.BLL.YlStructure.BHangQiDingDan().GetDingDanId(Utils.GetInt(strOrderID)); } #endregion // 收到回应后做后续处理 string strMsg = "支付失败!"; if (resp.ResponseCode == SrvResponse.RESP_SUCCESS) { var info = new EyouSoft.Model.YlStructure.MZaiXianZhiFuInfo(); //在线支付实体 var onlinepay = new EyouSoft.BLL.YlStructure.BZaiXianZhiFu(); //在线支付BLL info.DingDanId = dingDanId; //订单ID info.DingDanLeiXing = dingDanLeiXing; //订单类型 bool ispay = onlinepay.IsZhiFu(info.DingDanId, info.DingDanLeiXing); //获取订单支付状态(成功/失败) if (!ispay) { info.JiaoYiHao = orderNumber; //流水号 info.ApiJiaoYiHao = qid; //支付流水号 info.JinE = Utils.GetDecimal(orderAmount); //支付金额 info.ZhiFuFangShi = EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Unionpay; //支付方式 info.IsZhiFu = true; //是否已支付 info.ZhiFuTime = DateTime.Now; //支付时间 int bllRetCode = onlinepay.Insert(info); //添加支付记录 if (bllRetCode == 1) { //实现其它操作处理 switch (info.DingDanLeiXing) { case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单: HandlerJiFenDingDan(info.DingDanId); break; case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单: HandlerHangQiDingDan(info.DingDanId); break; } } } strMsg = "支付成功"; } //支付接口回调通知 Response.Write(strMsg); Response.End(); }
protected void Page_Load(object sender, EventArgs e) { PayAPI.Model.Ali.AliPayTradeNotify notify = PayAPI.Ali.Alipay.Create.GetReturn();//支付宝的返回通知实体 string rurl = string.Empty; var YuMingInfo = EyouSoft.Security.Membership.YlHuiYuanProvider.GetYuMingInfo(); rurl = "http://" + YuMingInfo.YuMing; if (notify.IsTradeSuccess) { var info = new EyouSoft.Model.YlStructure.MZaiXianZhiFuInfo(); //在线支付实体 var onlinepay = new EyouSoft.BLL.YlStructure.BZaiXianZhiFu(); //在线支付BLL foreach (var item in notify.OrderInfo.OrderID) { info.DingDanId = item; //订单ID info.DingDanLeiXing = (EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing)Convert.ToInt32(notify.AttachList["OrderType"].Value); //订单类型 bool ispay = onlinepay.IsZhiFu(info.DingDanId, info.DingDanLeiXing); //获取订单支付状态(成功/失败) if (info.DingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单) { var dingdaninfo = new EyouSoft.BLL.YlStructure.BHangQiDingDan().GetDingDanInfo(info.DingDanId); if (dingdaninfo != null) { rurl += "/hangqi/dingdanxx.aspx?dingdanid=" + info.DingDanId + "&dingdanleixing=" + (int)info.DingDanLeiXing + "&token=" + dingdaninfo.XiaDanRenId; } } else if (info.DingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单) { var dingdaninfo = new EyouSoft.BLL.YlStructure.BDuiHuan().GetJiFenDingDanInfo(info.DingDanId); rurl += "/hangqi/JiFenDingDanXX.aspx?dingdanid=" + info.DingDanId + "&dingdanleixing=" + (int)info.DingDanLeiXing + "&token=" + dingdaninfo.XiaDanRenId; } if (!ispay) { info.JiaoYiHao = notify.OutTradeNo; //流水号 info.ApiJiaoYiHao = notify.TradeNo; //支付流水号 info.JinE = notify.Totalfee; //支付金额 info.ZhiFuFangShi = EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Alipay; //支付方式 info.IsZhiFu = true; //是否已支付 info.ZhiFuTime = DateTime.Now; //支付时间 int bllRetCode = onlinepay.Insert(info); //添加支付记录 if (bllRetCode == 1) { //实现其它操作处理 switch (info.DingDanLeiXing) { case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单: HandlerJiFenDingDan(info.DingDanId); break; case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单: HandlerHangQiDingDan(info.DingDanId); break; } } } } } //支付接口回调通知 Response.Write(notify.PayAPICallBackMsg); Response.Redirect(rurl); Response.End(); }
protected void Page_Load(object sender, EventArgs e) { //人民币网关账号,该账号为11位人民币网关商户编号+01,该值与提交时相同。 string merchantAcctId = Request.QueryString["merchantAcctId"].ToString(); //网关版本,固定值:v2.0,该值与提交时相同。 string version = Request.QueryString["version"].ToString(); //语言种类,1代表中文显示,2代表英文显示。默认为1,该值与提交时相同。 string language = Request.QueryString["language"].ToString(); //签名类型,该值为4,代表PKI加密方式,该值与提交时相同。 string signType = Request.QueryString["signType"].ToString(); //支付方式,一般为00,代表所有的支付方式。如果是银行直连商户,该值为10,该值与提交时相同。 string payType = Request.QueryString["payType"].ToString(); //银行代码,如果payType为00,该值为空;如果payType为10,该值与提交时相同。 string bankId = Request.QueryString["bankId"].ToString(); //商户订单号,,该值与提交时相同。 string orderId = Request.QueryString["orderId"].ToString(); //订单提交时间,格式:yyyyMMddHHmmss,如:20071117020101,该值与提交时相同。 string orderTime = Request.QueryString["orderTime"].ToString(); //订单金额,金额以“分”为单位,商户测试以1分测试即可,切勿以大金额测试,该值与支付时相同。 string orderAmount = Request.QueryString["orderAmount"].ToString(); // 快钱交易号,商户每一笔交易都会在快钱生成一个交易号。 string dealId = Request.QueryString["dealId"].ToString(); //银行交易号 ,快钱交易在银行支付时对应的交易号,如果不是通过银行卡支付,则为空 string bankDealId = Request.QueryString["bankDealId"].ToString(); //快钱交易时间,快钱对交易进行处理的时间,格式:yyyyMMddHHmmss,如:20071117020101 string dealTime = Request.QueryString["dealTime"].ToString(); //商户实际支付金额 以分为单位。比方10元,提交时金额应为1000。该金额代表商户快钱账户最终收到的金额。 string payAmount = Request.QueryString["payAmount"].ToString(); //费用,快钱收取商户的手续费,单位为分。 string fee = Request.QueryString["fee"].ToString(); //扩展字段1,该值与提交时相同。 string ext1 = Request.QueryString["ext1"].ToString(); //扩展字段2,该值与提交时相同。 string ext2 = Request.QueryString["ext2"].ToString(); //处理结果, 10支付成功,11 支付失败,00订单申请成功,01 订单申请失败 string payResult = Request.QueryString["payResult"].ToString(); //错误代码 ,请参照《人民币网关接口文档》最后部分的详细解释。 string errCode = Request.QueryString["errCode"].ToString(); //签名字符串 string signMsg = Request.QueryString["signMsg"].ToString(); string signMsgVal = ""; signMsgVal = appendParam(signMsgVal, "merchantAcctId", merchantAcctId); signMsgVal = appendParam(signMsgVal, "version", version); signMsgVal = appendParam(signMsgVal, "language", language); signMsgVal = appendParam(signMsgVal, "signType", signType); signMsgVal = appendParam(signMsgVal, "payType", payType); signMsgVal = appendParam(signMsgVal, "bankId", bankId); signMsgVal = appendParam(signMsgVal, "orderId", orderId); signMsgVal = appendParam(signMsgVal, "orderTime", orderTime); signMsgVal = appendParam(signMsgVal, "orderAmount", orderAmount); signMsgVal = appendParam(signMsgVal, "dealId", dealId); signMsgVal = appendParam(signMsgVal, "bankDealId", bankDealId); signMsgVal = appendParam(signMsgVal, "dealTime", dealTime); signMsgVal = appendParam(signMsgVal, "payAmount", payAmount); signMsgVal = appendParam(signMsgVal, "fee", fee); signMsgVal = appendParam(signMsgVal, "ext1", ext1); signMsgVal = appendParam(signMsgVal, "ext2", ext2); signMsgVal = appendParam(signMsgVal, "payResult", payResult); signMsgVal = appendParam(signMsgVal, "errCode", errCode); ///UTF-8编码 GB2312编码 用户可以根据自己网站的编码格式来选择加密的编码方式 ///byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(signMsgVal); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(signMsgVal); byte[] SignatureByte = Convert.FromBase64String(signMsg); X509Certificate2 cert = new X509Certificate2(Server.MapPath("99bill.cert.rsa.20140728.cer"), ""); //X509Certificate2 cert = new X509Certificate2(Server.MapPath("99bill[1].cert.rsa.20140803.cer"), ""); //X509Certificate2 cert = new X509Certificate2(Server.MapPath("99bill.cert.rsa.20340630.cer"), ""); RSACryptoServiceProvider rsapri = (RSACryptoServiceProvider)cert.PublicKey.Key; rsapri.ImportCspBlob(rsapri.ExportCspBlob(false)); RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsapri); byte[] result; f.SetHashAlgorithm("SHA1"); SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); result = sha.ComputeHash(bytes); if (f.VerifySignature(result, SignatureByte)) { string rurl = string.Empty; var YuMingInfo = EyouSoft.Security.Membership.YlHuiYuanProvider.GetYuMingInfo(); rurl = "http://" + YuMingInfo.YuMing; //逻辑处理 写入数据库 if (payResult == "10") { //此处做商户逻辑处理 var info = new EyouSoft.Model.YlStructure.MZaiXianZhiFuInfo(); //在线支付实体 var onlinepay = new EyouSoft.BLL.YlStructure.BZaiXianZhiFu(); //在线支付BLL info.DingDanId = ext1; //订单ID info.DingDanLeiXing = (EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing)Convert.ToInt32(ext2); //订单类型 bool ispay = onlinepay.IsZhiFu(info.DingDanId, info.DingDanLeiXing); //获取订单支付状态(成功/失败) if (info.DingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单) { var dingdaninfo = new EyouSoft.BLL.YlStructure.BHangQiDingDan().GetDingDanInfo(info.DingDanId); if (dingdaninfo != null) { rurl += "/hangqi/dingdanxx.aspx?dingdanid=" + info.DingDanId + "&dingdanleixing=" + (int)info.DingDanLeiXing + "&token=" + dingdaninfo.XiaDanRenId; } } else if (info.DingDanLeiXing == EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单) { var dingdaninfo = new EyouSoft.BLL.YlStructure.BDuiHuan().GetJiFenDingDanInfo(info.DingDanId); rurl += "/hangqi/JiFenDingDanXX.aspx?dingdanid=" + info.DingDanId + "&dingdanleixing=" + (int)info.DingDanLeiXing + "&token=" + dingdaninfo.XiaDanRenId; } if (!ispay) { info.JiaoYiHao = orderId; //流水号 info.ApiJiaoYiHao = dealId; //支付流水号 info.JinE = Utils.GetDecimal(orderAmount) / 100M; //支付金额 info.ZhiFuFangShi = EyouSoft.Model.EnumType.YlStructure.ZaiXianZhiFuFangShi.Bill99; //支付方式 info.IsZhiFu = true; //是否已支付 info.ZhiFuTime = DateTime.Now; //支付时间 int bllRetCode = onlinepay.Insert(info); //添加支付记录 if (bllRetCode == 1) { //实现其它操作处理 switch (info.DingDanLeiXing) { case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.兑换订单: HandlerJiFenDingDan(info.DingDanId); break; case EyouSoft.Model.EnumType.YlStructure.DingDanLeiXing.航期订单: HandlerHangQiDingDan(info.DingDanId); break; } } } //以下是我们快钱设置的show页面,商户需要自己定义该页面。 Response.Write("<result>1</result>" + "<redirecturl>" + rurl + "</redirecturl>"); } else { //以下是我们快钱设置的show页面,商户需要自己定义该页面。 Response.Write("<result>1</result>" + "<redirecturl>" + rurl + "</redirecturl>"); //Response.Write("signMsgVal=" + "(" + signMsgVal + ")"); //Response.Write("</br>" + "signMsg =" + signMsg); //Response.Write("</br>" + "错误"); } } else { Response.Write("signMsgVal=" + "(" + signMsgVal + ")"); Response.Write("</br>" + "signMsg =" + signMsg); Response.Write("</br>" + "错误"); } }