public async Task <ActionResult> AlipayNotifyUrl() { var loger = LogManager.GetLogger("Alipay"); SortedDictionary <string, string> sPara = GetRequestPost(); Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (sPara.Count > 0 && verifyResult) { //商户订单号 string outTradeNo = Request.Form["out_trade_no"]; //支付宝交易号 string tradeNo = Request.Form["trade_no"]; //交易状态 string tradeStatus = Request.Form["trade_status"]; //打日志 loger.Error("orderNo:{0};tradeStatus:{1};", outTradeNo, tradeStatus); if (tradeStatus == "TRADE_FINISHED" || tradeStatus == "TRADE_SUCCESS") { //await OrderContract.PayOrder(outTradeNo, tradeNo, PayType.支付宝); return(Content("success")); //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 //1、开通了高级即时到账,买家付款成功后。 } } return(Content("")); }
/// <summary> /// 支付宝异步返回订单交易信息 post /// </summary> /// <param name="context">当前上下文</param> /// <returns></returns> public ZFBReturnPara_Model ZFBCallBack(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); zfbpara.iscallbacksuccess = false; SortedDictionary<string, string> sPara = GetRequestPost(context); if (sPara.Count > 0) { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]); if (verifyResult)//验证成功 { #region //退款状态,付款成功 没有此参数 string refund_status = "refund_status".GetFormString(); //交易状态 string trade_status = "trade_status".GetFormString(); zfbpara.trade_no = context.Request.Form["trade_no"]; zfbpara.order_no = context.Request.Form["out_trade_no"]; zfbpara.total_fee = context.Request.Form["total_fee"]; zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false; zfbpara.isallreturn = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else zfbpara.sendzfbcallbackmessage = "fail"; } else zfbpara.sendzfbcallbackmessage = "无通知参数"; return zfbpara; }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }
public ActionResult AlipayReturnUrl() { SortedDictionary <string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { // PresellOrderContract.OrederPay(out_trade_no, PayTypes.支付宝); return(Content("success")); //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 //1、开通了高级即时到账,买家付款成功后。 } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } return(Content("")); }
/// <summary> /// 支付宝异步返回订单交易信息 post /// </summary> /// <param name="context">当前上下文</param> /// <returns></returns> public ZFBReturnPara_Model ZFBCallBack(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); zfbpara.iscallbacksuccess = false; SortedDictionary <string, string> sPara = GetRequestPost(context); if (sPara.Count > 0) { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]); if (verifyResult)//验证成功 { #region //退款状态,付款成功 没有此参数 string refund_status = "refund_status".GetFormString(); //交易状态 string trade_status = "trade_status".GetFormString(); zfbpara.trade_no = context.Request.Form["trade_no"]; zfbpara.order_no = context.Request.Form["out_trade_no"]; zfbpara.total_fee = context.Request.Form["total_fee"]; zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false; zfbpara.isallreturn = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else { zfbpara.sendzfbcallbackmessage = "fail"; } } else { zfbpara.sendzfbcallbackmessage = "无通知参数"; } return(zfbpara); }
public ActionResult Result() { Dictionary <string, string> sPara = GetParamGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.VerifyReturn(sPara, Request.QueryString["sign"]); if (verifyResult)//验证成功 { //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string result = Request.QueryString["result"]; if (string.Compare(result, "success", true) == 0) { return(Redirect("/recentread/index".GetChannelRouteUrl(RouteChannelId))); } //Response.Write("验证成功<br />"); } else//验证失败 { //Response.Write("验证失败"); } } else { //Response.Write("无返回参数"); } return(Redirect("/order/recharge".GetChannelRouteUrl(RouteChannelId))); }
/// <summary> /// 支付宝 返回 前端订单交易信息 get /// </summary> /// <param name="context"></param> /// <returns></returns> public ZFBReturnPara_Model ZFBReturn(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); SortedDictionary <string, string> sPara = GetRequestGet(context); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]); if (verifyResult)//验证成功 { #region //交易状态 string trade_status = "trade_status".GetUrlString(); zfbpara.trade_no = "trade_no".GetUrlString(); zfbpara.order_no = "out_trade_no".GetUrlString(); zfbpara.total_fee = "total_fee".GetUrlString(); zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false; zfbpara.isallreturn = false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else { zfbpara.sendzfbcallbackmessage = "fail"; } } else { zfbpara.sendzfbcallbackmessage = "无通知参数"; } return(zfbpara); }
public ActionResult Payment_Result() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; var 当前用户 = currentUser as 供应商; var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString(); double amount = 0D; switch (会员级别) { case "军采通标准会员": switch (account) { case "2850": amount = double.Parse(account) / 0.95; break; case "5400": amount = double.Parse(account) / 0.9; break; case "8500": amount = double.Parse(account) / 0.85; break; case "16000": amount = double.Parse(account) / 0.8; break; } break; case "军采通高级会员": switch (account) { case "2700": amount = double.Parse(account) / 0.9; break; case "5100": amount = double.Parse(account) / 0.85; break; case "8000": amount = double.Parse(account) / 0.8; break; case "15000": amount = double.Parse(account) / 0.75; break; } break; default: switch (account) { case "2940": amount = double.Parse(account) * 0.98; break; case "5700": amount = double.Parse(account) * 0.95; break; case "9200": amount = double.Parse(account) * 0.92; break; case "18000": amount = double.Parse(account) * 0.9; break; } break; } var 充值记录 = new 供应商充值记录(); 充值记录.充值方式 = 充值方式.支付宝; 充值记录.充值金额 = (decimal)amount; 充值记录.充值时间 = DateTime.Now; 充值记录.供应商转款账号 = Request.QueryString["buyer_email"]; 充值记录.收款账号 = Request.QueryString["seller_email"]; 充值记录.所属供应商.用户ID = currentUser.Id; 供应商充值记录管理.添加供应商充值记录(充值记录); var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id)); if (余额记录.Count() > 0) { var model = 余额记录.First(); model.可用余额 += 充值记录.充值金额; 供应商充值余额管理.更新供应商充值余额(model); } else { var 充值余额 = new 供应商充值余额(); 充值余额.可用余额 = 充值记录.充值金额; 充值余额.所属供应商.用户ID = currentUser.Id; 供应商充值余额管理.添加供应商充值余额(充值余额); } //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { ViewData["Trade_Status"] = 1;//1充值成功,0充值失败 ViewData["result"] = amount; //Request.QueryString["total_fee"]; //充值金额 //ViewData["result"] = "用户号为" + Request.QueryString["buyer_id"] + "的你已购买价值为" + Request.QueryString["total_fee"] + "军采通产品,流水号位" + Request.QueryString["trade_no"] + "交易状态:" + Request.QueryString["trade_status"] + "验证ID为:" + Request.QueryString["notify_id"]; } else { ViewData["Trade_Status"] = 0; //Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { //Response.Write("验证失败"); ViewData["Trade_Status"] = 0; } } else { ViewData["result"] = "无返回参数"; //Response.Write("无返回参数"); } return View(); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
///// <summary> ///// ///// </summary> ///// <returns></returns> //public ActionResult notify_url() //{ // SortedDictionary<string, string> sPara = GetRequestPost(); // if (sPara.Count > 0)//判断是否有带返回参数 // { // Notify aliNotify = new Notify(); // bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); // if (verifyResult)//验证成功 // { // ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // //请在这里加上商户的业务逻辑程序代码 // //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— // //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 // //商户订单号 // string out_trade_no = Request.Form["out_trade_no"]; // //支付宝交易号 // string trade_no = Request.Form["trade_no"]; // //交易状态 // string trade_status = Request.Form["trade_status"]; // if (Request.Form["trade_status"] == "TRADE_FINISHED") // { // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 // } // else if (Request.Form["trade_status"] == "TRADE_SUCCESS") // { // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //付款完成后,支付宝系统发送该交易状态通知 // } // else // { // } // //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— // Response.Write("success"); //请不要修改或删除 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // } // else//验证失败 // { // Response.Write("fail"); // } // } // else // { // Response.Write("无通知参数"); // } // return View(); //} public ActionResult return_url() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //获取总金额 string total_fee = Request.QueryString["total_fee"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { return RedirectToAction("TradeSuccess", "ChannelEvent", new RouteValueDictionary { { "area", "Event" }, { "orderNumber", out_trade_no }}); //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } return View(); }
public void Notify() { string errorMessage = "fail"; Dictionary <string, string> sPara = GetParamPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.VerifyNotify(sPara, Request.Form["sign"]); if (verifyResult)//验证成功 { //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { XmlHelper xmlHelper = new XmlHelper(sPara["notify_data"]); if (xmlHelper != null) { //商户订单号 string out_trade_no = xmlHelper.GetNodeString("/notify/out_trade_no"); //支付宝交易号 string trade_no = xmlHelper.GetNodeString("/notify/trade_no"); //交易状态 string trade_status = xmlHelper.GetNodeString("/notify/trade_status"); string buyer_email = xmlHelper.GetNodeString("/notify/buyer_email"); string seller_id = xmlHelper.GetNodeString("/notify/seller_id"); decimal total_fee = xmlHelper.GetNodeDecimal("/notify/total_fee"); if (string.Compare(Com.Alipay.Config.Partner, seller_id, true) == 0 && (string.Compare(trade_status, "TRADE_FINISHED", true) == 0 || string.Compare(trade_status, "TRADE_SUCCESS", true) == 0)) { int result = 0; RechargeInfo model = new RechargeInfo(); model.OrderId = out_trade_no; model.FOrderId = trade_no; model.Cash = total_fee * 100; model.PayMobile = ""; _rechargeService.Completed(model, out result); //1:成功 0:失败 if (result == (int)ErrorMessage.成功) { errorMessage = "success"; } } else { errorMessage = trade_status; } } } catch { } } } else { errorMessage = "无通知参数"; } this.Response.Write(errorMessage); }
// 异步调用,支付宝会在24小时内多次调用,直到成功为止 public ActionResult AlipayNotify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } return View(); }
public void Notify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.Form["total_fee"]; string ordercode = ""; /*if (!string.IsNullOrWhiteSpace(Request.Form["body"])) { ordercode = Request.Form["body"];//优惠码 }*/ string id = Request.Form["extra_common_param"];//传回的商品id和采购数量 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) != 0) { 订单 model = 订单管理.查找订单(long.Parse(id)); if (!model.已付款) { /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode&&m.已使用==false))>0) { model.使用优惠码 = true; 优惠码 yh=优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First(); yh.已使用 = true; 优惠码管理.更新优惠码(yh); }*/ model.已付款 = true; 订单管理.更新订单(model); } } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } } }
public string Contact() { SqlConnection sqlCnt = DBHelper.getConnection(); SqlCommand cmd = null; SqlTransaction sqlTransaction = null; SqlConnection sqlCnt2 = DBHelper.createConnection(); SqlCommand cmd2 = null; SqlDataReader reader = null; log4netHelper.info("Notify:" , "Begin--收到异步通知"); string rtnXML ="",buyerAcount=""; string out_trade_no = ""; string content = ""; bool isSuccess = false; string mrnString = ""; string flowString = ""; string posString = ""; double feeRtn = 0; DateTime payDate = new DateTime(); Dictionary<string, string> sPara = GetRequestPost(Request.Form); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.VerifyNotify(sPara, sPara["sign"]); if (verifyResult)//验证成功 { ////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 int status = 0; //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) //sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { rtnXML = sPara["notify_data"]; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(sPara["notify_data"]); //商户订单号 out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; //支付宝帐号 buyerAcount = xmlDoc.SelectSingleNode("/notify/buyer_email").InnerText; //金额 feeRtn = double.Parse(xmlDoc.SelectSingleNode("/notify/total_fee").InnerText); //支付宝交易号 string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; //交易状态 string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; // payDate = DateTime.Parse(xmlDoc.SelectSingleNode("/notify/gmt_payment").InnerText); posString = xmlDoc.SelectSingleNode("/notify/subject").InnerText; xmlDoc = null; mrnString = ""; flowString = ""; int posStart = 0; int posEnd = 0; posStart = posString.IndexOf(":{") + 2; posEnd = posString.IndexOf("}"); if ((posEnd - posStart) > 3) { mrnString = posString.Substring(posStart, posEnd - posStart); posStart = posString.IndexOf(":[") + 2; posEnd = posString.IndexOf("]"); if ((posEnd - posStart) > 3) { flowString = posString.Substring(posStart, posEnd - posStart); posString = flowString.Substring(flowString.Length - 4, 4); flowString = flowString.Substring(0, flowString.Length - 4); } else { mrnString = ""; flowString = ""; posString = ""; } } else { mrnString = ""; flowString = ""; posString = ""; } log4netHelper.info("Notify:" + trade_status, "RTN:" + rtnXML); log4netHelper.info("Notify:", "流水号:" + out_trade_no); log4netHelper.info("Notify:", "淘宝订单号:" + trade_no); log4netHelper.info("Notify:", "支付宝帐号:" + buyerAcount); log4netHelper.info("Notify:", "金额:" + feeRtn.ToString()); log4netHelper.info("Notify", "mrn:" + mrnString); log4netHelper.info("Notify", "flowid:" + flowString); log4netHelper.info("Notify", "pos:" + posString); if (trade_status == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 status = 2; //return "异步通知:交易完成"; //Response.Write("success"); //请不要修改或删除 } else if (trade_status == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 status = 1; //return "异步通知:交易成功"; //Response.Write("success"); //请不要修改或删除 } else { status = -1; //Response.Write(trade_status); //return "异步通知:交易类型为其他"; } } catch (Exception exc) { status = -9; content = "解析报表有误:" + exc.Message; log4netHelper.info("Notify", "解析报表有误!"); //return "异步通知:解析报表出错"; } finally { log4netHelper.info("Notify", "解析走完!"); } if (status > 0) { if (out_trade_no.Length > 10 && mrnString.Length>4 && posString.Length==4 && flowString.Length >10) { Socket clientSocket = null; Guid guid = new Guid(); try { guid = new Guid(out_trade_no); string pcid =""; int count = 0; sqlCnt.Open(); sqlCnt2.Open(); cmd = sqlCnt.CreateCommand(); //创建SqlCommand对象 cmd2 = sqlCnt2.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "select COUNT(*) from BankMsgSwitch where GUID =@GUID"; //sql语句 cmd.Parameters.Add("@GUID", SqlDbType.UniqueIdentifier); cmd.Parameters["@GUID"].Value = guid; cmd2.CommandType = CommandType.Text; cmd2.CommandText = "select COUNT(*) from BankMsgSwitch where GUID =@GUID"; //sql语句 cmd2.Parameters.Add("@GUID", SqlDbType.UniqueIdentifier); cmd2.Parameters["@GUID"].Value = guid; cmd.Parameters.Add("@RMsg_xml", SqlDbType.Xml); cmd.Parameters["@RMsg_xml"].Value = rtnXML; cmd.Parameters.Add("@RMsg_txt", SqlDbType.Text); cmd.Parameters["@RMsg_txt"].Value = rtnXML; cmd.Parameters.Add("@BuyerAcount", SqlDbType.Text); cmd.Parameters["@BuyerAcount"].Value = buyerAcount; cmd.Parameters.Add("@Rdatetime", SqlDbType.DateTime); cmd.Parameters["@Rdatetime"].Value = DateTime.Now; cmd.Parameters.Add("@PayDate", SqlDbType.DateTime); cmd.Parameters["@PayDate"].Value = payDate; cmd.Parameters.Add("@FeeRtn", SqlDbType.Decimal); cmd.Parameters["@FeeRtn"].Value = feeRtn; cmd.Parameters.Add("@Mrn", SqlDbType.Int); cmd.Parameters["@Mrn"].Value = int.Parse(mrnString); count = (int)cmd.ExecuteScalar(); //cmd.CommandText = "select COUNT(*) from BankTradeTitle where GInterID =@GUID"; //count *= (int)cmd.ExecuteScalar(); if (count == 1 ) { cmd.CommandText = "select b.pcid as 'pcid' from pmain b where mrn =@Mrn"; reader = cmd.ExecuteReader(); if (reader.HasRows) { reader.Read(); pcid = reader["pcid"].ToString(); cmd.Parameters.Add("@Pcid", SqlDbType.Text); cmd.Parameters["@Pcid"].Value = reader["pcid"].ToString(); reader.Close(); reader.Dispose(); try { cmd.CommandText = "select RMsgText from BankMsgSwitch where GUID =@GUID"; string rMsgText = cmd.ExecuteScalar().ToString().Trim(); if (rMsgText.Length<3) { sqlTransaction = sqlCnt.BeginTransaction(); cmd.Transaction = sqlTransaction; cmd.CommandText = "update BankMsgSwitch set RMsg = @RMsg_xml ,RMsgText = @RMsg_txt,RDateTime=@Rdatetime,socketflag='0' where GUID = @GUID"; //sql语句 cmd.ExecuteNonQuery(); //cmd.CommandText = "insert into BankMnyFlow (FlowID,CrdNO,Mrn,DoType,DoMoney,Operater,Updatetime,BankID) values (@GUID,@Pcid,@Mrn,'1',@FeeRtn,@Operater,@Rdatetime,'100040')"; //sql语句 //cmd.ExecuteNonQuery(); //转账 sqlTransaction.Commit(); content = "更新日志表成功,待发送Socket"; log4netHelper.info("Notify", "SWITCH表Commit成功!"); log4netHelper.info("Notify", "身份证:" + pcid); log4netHelper.info("Notify", "GUID:" + guid.ToString()); log4netHelper.info("Notify", "更新日志表成功" ); } if (null != sqlTransaction) sqlTransaction.Dispose(); sqlTransaction = sqlCnt2.BeginTransaction(); cmd2.Transaction = sqlTransaction; cmd2.CommandText = "select socketflag from BankMsgSwitch where GUID =@GUID"; rMsgText = cmd2.ExecuteScalar().ToString().Trim(); if ("0".Equals(rMsgText)) { IPAddress ip = IPAddress.Parse(MyUtils.SystemParms.socketIP); clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(new IPEndPoint(ip, MyUtils.SystemParms.socketPort)); //配置服务器IP与端口 //通过clientSocket接收数据 //int receiveLength = clientSocket.Receive(result); //log4netHelper.fatal("Socket",Encoding.ASCII.GetString(result, 0, receiveLength)); ////Console.WriteLine("接收服务器消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength)); ////通过 clientSocket 发送数据 string sendMessage = "<Root><TransCode>801</TransCode><Date>" + payDate.ToString("yyyyMMdd") + "</Date><BankTrace></BankTrace><BankNumber></BankNumber>" + "<idno>" + pcid + "</idno><AMT>" + feeRtn.ToString("f2") + "</AMT><TradeCode>" + flowString + "</TradeCode><PosId>" + posString + "</PosId><Guid>" + out_trade_no + "</Guid></Root>"; clientSocket.Send(Encoding.GetEncoding("gb18030").GetBytes(sendMessage)); log4netHelper.info("Notify", "Socket:" + "发送"); Thread.Sleep(300); string recStr = ""; byte[] recBytes = new byte[4096]; int bytes = clientSocket.Receive(recBytes, recBytes.Length, 0); recStr = Encoding.GetEncoding("gb18030").GetString(recBytes, 0, bytes); //recStr += Encoding.Default.GetString(recBytes, 0, bytes); recStr = recStr.Substring(10, recStr.Length - 10); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(recStr); //商户订单号 recStr = xmlDoc.SelectSingleNode("/Response/TransReturn").InnerText; xmlDoc = null; log4netHelper.info("Notify", "Socket:" + "接受,TransReturn:" + recStr); } content = "成功发送Socket"; isSuccess = true; } catch (Exception e) { sqlTransaction.Rollback(); content = "更新日志表出错" + e.Message; isSuccess = false; //log4netHelper.info("Notify", ); } finally { if (null != sqlTransaction) { sqlTransaction.Dispose(); sqlTransaction = null; } if (null != clientSocket) { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } } } else { content = "无该订单信息"; isSuccess = false; //log4netHelper.info("Notify", "End:无该订单信息!"); //return "无该订单信息"; } } else { content = "BankMsgSwitch表记录有误!"; isSuccess = false; //log4netHelper.info("Notify", "BankMnyFlow、BankTradeTitle、BankMsgSwitch三个表记录有误!"); //return "BankMnyFlow、BankTradeTitle、BankMsgSwitch三个表记录有误!"; } } catch (Exception e) { content = "操作数据库有误:" + e.Message; isSuccess = false; log4netHelper.info("Notify", "操作数据库有误:" + e.Message); } finally { if (null != reader) { reader.Dispose(); } if (null != cmd) { cmd.Dispose(); } if (null != cmd2) { cmd2.Dispose(); } sqlCnt.Close(); sqlCnt2.Close(); sqlCnt2 = null; sqlCnt = null; } log4netHelper.info("Notify", "End:----"); } else { content = "GUID有误"; isSuccess = false; //log4netHelper.info("Notify", "End:GUID有误!"); //return "GUID有误"; } } else { content = "交易状态为其他"; isSuccess = false; //log4netHelper.info("Notify", "End:交易状态为其他"); //return "交易状态为其他"; } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { content = "验证失败"; isSuccess = false; //log4netHelper.info("Notify:", "End:验证失败!"); //return "验证失败"; } } else { //log4netHelper.info("Notify:", "End:无通知参数"); //return "无通知参数"; content = "无通知参数:" + sPara.Count; isSuccess = false; } if (isSuccess) { log4netHelper.info("Notify", "Success:" + content); log4netHelper.info("Notify:", " "); return "success"; } else { log4netHelper.info("Notify:", "Fail:" + content); log4netHelper.info("Notify:", " "); return "fail"; } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; Eyousoft_yhq.BLL.Order OrderType = new Eyousoft_yhq.BLL.Order(); var OrderModel = new Eyousoft_yhq.Model.Order(); string res = string.Empty; if (trade_status == "TRADE_FINISHED") { } else if (Request.QueryString["trade_status"] == "TRADE_SUCCESS") { OrderModel = OrderType.GetModel(out_trade_no); if (OrderModel != null && OrderModel.PayState != Eyousoft_yhq.Model.PaymentState.已支付) { Eyousoft_yhq.Model.MConDetaile jilu = new Eyousoft_yhq.Model.MConDetaile() { HuiYuanID = OrderModel.MemberID, XFway = Eyousoft_yhq.Model.XFfangshi.消费, DingDanBianHao = OrderModel.OrderCode, JiaoYiHao = DateTime.Now.ToString("yyyyMMddHHmm") + Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(5), JiaoYiShiJian = DateTime.Now, DDCarrtes = Eyousoft_yhq.Model.DDleibie.旅游订单, JinE = OrderModel.OrderPrice }; new Eyousoft_yhq.BLL.BConDetaile().Add(jilu);//消费记录 string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); while (OrderType.Exists(Ra)) { Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); } Eyousoft_yhq.Model.Order OrderInfo = new Eyousoft_yhq.Model.Order() { OrderID = out_trade_no, PayState = Eyousoft_yhq.Model.PaymentState.已支付, ConfirmCode = Ra, OrderState = Eyousoft_yhq.Model.OrderState.已成交 }; int Sum = OrderType.UpdatePayState(OrderInfo); if (Sum > 0) { Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member(); bool Mo = UM.GetModel(OrderModel.MemberID).valiUser; if (!Mo) { #region 短信发送 string code = string.Empty; IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels(); code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra); Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out res);//发送 #endregion #region 短信日志 Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog { TelCode = OrderModel.MemberTel, MsgText = code, ReResult = res }; new Eyousoft_yhq.BLL.MsgLog().Add(MsLog); #endregion } } } var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no); if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID); if (member != null) { member.YuE = member.YuE + chongzhiModel.OptMoney; bool result = new Eyousoft_yhq.BLL.Member().Update(member); } new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付); } } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 Response.Redirect("/Huiyuan/OrderList.aspx"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { Response.Write("success"); } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { var OrderModel = new Eyousoft_yhq.Model.Order(); var OrderBll = new Eyousoft_yhq.BLL.Order(); OrderModel = OrderBll.GetModel(out_trade_no); if (OrderModel != null && OrderModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { string result = string.Empty; string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); while (OrderBll.Exists(Ra)) { Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); } OrderModel.OrderID = out_trade_no; OrderModel.PayState = Eyousoft_yhq.Model.PaymentState.已支付; OrderModel.OrderState = Eyousoft_yhq.Model.OrderState.已成交; OrderModel.ConfirmCode = Ra; int Sum = OrderBll.UpdatePayState(OrderModel); if (Sum > 0) { Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member(); bool Mo = UM.GetModel(OrderModel.MemberID).valiUser; if (!Mo) { #region 短信发送 string code = string.Empty; IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels(); code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra); Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out result);//发送 #region 短信日志 Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog { TelCode = OrderModel.MemberTel, MsgText = code, ReResult = result }; new Eyousoft_yhq.BLL.MsgLog().Add(MsLog); #endregion #endregion } } } var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no); if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID); if (member != null) { member.YuE = member.YuE + chongzhiModel.OptMoney; bool result = new Eyousoft_yhq.BLL.Member().Update(member); } new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付); } } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; orderID = out_trade_no; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { succ = true; if (out_trade_no.Contains("C")) { ordertype = 1; } else if (out_trade_no.Contains("P")) { ordertype = 2; } ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no); if (m_mod == null) { ShowError("");//订单号错误 } if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay) { m_mod.CurrentID = trade_no;//记录支付流水号 ORD_CashBll.GetInstance().SetPaySucc(m_mod); } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回"+Request.QueryString["trade_status"], "PayReturnForAlipay",base.Request.UserHostAddress ); } //打印页面 ShowResult(); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回验证失败", "PayReturnForAlipay", base.Request.UserHostAddress); } } else { LogManagement.getInstance().WriteTrace("支付宝返回无参数", "PayReturnForAlipay", base.Request.UserHostAddress); ShowError("请从正确的入口进入"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"].Filter(); //支付宝交易号 string trade_no = Request.Form["trade_no"].Filter(); //交易状态 string trade_status = Request.Form["trade_status"].Filter(); //买家支付宝账号 string buyer_email = Request.Form["buyer_email"]; int orderStatus = 1;// (int)XHZ.Model.UOrderStatus.等待付款; if (trade_status.ToUpper() == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 orderStatus = (int)UOrderStatus.付款成功; } else if (trade_status.ToUpper() == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 orderStatus = (int)UOrderStatus.付款成功; } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Rc.Web.Payment.Core.LogHandler.WriteLogForPay(out_trade_no, "付款成功", trade_no); #region 付款成功 异步更新订单表 author:Ethan Model_UserOrder model = new Model_UserOrder(); BLL_UserOrder bll = new BLL_UserOrder(); model = bll.GetModelByOrderNo(out_trade_no); if (orderStatus == (int)UOrderStatus.付款成功 && model.UserOrder_Status == (int)UOrderStatus.待付款) { model.UserOrder_Paytool = UserOrder_PaytoolEnum.ALIPAY.ToString(); model.UsreOrder_Buyeremail = buyer_email; model.trade_no = trade_no; model.trade_status = trade_status; model.UserOrder_Status = (int)UOrderStatus.完成; model.UserOrder_FinishTime = DateTime.Now; bool executeFlag = false; if (new BLL_UserBuyResources().GetRecordCount(string.Format("UserId='{0}' and Book_id='{1}' ", model.UserId, model.Book_Id)) == 0) { #region 用户购买资源表 Model_UserBuyResources buyModel = new Model_UserBuyResources(); buyModel.UserBuyResources_ID = Guid.NewGuid().ToString(); buyModel.UserId = model.UserId; buyModel.Book_id = model.Book_Id; buyModel.BookPrice = model.Book_Price; buyModel.BuyType = UserOrder_PaytoolEnum.ALIPAY.ToString(); buyModel.CreateTime = DateTime.Now; buyModel.CreateUser = "******"; #endregion executeFlag = bll.UpdateAndAddUserBuyResources(model, buyModel); } else { executeFlag = bll.Update(model); } if (executeFlag) { //try //{ // P_User userModel = new P_UserBLL().GetModel(model.user_id); // pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已支付成功"); //} //catch //{ //} //if (new U_OrdersHandleBLL().GetRecordCount("OrderId='" + model.OrderId + "' and OperateUser='******'") == 0) //{ // pfunction.InsertOrderHandle(model.OrderId, "您已" + XHZ.Common.EnumService.GetDescription<UOrderStatus>(orderStatus), "支付接口异步回调"); //} new Rc.Cloud.BLL.BLL_clsAuth().AddLogFromBS(Request.Url.ToString(), string.Format("支付宝回调。购买资源成功,购买人:{0},资源标识:{1}" , model.UserId, model.Book_Id)); Response.Write("success"); //请不要修改或删除 } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public void Notify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); // WriteTxt(Request.Form["notify_id"]+"\r\n" + Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; var 当前用户 = currentUser as 供应商; var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString(); double amount = 0D; switch (会员级别) { case "军采通标准会员": switch (account) { case "2850": amount = double.Parse(account) / 0.95; break; case "5400": amount = double.Parse(account) / 0.9; break; case "8500": amount = double.Parse(account) / 0.85; break; case "16000": amount = double.Parse(account) / 0.8; break; } break; case "军采通高级会员": switch (account) { case "2700": amount = double.Parse(account) / 0.9; break; case "5100": amount = double.Parse(account) / 0.85; break; case "8000": amount = double.Parse(account) / 0.8; break; case "15000": amount = double.Parse(account) / 0.75; break; } break; default: switch (account) { case "2940": amount = double.Parse(account) * 0.98; break; case "5700": amount = double.Parse(account) * 0.95; break; case "9200": amount = double.Parse(account) * 0.92; break; case "18000": amount = double.Parse(account) * 0.9; break; } break; } var 充值记录 = new 供应商充值记录(); 充值记录.充值方式 = 充值方式.支付宝; 充值记录.充值金额 = (decimal)amount; 充值记录.充值时间 = DateTime.Now; 充值记录.供应商转款账号 = Request.QueryString["buyer_email"]; 充值记录.收款账号 = Request.QueryString["seller_email"]; 充值记录.所属供应商.用户ID = currentUser.Id; 供应商充值记录管理.添加供应商充值记录(充值记录); var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id)); if (余额记录.Count() > 0) { var model = 余额记录.First(); model.可用余额 += 充值记录.充值金额; 供应商充值余额管理.更新供应商充值余额(model); } else { var 充值余额 = new 供应商充值余额(); 充值余额.可用余额 = 充值记录.充值金额; 充值余额.所属供应商.用户ID = currentUser.Id; 供应商充值余额管理.添加供应商充值余额(充值余额); } //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { WriteTxt("订单号:" + out_trade_no + "交易号:" + trade_no + "交易状态:" + trade_status); } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public ActionResult Notify2() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0) { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult) { string out_trade_no = Request.Form["out_trade_no"]; string trade_no = Request.Form["trade_no"]; string trade_status = Request.Form["trade_status"]; var amount = decimal.Parse(Request.Form["total_fee"]); if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { var paymentEntity = Context.Set<OrderTransactionEntity>().Where(p => p.OrderNo == out_trade_no && p.PaymentCode == Config.PaymentCode).FirstOrDefault(); var orderEntity = Context.Set<OrderEntity>().Where(o => o.OrderNo == out_trade_no).FirstOrDefault(); if (paymentEntity == null && orderEntity != null) { OrderTransactionEntity orderTransaction = null; using (var ts = new TransactionScope()) { _paymentNotifyRepo.Insert(new PaymentNotifyLogEntity() { CreateDate = DateTime.Now, OrderNo = out_trade_no, PaymentCode = Config.PaymentCode, PaymentContent = JsonConvert.SerializeObject(sPara) }); orderTransaction = _orderTranRepo.Insert(new OrderTransactionEntity() { Amount = amount, OrderNo = out_trade_no, CreateDate = DateTime.Now, IsSynced = false, PaymentCode = Config.PaymentCode, TransNo = trade_no, OrderType = (int)PaidOrderType.Self }); if (orderEntity.Status != (int)OrderStatus.Paid && orderEntity.TotalAmount<=amount) { orderEntity.Status = (int)OrderStatus.Paid; orderEntity.UpdateDate = DateTime.Now; orderEntity.RecAmount = amount; _orderRepo.Update(orderEntity); _orderlogRepo.Insert(new OrderLogEntity() { CreateDate = DateTime.Now, CreateUser = 0, CustomerId = orderEntity.CustomerId, Operation = "支付订单", OrderNo = out_trade_no, Type = (int)OrderOpera.CustomerPay }); } ts.Complete(); } //notify sync async Task.Factory.StartNew(() => { OrderRule.OrderPaid2Erp(orderTransaction); }); } } return Content("success"); } else { return Content("fail"); } } else { return Content("无通知参数"); } }
public ActionResult return_url() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 string trade_no = Request.QueryString["trade_no"]; //支付宝交易号 string order_no = Request.QueryString["out_trade_no"]; //获取订单号 string total_fee = Request.QueryString["price"]; //获取总金额 string subject = Request.QueryString["subject"]; //商品名称、订单名称 string body = Request.QueryString["body"]; //商品描述、订单备注、描述 string buyer_email = Request.QueryString["buyer_email"]; //买家支付宝账号 string receive_name = Request.QueryString["receive_name"]; //收货人姓名 string receive_address = Request.QueryString["receive_address"];//收货人地址 string receive_zip = Request.QueryString["receive_zip"]; //收货人邮编 string receive_phone = Request.QueryString["receive_phone"]; //收货人电话 string receive_mobile = Request.QueryString["receive_mobile"]; //收货人手机 string trade_status = Request.QueryString["trade_status"]; //交易状态 ViewBag.message = null; if (Request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") { //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { ViewBag.message = "trade_status=" + Request.QueryString["trade_status"]; } //打印页面 ViewBag.message = "验证成功<br />" + "trade_no=" + trade_no; //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { ViewBag.message = "验证失败"; } } else { ViewBag.message = "无返回参数"; } return View(); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; orderID = out_trade_no; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { succ = true; if (out_trade_no.Contains("C")) { ordertype = 1; } else if (out_trade_no.Contains("P")) { ordertype = 2; } ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no); if (m_mod == null) { ShowError("");//订单号错误 } if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay) { m_mod.CurrentID = trade_no;//记录支付流水号 ORD_CashBll.GetInstance().SetPaySucc(m_mod); } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } //else if (Request.Form["trade_status"] == "TRADE_SUCCESS") //{ // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 //} else { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回" + Request.QueryString["trade_status"], "PayReturnForAlipay", base.Request.UserHostAddress); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //批次号 string batch_no = Request.Form["batch_no"]; //批量退款数据中转账成功的笔数 string success_num = Request.Form["success_num"]; //批量退款数据中的详细信息 string result_details = Request.Form["result_details"]; //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 #region 退款 异步更新数据 author:Ethan //XHZ.BLL.U_OrdersBLL bll = new XHZ.BLL.U_OrdersBLL(); //XHZ.Model.U_Orders model = new XHZ.Model.U_Orders(); //model = bll.GetmodelByBatchNo(batch_no); //if (model.OrderStatus == (int)XHZ.Model.UOrderStatus.已退款) //{ // Response.Write("success"); //请不要修改或删除 //} //else //{ // model.OrderStatus = (int)XHZ.Model.UOrderStatus.已退款; // model.result_details = string.Format("退款明细[{0}],退款时间[{1}]", result_details, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // XHZ.Web.Payment.Core.LogHandler.WriteLogForPay(model.OrderNo, "退款成功", model.result_details); // if (bll.Update(model)) // { // try // { // P_User userModel = new P_UserBLL().GetModel(model.user_id); // pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已退款成功"); // } // catch // { // } // XHZ.Web.Common.pfunction.InsertOrderHandle(model.OrderId, "您的订单退款成功", "支付宝退款接口异步调用"); // XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款成功】", "支付宝退款异接口步调用"); // Response.Write("success"); //请不要修改或删除 // } // else // { // XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款失败】", "支付宝退款接口异步调用"); // } //} #endregion //Response.Write("success"); //请不要修改或删除 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public ActionResult Payment_Result() { try { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; string id = Request.QueryString["extra_common_param"];//传回的商品id和采购数量 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; string ordercode=""; /*if(!string.IsNullOrWhiteSpace(Request.QueryString["body"])) { ordercode=Request.QueryString["body"];//优惠码 }*/ if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) == 0) { ViewData["Trade_Status"] = 0; ViewData["result"] = "不存在此订单"; } else { 订单 model = 订单管理.查找订单(long.Parse(id)); if (!model.已付款) { /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode && m.已使用 == false)) > 0) { model.使用优惠码 = true; 优惠码 yh = 优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First(); yh.已使用 = true; 优惠码管理.更新优惠码(yh); }*/ model.已付款 = true; 订单管理.更新订单(model); ViewData["userid"] = model.订单所属用户.用户ID; } else { ViewData["userid"] = -1; } ViewData["Trade_Status"] = 1;//1订单付款成功,0订单付款失败 ViewData["result"] = "您已经成功购买价值为"+ account.ToString() + "的商品。"; } } else { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "交易为完成"; //Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { //Response.Write("验证失败"); ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "验证失败"; } } else { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "无返回参数"; //Response.Write("无返回参数"); } return View(); } catch { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "支付出错!"; return View(); } }
/// <summary> /// 支付宝 返回 前端订单交易信息 get /// </summary> /// <param name="context"></param> /// <returns></returns> public ZFBReturnPara_Model ZFBReturn(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); SortedDictionary<string, string> sPara = GetRequestGet(context); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]); if (verifyResult)//验证成功 { #region //交易状态 string trade_status = "trade_status".GetUrlString(); zfbpara.trade_no = "trade_no".GetUrlString(); zfbpara.order_no = "out_trade_no".GetUrlString(); zfbpara.total_fee = "total_fee".GetUrlString(); zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false; zfbpara.isallreturn = false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else zfbpara.sendzfbcallbackmessage = "fail"; } else zfbpara.sendzfbcallbackmessage = "无通知参数"; return zfbpara; }
// 同步调用,只发生一次 public ActionResult AlipayReturn() { var model = new AlipayReturnViewModel(); SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 model.out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 model.trade_no = Request.QueryString["trade_no"]; //交易状态 model.trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 model.message = "支付成功"; } else { model.message = "支付失败"; } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { model.message = ("验证失败"); } } else { model.message = ("无返回参数"); } return View(model); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); //TODO: //上线需要verifyResult==true if (!verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— try { //更新自己数据库的订单语句,请自己填写一下 string SOsysno = Request.Form["out_trade_no"]; int sosysno = Int32.Parse(SOsysno); if (NetPayManager.GetInstance().IsPayedForAlipay(sosysno)) { Response.Write("fail"); return; } SOInfo order = SaleManager.GetInstance().LoadSOMaster(sosysno); if (order != null) { NetPayInfo netpay = new NetPayInfo(); netpay.SOSysNo = Int32.Parse(SOsysno); netpay.PayTypeSysNo = order.PayTypeSysNo; netpay.InputTime = DateTime.Now; netpay.Source = (int)AppEnum.NetPaySource.Bank; netpay.PayAmount = decimal.Parse(Request.Form["total_fee"]); netpay.Status = (int)AppEnum.NetPayStatus.Origin; //netpay.Note = Request.QueryString["msg"]; NetPayManager.GetInstance().Insert(netpay); if (netpay.PayAmount >= order.GetTotalAmt()) { //客人通过网上支付后,自动修改订单状态为已付款,默认为ias审核,userSysNo=33 NetPayManager.GetInstance().Verify(netpay.SysNo, 33); Response.Write("success"); } else { Response.Write("success"); } } else { Response.Write("fail"); } } catch { Response.Write("fail"); } } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }