Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sArrary = GetRequestGet();
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的//////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;
        string transport = con.Transport;
        //////////////////////////////////////////////////////////////////////////////////////////////

        if (sArrary.Count > 0)//判断是否有带返回参数
        {
            AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.QueryString["notify_id"], partner, key, input_charset, sign_type, transport);
            string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
            string sign = Request.QueryString["sign"];  //获取支付宝反馈回来的sign结果
            string mysign = aliNotify.Mysign;           //获取通知返回后计算后(验证)的签名结果

            //写日志记录(若要调试,请取消下面两行注释)
            //string sWord = "responseTxt=" + responseTxt + "\n return_url_log:sign=" + Request.QueryString["sign"] + "&mysign=" + mysign + "\n return回来的参数:" + aliNotify.PreSignStr;
            //AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt",sWord);

            //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
            //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
            //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
            if (responseTxt == "true" && sign == mysign)//验证成功
            {
                ///////////////////////////请在这里加上商户的业务逻辑程序代码///////////////////////////////////////////////////////////////////////////////
                //请根据您的业务逻辑来编写程序(以下代码仅作参考)
                //获取支付宝的通知返回参数
                string user_id		= Request.QueryString["user_id"];	        //获取支付宝用户唯一ID号

                //以下是示例——
                //判断获取到的user_id的值是否在商户会员数据库中存在(即:是否曾经做过支付宝会员通用登录)
                //	若不存在,则程序自动为会员快速注册一个会员,把信息插入商户网站会员数据表中,
                //	且把该会员的在商户网站上的登录状态,更改成“已登录”状态。并记录在商家网站会员数据表中记录登录信息,如登录时间、次数、IP等。
                //	若存在,判断该会员在商户网站上的登录状态是否是“已登录”状态
                //		若不是,则把该会员的在商户网站上的登录状态,更改成“已登录”状态。并记录在商家网站会员数据表中记录登录信息,如登录时间、次数、IP等。
                //		若是,则不做任何数据库业务逻辑处理。判定该次反馈信息为重复刷新返回链接导致。

                //打印页面
                StringBuilder sbHtml = new StringBuilder();
                sbHtml.Append("<table align=center width=350 cellpadding=5 cellspacing=0>");
                sbHtml.Append("<tr><td align=center class=font_title>亲爱的商城会员," + user_id + ":<br />您已经登录成功</td>");
                sbHtml.Append("</tr></table>");
                LblShow.Text = sbHtml.ToString();
                //请根据您的业务逻辑来编写程序(以上代码仅作参考)
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                LblShow.Text = "系统出错,验证失败";
            }
        }
        else
        {
            LblShow.Text = "无返回参数";
        }
    }
Пример #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sArrary = GetRequestGet();
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的//////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;
        string transport = con.Transport;
        //////////////////////////////////////////////////////////////////////////////////////////////

        if (sArrary.Count > 0)//判断是否有带返回参数
        {
            AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.QueryString["notify_id"],partner,key,input_charset,sign_type,transport);
            string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
            string sign = Request.QueryString["sign"];  //获取支付宝反馈回来的sign结果
            string mysign = aliNotify.Mysign;           //获取通知返回后计算后(验证)的签名结果

            //写日志记录(若要调试,请取消下面两行注释)
            //string sWord = "responseTxt=" + responseTxt + "\n return_url_log:sign=" + Request.QueryString["sign"] + "&mysign=" + mysign + "\n return回来的参数:" + aliNotify.PreSignStr;
            //AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt",sWord);

            //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
            //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
            //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
            if (responseTxt == "true" && sign == mysign)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
                string trade_no = Request.QueryString["trade_no"];      //支付宝交易号
                string order_no = Request.QueryString["out_trade_no"];	//获取订单号
                string total_fee = Request.QueryString["total_fee"];	//获取总金额
                string subject = Request.QueryString["subject"];        //商品名称、订单名称
                string body = Request.QueryString["body"];              //商品描述、订单备注、描述
                string buyer_email = Request.QueryString["buyer_email"];//买家支付宝账号
                string trade_status = Request.QueryString["trade_status"];//交易状态

                //打印页面
                lbTrade_no.Text = trade_no;
                lbOut_trade_no.Text = order_no;
                lbTotal_fee.Text = total_fee;
                lbSubject.Text = subject;
                lbBody.Text = body;
                lbBuyer_email.Text = buyer_email;
                lbTrade_status.Text = trade_status;
                lbVerify.Text = "验证成功";

                if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                {
                    //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                }
                else
                {
                    Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                }
                //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                lbVerify.Text = "验证失败";
            }
        }
        else
        {
            lbVerify.Text = "无返回参数";
        }
    }
Пример #3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sArrary = GetRequestPost();
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的//////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;
        string transport = con.Transport;
        //////////////////////////////////////////////////////////////////////////////////////////////

        if (sArrary.Count > 0)//判断是否有带返回参数
        {
            AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport);
            string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
            string sign = Request.Form["sign"];         //获取支付宝反馈回来的sign结果
            string mysign = aliNotify.Mysign;           //获取通知返回后计算后(验证)的签名结果

            //写日志记录(若要调试,请取消下面两行注释)
            string sWord = "responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr;
            AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt",sWord);

            //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
            //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
            //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
            if (responseTxt == "true" && sign == mysign)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                string trade_no = Request.Form["trade_no"];         //支付宝交易号
                string order_no = Request.Form["out_trade_no"];     //获取订单号
                string total_fee = Request.Form["price"];           //获取总金额
                string subject = Request.Form["subject"];           //商品名称、订单名称
                string body = Request.Form["body"];                 //商品描述、订单备注、描述
                string buyer_email = Request.Form["buyer_email"];   //买家支付宝账号
                string trade_status = Request.Form["trade_status"]; //交易状态

                if (Request.Form["trade_status"] == "WAIT_BUYER_PAY")
                {//该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款

                    //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                    Response.Write("success");  //请不要修改或删除
                }
                else if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS")
                {//该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货

                    //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                    Response.Write("success");  //请不要修改或删除
                }
                else if (Request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS")
                {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作

                    //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                    Response.Write("success");  //请不要修改或删除
                }
                else if (Request.Form["trade_status"] == "TRADE_FINISHED")
                {//该判断表示买家已经确认收货,这笔交易完成

                    //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                    Response.Write("success");  //请不要修改或删除
                }
                else
                {
                    Response.Write("success");  //其他状态判断。普通即时到帐中,其他状态不用判断,直接打印success。
                }
                //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
Пример #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sArrary = GetRequestPost();
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的//////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;
        string transport = con.Transport;
        //////////////////////////////////////////////////////////////////////////////////////////////

        if (sArrary.Count > 0)//判断是否有带返回参数
        {
            AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport);
            string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
            string sign = Request.Form["sign"];         //获取支付宝反馈回来的sign结果
            string mysign = aliNotify.Mysign;           //获取通知返回后计算后(验证)的签名结果

            //写日志记录(若要调试,请取消下面两行注释)
            string sWord = "responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr;
            AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord);

            //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致
            //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
            //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
            if (responseTxt == "true" && sign == mysign)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                //获取批次号
                string batch_no = Request.Form["batch_no"];

                //获取批量退款数据中转账成功的笔数
                string success_num = Request.Form["success_num"];

                //获取批量退款数据中的详细信息
                string result_details = Request.Form["result_details"];
                //格式:第一笔交易#第二笔交易#第三笔交易
                //第N笔交易格式:交易退款信息
                //交易退款信息格式:原付款支付宝交易号^退款总金额^处理结果码^结果描述

                //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Response.Write("success");      //向支付宝反馈的成功标志,请不要修改或删除
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }