示例#1
0
        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);
            }
        }
示例#2
0
        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("无通知参数");
            }
        }
示例#3
0
        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("无返回参数");
            }
        }