protected void Page_Load(object sender, EventArgs e) { BaseService.WriteLog("页面跳转同步通知页面-----------------------Call_Back.aspx"); AlipayWapTradeResponseBLL alipayServer = new AlipayWapTradeResponseBLL(new Utility.BasicUserInfo()); //获取签名 string sign = Request["sign"]; BaseService.WriteLog("签名sign:" + sign); //获取所有参数 SortedDictionary <string, string> sArrary = GetRequestGet(); BaseService.WriteLog("开始验证签名:"); bool isVerify = Function.Verify(sArrary, sign, Config.Alipaypublick, Config.Input_charset_UTF8); BaseService.WriteLog("结束验证签名:"); BaseService.WriteLog("验签结果:" + isVerify); if (!isVerify) { //验签出错,可能被别人篡改数据 if (Request["out_trade_no"] != null) { alipayServer.UpdateAlipayWapTradeStatus(Request["out_trade_no"], "4"); PostResult(alipayServer, "fail"); BaseService.WriteLog("验签出错,可能被别人篡改数据。"); } Response.Write("fail"); return; } string result = Request["result"]; BaseService.WriteLog("result:" + result); if (!result.Equals("success")) { //交易失败 if (Request["out_trade_no"] != null) { alipayServer.UpdateAlipayWapTradeStatus(Request["out_trade_no"], "3"); PostResult(alipayServer, "fail"); BaseService.WriteLog("交易失败,更新支付宝交易状态"); } Response.Write("fail"); return; } else //交易成功,请填写自己的业务代码 { if (Request["out_trade_no"] != null) { BaseService.WriteLog("out_trade_no:" + Request["out_trade_no"]); BaseService.WriteLog("交易成功"); alipayServer.UpdateAlipayWapTradeStatus(Request["out_trade_no"], "2"); PostResult(alipayServer, "success"); } else { BaseService.WriteLog("out_trade_no is null!!!!! "); } Response.Redirect(Config.Merchant_url); } }
protected void Page_Load(object sender, EventArgs e) { BaseService.WriteLog("服务器异步通知页面-----------------------AlipayWapTrade2/Notify.aspx"); Dictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { BaseService.WriteLog("开始验证"); AlipayNotify aliNotify = new AlipayNotify(); bool verifyResult = aliNotify.VerifyNotify(sPara, Request.Form["sign"]); if (verifyResult)//验证成功 { BaseService.WriteLog("验证成功"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { BaseService.WriteLog("notify_data:" + sPara["notify_data"]); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(sPara["notify_data"]); //商户订单号 string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; //支付宝交易号 string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; //交易状态 string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; //交易成功,更新支付宝交易状态 UpdateAlipayWapTrade(xmlDoc, "2"); BaseService.WriteLog("交易状态trade_status:" + trade_status); if (trade_status == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 if (!string.IsNullOrEmpty(out_trade_no)) { try { var alipayServer = new AlipayWapTradeResponseBLL(new Utility.BasicUserInfo()); BaseService.WriteLog("out_trade_no:" + out_trade_no); BaseService.WriteLog("交易成功"); //更新交易状态 BaseService.WriteLog("更新交易状态"); alipayServer.UpdateAlipayWapTradeStatus(out_trade_no, "2"); //处理分润业务 BaseService.WriteLog("处理分润业务"); //RoyaltyBusiness(out_trade_no, trade_no); //推送交易结果集 BaseService.WriteLog("推送交易结果集"); PostResult(alipayServer, "success", out_trade_no); } catch (Exception ex) { BaseService.WriteLog("异常信息: " + ex.ToString()); } } else { BaseService.WriteLog("out_trade_no is null!!!!! "); } //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 Response.Write("success"); //请不要修改或删除 } else if (trade_status == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 if (!string.IsNullOrEmpty(out_trade_no)) { try { var alipayServer = new AlipayWapTradeResponseBLL(new Utility.BasicUserInfo()); BaseService.WriteLog("out_trade_no:" + out_trade_no); BaseService.WriteLog("交易成功"); //更新交易状态 BaseService.WriteLog("更新交易状态"); alipayServer.UpdateAlipayWapTradeStatus(out_trade_no, "2"); //处理分润业务 BaseService.WriteLog("处理分润业务"); RoyaltyBusiness(out_trade_no, trade_no); //推送交易结果集 BaseService.WriteLog("推送交易结果集"); PostResult(alipayServer, "success", out_trade_no); } catch (Exception ex) { BaseService.WriteLog("异常信息: " + ex.ToString()); } } else { BaseService.WriteLog("out_trade_no is null!!!!! "); } //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 Response.Write("success"); //请不要修改或删除 } else { Response.Write(trade_status); } } catch (Exception exc) { BaseService.WriteLog("异常信息:" + exc.ToString()); Response.Write(exc.ToString()); } } else//验证失败 { BaseService.WriteLog("验证失败"); Response.Write("fail"); } } else { BaseService.WriteLog("无通知参数"); Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { BaseService.WriteLog("页面跳转同步通知页面-----------------------AlipayWapTrade2/Call_Back.aspx"); AlipayWapTradeResponseBLL alipayServer = new AlipayWapTradeResponseBLL(new Utility.BasicUserInfo()); Dictionary <string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(); 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"]; //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 BaseService.WriteLog("result:" + result); if (!result.Equals("success")) { //交易失败 if (!string.IsNullOrEmpty(out_trade_no)) { alipayServer.UpdateAlipayWapTradeStatus(Request["out_trade_no"], "3"); PostResult(alipayServer, "fail"); //推送交易结果集 BaseService.WriteLog("推送交易结果集"); PostResult(alipayServer, "fail"); BaseService.WriteLog("交易失败,更新支付宝交易状态"); } Response.Write("fail"); return; } else //交易成功,请填写自己的业务代码 { if (!string.IsNullOrEmpty(out_trade_no)) { try { BaseService.WriteLog("out_trade_no:" + out_trade_no); BaseService.WriteLog("交易成功"); //更新交易状态 BaseService.WriteLog("更新交易状态"); alipayServer.UpdateAlipayWapTradeStatus(out_trade_no, "2"); //处理分润业务 BaseService.WriteLog("处理分润业务"); //RoyaltyBusiness(out_trade_no, trade_no); //推送交易结果集 BaseService.WriteLog("推送交易结果集"); PostResult(alipayServer, "success"); } catch (Exception ex) { BaseService.WriteLog("异常信息: " + ex.ToString()); } } else { BaseService.WriteLog("out_trade_no is null!!!!! "); } Response.Redirect(AlipayConfig.Merchant_url); } } else//验证失败 { if (Request["out_trade_no"] != null) { alipayServer.UpdateAlipayWapTradeStatus(Request["out_trade_no"], "4"); PostResult(alipayServer, "fail"); BaseService.WriteLog("验签出错,可能被别人篡改数据。"); } Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }