Ejemplo n.º 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 = "无返回参数";
        }
    }
Ejemplo n.º 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        //基础配置参数
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string return_url = con.Return_url;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;

        //选填参数
        string email = "";      //会员通用登录时,会员的支付宝账号

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

        //构造请求函数
        AlipayUserService aliService = new AlipayUserService(
            partner,
            return_url,
            email,
            key,
            input_charset,
            sign_type);

        string sHtmlText = aliService.Build_Form();

        //打印页面
        lbButton.Text = sHtmlText;
    }
Ejemplo n.º 3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string seller_email = con.Seller_email;
        string input_charset = con.Input_charset;
        string notify_url = con.Notify_url;
        string sign_type = con.Sign_type;

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

        ///////////////////////请求参数/////////////////////////////////////////////////////////////////////
        //退款当天日期,获取当天日期,格式:年[4位]-月[2位]-日[2位] 小时[2位 24小时制]:分[2位]:秒[2位],如:2007-10-01 13:13:13
        string refund_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

        //商家网站里的批次号,保证其唯一性,格式:当天日期[8位]+序列号[3至24位],如:201008010000001
        string batch_no = DateTime.Now.ToString("yyyyMMddHHmmss");

        //退款笔数,即参数detail_data的值中,“#”字符出现的数量加1,最大支持1000笔(即“#”字符出现的数量999个)
        string batch_num = Request.Form["batch_num"];

        //退款详细数据
        string detail_data = Request.Form["detail_data"];
        //格式:第一笔交易#第二笔交易#第三笔交易
        //第N笔交易格式:交易退款信息
        //交易退款信息格式:原付款支付宝交易号^退款总金额^退款理由
        //注意:
        //1.detail_data中的退款笔数总和要等于参数batch_num的值
        //2.detail_data的值中不能有“^”、“|”、“#”、“$”等影响detail_data的格式的特殊字符
        //3.detail_data中退款总金额不能大于交易总金额
        //4.一笔交易可以多次退款,只需要遵守多次退款的总金额不超过该笔交易付款时金额。
        //5.不支持退分润功能
        /////////////////////////////////////////////////////////////////////////////////////////////////////

        //构造请求函数
        AlipayRefundService aliRefundService = new AlipayRefundService(
            partner,
            seller_email,
            notify_url,
            refund_date,
            batch_no,
            batch_num,
            detail_data,
            key,
            input_charset,
            sign_type);

        string sHtmlText = aliRefundService.Build_Form();
        Response.Write(sHtmlText);
    }
Ejemplo n.º 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;

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

        ///////////////////////请求参数/////////////////////////////////////////////////////////////////////
        //--------------必填参数--------------
        //支付宝交易号。它是登陆支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:20100419XXXXXXXXXX)
        string trade_no = Request.Form["trade_no"];

        //物流公司名称
        string logistics_name = Request.Form["logistics_name"];

        //物流发货单号
        string invoice_no = Request.Form["invoice_no"];

        //物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
        string transport_type = Request.Form["transport_type"];

        //--------------选填参数--------------
        //卖家本地电脑IP地址
        string seller_ip = "";

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

        //构造请求函数
        AlipayService aliService = new AlipayService(
            partner,
            trade_no,
            logistics_name,
            invoice_no,
            transport_type,
            seller_ip,
            key,
            input_charset,
            sign_type);

        string sHtmlText = aliService.Build_Form();
        Response.Write(sHtmlText);
    }
Ejemplo n.º 5
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 = "无返回参数";
        }
    }
Ejemplo n.º 6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;

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

        ///////////////////////请求参数/////////////////////////////////////////////////////////////////////
        //--------------必填参数--------------
        //支付宝交易号。它是登陆支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:20100419XXXXXXXXXX)
        string trade_no = Request.Form["trade_no"];

        //物流公司名称
        string logistics_name = Request.Form["logistics_name"];

        //物流发货单号
        string invoice_no = Request.Form["invoice_no"];

        //物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
        string transport_type = Request.Form["transport_type"];

        //--------------选填参数--------------
        //卖家本地电脑IP地址
        string seller_ip = "";

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

        //构造请求函数
        AlipayService aliService = new AlipayService(
            partner,
            trade_no,
            logistics_name,
            invoice_no,
            transport_type,
            seller_ip,
            key,
            input_charset,
            sign_type);

        /***********************无XML远程解析***********************/
        //string sHtmlText = aliService.Build_Form();
        //Response.Write(sHtmlText);
        //Response.End();

        /***********************含XML远程解析***********************/
        //注意:远程解析XML出错,与IIS服务器配置有关
        string url = aliService.Create_url();

        XmlTextReader Reader = new XmlTextReader(url);
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Reader);

        //解析XML,获取XML返回的数据,如:请求处理是否成功、商家网站唯一订单号、支付宝交易号、发货时间等
        string nodeIs_success = xmlDoc.SelectSingleNode("/alipay/is_success").InnerText;
        string nodeOut_trade_no = "";
        string nodeTrade_no = "";
        string nodeTrade_status = "";
        string nodeLast_modified_time = "";
        string nodeError = "";

        if (nodeIs_success == "T")
        {
            nodeOut_trade_no = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/out_trade_no").InnerText;
            nodeTrade_no = xmlDoc.SelectSingleNode("/alipay/request").ChildNodes[2].InnerText;
            nodeTrade_status = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/trade_status").InnerText;
            nodeLast_modified_time = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/last_modified_time").InnerText;
        }
        else
        {
            nodeError = xmlDoc.SelectSingleNode("/alipay/error").InnerText;
        }

        //打印页面
        StringBuilder sbHtml = new StringBuilder();
        sbHtml.Append("<table align=center width=350 cellpadding=5 cellspacing=0>");
        sbHtml.Append("<tr><td align=center class=font_title colspan=2>XML返回</td></tr>");
        sbHtml.Append("<tr><td class=font_content align=right>请求处理是否成功:</td><td class=font_content align=left>" + nodeIs_success + "</td></tr>");
        if (nodeIs_success == "T")
        {
            sbHtml.Append("<tr><td class=font_content align=right>商户网站订单号:</td><td class=font_content align=left>" + nodeOut_trade_no + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>支付宝交易号:</td><td class=font_content align=left>" + nodeTrade_no + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>交易状态:</td><td class=font_content align=left>" + nodeTrade_status + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>发货时间等:</td><td class=font_content align=left>" + nodeLast_modified_time + "</td></tr>");
        }
        else
        {
            sbHtml.Append("<tr><td class=font_content align=right>错误:</td><td class=font_content align=left>" + nodeError + "</td></tr>");
        }
        sbHtml.Append("</table>");

        LblXml.Text = sbHtml.ToString();

        ////////////////////////////////////////////////////////////////////////////////////////////////////
        //请在此处编写商户发货成功后的业务逻辑程序代码,以便把商户网站里的该笔订单与支付宝的订单信息同步。

        ///////////////////////////////////////////////////////////////////////////////////////////////////
    }
Ejemplo n.º 7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string seller_email = con.Seller_email;
        string input_charset = con.Input_charset;
        string notify_url = con.Notify_url;
        string return_url = con.Return_url;
        string show_url = con.Show_url;
        string sign_type = con.Sign_type;

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

        ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
        //必填参数
        string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");  //请与贵网站订单系统中的唯一订单号匹配
        string subject = Request.Form["aliorder"];                      //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
        string body = Request.Form["alibody"];                          //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
        string price = Request.Form["alimoney"];    		            //订单总金额,显示在支付宝收银台里的“商品单价”里

        string logistics_fee = "0.00";                  				//物流费用,即运费。
        string logistics_type = "EXPRESS";				                //物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment = "SELLER_PAY";            			//物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        string quantity = "1";              							//商品数量,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品。

        //扩展参数——买家收货信息(推荐作为必填)
        //该功能作用在于买家已经在商户网站的下单流程中填过一次收货信息,而不需要买家在支付宝的付款流程中再次填写收货信息。
        //若要使用该功能,请至少保证receive_name、receive_address有值
        //收货信息格式请严格按照姓名、地址、邮编、电话、手机的格式填写
        string receive_name = "收货人姓名";			                    //收货人姓名,如:张三
        string receive_address = "收货人地址";			                //收货人地址,如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
        string receive_zip = "123456";                  			    //收货人邮编,如:123456
        string receive_phone = "0571-81234567";                		    //收货人电话号码,如:0571-81234567
        string receive_mobile = "13312341234";               		    //收货人手机号码,如:13312341234

        //扩展参数——第二组物流方式
        //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
        //有了第一组物流方式,才能有第二组物流方式,且不能与第一个物流方式中的物流类型相同,
        //即logistics_type="EXPRESS",那么logistics_type_1就必须在剩下的两个值(POST、EMS)中选择
        string logistics_fee_1 = "";                					//物流费用,即运费。
        string logistics_type_1 = "";               					//物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment_1 = "";           					    //物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        //扩展参数——第三组物流方式
        //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
        //有了第一组物流方式和第二组物流方式,才能有第三组物流方式,且不能与第一组物流方式和第二组物流方式中的物流类型相同,
        //即logistics_type="EXPRESS"、logistics_type_1="EMS",那么logistics_type_2就只能选择"POST"
        string logistics_fee_2 = "";                					//物流费用,即运费。
        string logistics_type_2 = "";               					//物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment_2 = "";            					//物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        //扩展功能参数——其他
        string buyer_email = "";                    					//默认买家支付宝账号
        string discount = "";                       					//折扣,是具体的金额,而不是百分比。若要使用打折,请使用负数,并保证小数点最多两位数

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

        //构造请求函数,无需修改
        AlipayService aliService = new AlipayService(
            partner,
            seller_email,
            return_url,
            notify_url,
            show_url,
            out_trade_no,
            subject,
            body,
            price,
            logistics_fee,
            logistics_type,
            logistics_payment,
            quantity,
            receive_name,
            receive_address,
            receive_zip,
            receive_phone,
            receive_mobile,
            logistics_fee_1,
            logistics_type_1,
            logistics_payment_1,
            logistics_fee_2,
            logistics_type_2,
            logistics_payment_2,
            buyer_email,
            discount,
            key,
            input_charset,
            sign_type);
        string sHtmlText = aliService.Build_Form();

        //打印页面
        lbOut_trade_no.Text = out_trade_no;
        lbTotal_fee.Text = price;
        lbButton.Text = sHtmlText;
    }
Ejemplo n.º 8
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("无通知参数");
        }
    }
Ejemplo n.º 9
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("无通知参数");
        }
    }
Ejemplo n.º 10
0
 protected void Page_Load(object sender, EventArgs e)
 {
     AlipayConfig con = new AlipayConfig();
     show_url = con.Show_url;
     mainname = con.Mainname;
 }
Ejemplo n.º 11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string seller_email = con.Seller_email;
        string input_charset = con.Input_charset;
        string notify_url = con.Notify_url;
        string return_url = con.Return_url;
        string show_url = con.Show_url;
        string sign_type = con.Sign_type;

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

        ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
        //必填参数
        string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");  //请与贵网站订单系统中的唯一订单号匹配
        string subject = Request.Form["aliorder"];                      //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
        string body = Request.Form["alibody"];                          //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
        string total_fee = Request.Form["alimoney"];                    //订单总金额,显示在支付宝收银台里的“应付总额”里

        //扩展功能参数——默认支付方式
        string paymethod = "";                                          //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付),初始值
        string defaultbank = "";                                        //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379 初始值
        string pay_mode = Request.Form["pay_bank"];
        if (pay_mode == "directPay")
        {
            paymethod = "directPay";
        }
        else
        {
            paymethod = "bankPay";
            defaultbank = pay_mode;
        }

        //扩展功能参数——防钓鱼
        //请慎重选择是否开启防钓鱼功能
        //exter_invoke_ip、anti_phishing_key一旦被设置过,那么它们就会成为必填参数
        //建议使用POST方式请求数据
        string anti_phishing_key = "";                                  //防钓鱼时间戳
        string exter_invoke_ip = "";                                    //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
        //如:
        //exter_invoke_ip = "";
        //anti_phishing_key = AlipayFunction.Query_timestamp(partner);  //获取防钓鱼时间戳函数

        //扩展功能参数——其他
        string extra_common_param = "";                                 //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
        string buyer_email = "";			                            //默认买家支付宝账号

        //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
        string royalty_type = "";                                   //提成类型,该值为固定值:10,不需要修改
        string royalty_parameters = "";
        //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
        //各分润金额的总和须小于等于total_fee
        //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
        //如:
        //royalty_type = "10";
        //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";

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

        //构造请求函数,无需修改
        AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, anti_phishing_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, key, input_charset, sign_type);
        string sHtmlText = aliService.Build_Form();

        //打印页面
        lbOut_trade_no.Text = out_trade_no;
        lbTotal_fee.Text = total_fee;
        lbButton.Text = sHtmlText;
    }