Exemplo n.º 1
0
        public PaidHandleResult Return <T>(PayMointor <T> proc) where T : class
        {
            SortedDictionary <string, string> sPara = PayUtil.GetRequestGet();
            var request = HttpContext.Current.Request;

            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"];

                    proc.Init(out_trade_no);


                    if (request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        return(PaidHandleResult.Success);
                    }
                    else
                    {
                        return(PaidHandleResult.Fail);
                    }
                }
                else//验证失败
                {
                    return(PaidHandleResult.Fail);
                }
            }
            else
            {
                return(PaidHandleResult.Fail);
            }
        }
Exemplo n.º 2
0
        public PaidHandleResult Return <T>(PayMointor <T> proc) where T : class
        {
            // http://www.jin-ec.com/mapfre/pay/notify?body=%E8%AE%A2%E5%8D%952013122345312
            // &buyer_email=newmin.net%40gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user
            // &is_success=T&notify_id=RqPnCoPT3K9%252Fvwbh3I75KL02sthKJHtG2dh1Mg5RF5qgJKDY8jd2nu0ChZQAfPMX38xu
            // &notify_time=2013-12-23+14%3A18%3A53&notify_type=trade_status_sync&out_trade_no=2013122345312
            //&payment_type=1&seller_email=clientinfo%40roadchina.com.cn&seller_id=2088201937033268
            //&subject=%E6%98%A5%E8%BF%90%E4%BF%9D%E9%9A%9C%E4%BA%A7%E5%93%81&total_fee=0.01
            // &trade_no=2013122303460581&trade_status=TRADE_SUCCESS&sign=c8c01b5ac095540f0a35d4f7f5831956&sign_type=MD5
            //
            var request = HttpContext.Current.Request;
            SortedDictionary <string, string> sPara = PayUtil.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["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"];      //交易状态

                    proc.Init(order_no);


                    if (request.QueryString["trade_status"] == "TRADE_FINISHED" || request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        return(PaidHandleResult.Success);
                    }

                    //打印页面
                    // Response.Write("验证成功<br />");
                    // Response.Write("trade_no=" + trade_no);

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
            }

            return(PaidHandleResult.Fail);
        }