Verify() public method

验证消息是否是支付宝发出的合法消息
public Verify ( string>.SortedDictionary inputPara, string notify_id, string sign ) : bool
inputPara string>.SortedDictionary 通知返回参数数组
notify_id string 通知验证ID
sign string 支付宝生成的签名结果
return bool
コード例 #1
0
        public async Task <ActionResult> AlipayNotifyUrl()
        {
            var loger = LogManager.GetLogger("Alipay");

            SortedDictionary <string, string> sPara = GetRequestPost();

            Com.Alipay.Notify aliNotify = new Com.Alipay.Notify();
            bool verifyResult           = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (sPara.Count > 0 && verifyResult)
            {
                //商户订单号
                string outTradeNo = Request.Form["out_trade_no"];
                //支付宝交易号
                string tradeNo = Request.Form["trade_no"];
                //交易状态
                string tradeStatus = Request.Form["trade_status"];

                //打日志
                loger.Error("orderNo:{0};tradeStatus:{1};", outTradeNo, tradeStatus);
                if (tradeStatus == "TRADE_FINISHED" || tradeStatus == "TRADE_SUCCESS")
                {
                    //await OrderContract.PayOrder(outTradeNo, tradeNo, PayType.支付宝);
                    return(Content("success"));
                    //注意:
                    //该种交易状态只在两种情况下出现
                    //1、开通了普通即时到账,买家付款成功后。
                    //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                    //1、开通了高级即时到账,买家付款成功后。
                }
            }
            return(Content(""));
        }
コード例 #2
0
        /// <summary>
        /// 支付宝异步返回订单交易信息 post
        /// </summary>
        /// <param name="context">当前上下文</param>
        /// <returns></returns>
        public ZFBReturnPara_Model ZFBCallBack(HttpContext context)
        {
            ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model();
            zfbpara.iscallbacksuccess = false;
            SortedDictionary<string, string> sPara = GetRequestPost(context);
            if (sPara.Count > 0)
            {
                Com.Alipay.Notify aliNotify = new Com.Alipay.Notify();
                bool verifyResult = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]);
                if (verifyResult)//验证成功
                {
                    #region
                    //退款状态,付款成功 没有此参数
                    string refund_status = "refund_status".GetFormString();
                    //交易状态
                    string trade_status = "trade_status".GetFormString();

                    zfbpara.trade_no = context.Request.Form["trade_no"];
                    zfbpara.order_no = context.Request.Form["out_trade_no"];
                    zfbpara.total_fee = context.Request.Form["total_fee"];
                    zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false;
                    zfbpara.isallreturn = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false;
                    #endregion
                    zfbpara.iscallbacksuccess = true;
                    zfbpara.sendzfbcallbackmessage = "success";
                }
                else
                    zfbpara.sendzfbcallbackmessage = "fail";
            }
            else
                zfbpara.sendzfbcallbackmessage = "无通知参数";

            return zfbpara;
        }
コード例 #3
0
ファイル: return_url.aspx.cs プロジェクト: hebaihe55/cjwechat
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestGet();

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

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

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

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
        }
コード例 #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                //获取批次号
                string batch_no = Request.Form["batch_no"];

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

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

                //判断是否在商户网站中已经做过了这次通知返回的处理(可参考“集成教程”中“3.4返回数据处理”)
                    //如果没有做过处理,那么执行商户的业务程序
                    //如果有做过处理,那么不执行商户的业务程序

                Response.Write("success");  //请不要修改或删除

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #5
0
ファイル: return_url.aspx.cs プロジェクト: kerncoola/doc
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestGet();

        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_status = Request.QueryString["trade_status"];
                //交易目前所处的状态(例如:TRADE_SUCCESS)

                //判断是否在商户网站中已经做过了这次通知返回的处理
                //如果没有做过处理,那么执行商户的业务程序
                //如果有做过处理,那么不执行商户的业务程序

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

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("验证失败");
            }
        }
        else
        {
            Response.Write("无返回参数");
        }
    }
コード例 #6
0
ファイル: return_url.aspx.cs プロジェクト: Molly2Molly/m2m
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestGet();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                //支付宝用户号
                string user_id = Request.QueryString["user_id"];

                //授权令牌
                string token = Request.QueryString["token"];

                //判断是否在商户网站中已经做过了这次通知返回的处理
                //如果没有做过处理,那么执行商户的业务程序
                //如果有做过处理,那么不执行商户的业务程序

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

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("验证失败");
            }
        }
        else
        {
            Response.Write("无返回参数");
        }
    }
コード例 #7
0
        public ActionResult AlipayReturnUrl()
        {
            SortedDictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Com.Alipay.Notify aliNotify = new Com.Alipay.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"];
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        // PresellOrderContract.OrederPay(out_trade_no, PayTypes.支付宝);
                        return(Content("success"));
                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                        //1、开通了高级即时到账,买家付款成功后。
                    }

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

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
            return(Content(""));
        }
コード例 #8
0
ファイル: notify_url.aspx.cs プロジェクト: Molly2Molly/m2m
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                //批量付款数据中转账成功的详细信息
                string success_details = Request.Form["success_details"];

                //批量付款数据中转账失败的详细信息
                string fail_details = Request.Form["fail_details"];

                //判断是否在商户网站中已经做过了这次通知返回的处理
                //如果没有做过处理,那么执行商户的业务程序
                //如果有做过处理,那么不执行商户的业务程序

                Response.Write("success");  //请不要修改或删除

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #9
0
        /// <summary>
        /// 支付宝异步返回订单交易信息 post
        /// </summary>
        /// <param name="context">当前上下文</param>
        /// <returns></returns>
        public ZFBReturnPara_Model ZFBCallBack(HttpContext context)
        {
            ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model();

            zfbpara.iscallbacksuccess = false;
            SortedDictionary <string, string> sPara = GetRequestPost(context);

            if (sPara.Count > 0)
            {
                Com.Alipay.Notify aliNotify = new Com.Alipay.Notify();
                bool verifyResult           = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]);
                if (verifyResult)//验证成功
                {
                    #region
                    //退款状态,付款成功 没有此参数
                    string refund_status = "refund_status".GetFormString();
                    //交易状态
                    string trade_status = "trade_status".GetFormString();

                    zfbpara.trade_no     = context.Request.Form["trade_no"];
                    zfbpara.order_no     = context.Request.Form["out_trade_no"];
                    zfbpara.total_fee    = context.Request.Form["total_fee"];
                    zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false;
                    zfbpara.isallreturn  = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false;
                    #endregion
                    zfbpara.iscallbacksuccess      = true;
                    zfbpara.sendzfbcallbackmessage = "success";
                }
                else
                {
                    zfbpara.sendzfbcallbackmessage = "fail";
                }
            }
            else
            {
                zfbpara.sendzfbcallbackmessage = "无通知参数";
            }

            return(zfbpara);
        }
コード例 #10
0
        /// <summary>
        /// 支付宝 返回 前端订单交易信息 get
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ZFBReturnPara_Model ZFBReturn(HttpContext context)
        {
            ZFBReturnPara_Model zfbpara             = new ZFBReturnPara_Model();
            SortedDictionary <string, string> sPara = GetRequestGet(context);

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Com.Alipay.Notify aliNotify = new Com.Alipay.Notify();
                bool verifyResult           = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]);
                if (verifyResult)//验证成功
                {
                    #region
                    //交易状态
                    string trade_status = "trade_status".GetUrlString();

                    zfbpara.trade_no  = "trade_no".GetUrlString();
                    zfbpara.order_no  = "out_trade_no".GetUrlString();
                    zfbpara.total_fee = "total_fee".GetUrlString();

                    zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false;
                    zfbpara.isallreturn  = false;
                    #endregion
                    zfbpara.iscallbacksuccess      = true;
                    zfbpara.sendzfbcallbackmessage = "success";
                }
                else
                {
                    zfbpara.sendzfbcallbackmessage = "fail";
                }
            }
            else
            {
                zfbpara.sendzfbcallbackmessage = "无通知参数";
            }

            return(zfbpara);
        }
コード例 #11
0
ファイル: jctController.cs プロジェクト: 269378737/go81
        public ActionResult Payment_Result()
        {
            SortedDictionary<string, string> sPara = GetRequestGet();
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    var account = Request.QueryString["total_fee"];
                    var 当前用户 = currentUser as 供应商;
                    var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString();
                    double amount = 0D;
                    switch (会员级别)
                    {
                        case "军采通标准会员":
                            switch (account)
                            {
                                case "2850":
                                    amount = double.Parse(account) / 0.95;
                                    break;
                                case "5400":
                                    amount = double.Parse(account) / 0.9;
                                    break;
                                case "8500":
                                    amount = double.Parse(account) / 0.85;
                                    break;
                                case "16000":
                                    amount = double.Parse(account) / 0.8;
                                    break;
                            }
                            break;
                        case "军采通高级会员":
                            switch (account)
                            {
                                case "2700":
                                    amount = double.Parse(account) / 0.9;
                                    break;
                                case "5100":
                                    amount = double.Parse(account) / 0.85;
                                    break;
                                case "8000":
                                    amount = double.Parse(account) / 0.8;
                                    break;
                                case "15000":
                                    amount = double.Parse(account) / 0.75;
                                    break;
                            }
                            break;
                        default:
                            switch (account)
                            {
                                case "2940":
                                    amount = double.Parse(account) * 0.98;
                                    break;
                                case "5700":
                                    amount = double.Parse(account) * 0.95;
                                    break;
                                case "9200":
                                    amount = double.Parse(account) * 0.92;
                                    break;
                                case "18000":
                                    amount = double.Parse(account) * 0.9;
                                    break;
                            }
                            break;
                    }


                    var 充值记录 = new 供应商充值记录();
                    充值记录.充值方式 = 充值方式.支付宝;
                    充值记录.充值金额 = (decimal)amount;
                    充值记录.充值时间 = DateTime.Now;
                    充值记录.供应商转款账号 = Request.QueryString["buyer_email"];
                    充值记录.收款账号 = Request.QueryString["seller_email"];
                    充值记录.所属供应商.用户ID = currentUser.Id;
                    供应商充值记录管理.添加供应商充值记录(充值记录);

                    var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id));
                    if (余额记录.Count() > 0)
                    {
                        var model = 余额记录.First();
                        model.可用余额 += 充值记录.充值金额;
                        供应商充值余额管理.更新供应商充值余额(model);
                    }
                    else
                    {
                        var 充值余额 = new 供应商充值余额();
                        充值余额.可用余额 = 充值记录.充值金额;
                        充值余额.所属供应商.用户ID = currentUser.Id;
                        供应商充值余额管理.添加供应商充值余额(充值余额);
                    }


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.QueryString["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.QueryString["trade_no"];

                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];


                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        ViewData["Trade_Status"] = 1;//1充值成功,0充值失败
                        ViewData["result"] = amount; //Request.QueryString["total_fee"]; //充值金额
                        //ViewData["result"] = "用户号为" + Request.QueryString["buyer_id"] + "的你已购买价值为" + Request.QueryString["total_fee"] + "军采通产品,流水号位" + Request.QueryString["trade_no"] + "交易状态:" + Request.QueryString["trade_status"] + "验证ID为:" + Request.QueryString["notify_id"];
                    }
                    else
                    {
                        ViewData["Trade_Status"] = 0;
                        //Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                    }

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    //Response.Write("验证失败");
                    ViewData["Trade_Status"] = 0;
                }
            }
            else
            {
                ViewData["result"] = "无返回参数";
                //Response.Write("无返回参数");
            }
            return View();
        }
コード例 #12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                string trade_no = Request.Form["trade_no"];         //支付宝交易号
                string order_no = Request.Form["out_trade_no"];     //获取订单号
                string total_fee = Request.Form["total_fee"];       //获取总金额
                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"] == "TRADE_FINISHED")
                {
                    //判断该笔订单是否在商户网站中已经做过处理
                    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //如果有做过处理,不执行商户的业务程序

                    //注意:
                    //该种交易状态只在两种情况下出现
                    //1、开通了普通即时到账,买家付款成功后。
                    //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                }
                else if(Request.Form["trade_status"] == "TRADE_SUCCESS")
                {
                    //判断该笔订单是否在商户网站中已经做过处理
                    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //如果有做过处理,不执行商户的业务程序

                    //注意:
                    //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                }
                else
                {
                }

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

                Response.Write("success");  //请不要修改或删除

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #13
0
        public ActionResult Notify2()
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)
                {
                    string out_trade_no = Request.Form["out_trade_no"];
                    string trade_no = Request.Form["trade_no"];

                    string trade_status = Request.Form["trade_status"];

                    var amount = decimal.Parse(Request.Form["total_fee"]);
                    if (trade_status == "TRADE_FINISHED" ||
                        trade_status == "TRADE_SUCCESS")
                    {
                        var paymentEntity = Context.Set<OrderTransactionEntity>().Where(p => p.OrderNo == out_trade_no
                            && p.PaymentCode == Config.PaymentCode).FirstOrDefault();
                        var orderEntity = Context.Set<OrderEntity>().Where(o => o.OrderNo == out_trade_no).FirstOrDefault();
                        if (paymentEntity == null && orderEntity != null)
                        {
                            OrderTransactionEntity orderTransaction = null;
                            using (var ts = new TransactionScope())
                            {
                                _paymentNotifyRepo.Insert(new PaymentNotifyLogEntity()
                                {
                                    CreateDate = DateTime.Now,
                                    OrderNo = out_trade_no,
                                    PaymentCode = Config.PaymentCode,
                                    PaymentContent = JsonConvert.SerializeObject(sPara)
                                });

                                orderTransaction = _orderTranRepo.Insert(new OrderTransactionEntity()
                                {
                                    Amount = amount,
                                    OrderNo = out_trade_no,
                                    CreateDate = DateTime.Now,
                                    IsSynced = false,
                                    PaymentCode = Config.PaymentCode,
                                    TransNo = trade_no,
                                    OrderType = (int)PaidOrderType.Self
                                });
                                if (orderEntity.Status != (int)OrderStatus.Paid && orderEntity.TotalAmount<=amount)
                                {
                                    orderEntity.Status = (int)OrderStatus.Paid;
                                    orderEntity.UpdateDate = DateTime.Now;
                                    orderEntity.RecAmount = amount;
                                    _orderRepo.Update(orderEntity);

                                    _orderlogRepo.Insert(new OrderLogEntity()
                                    {
                                        CreateDate = DateTime.Now,
                                        CreateUser = 0,
                                        CustomerId = orderEntity.CustomerId,
                                        Operation = "支付订单",
                                        OrderNo = out_trade_no,
                                        Type = (int)OrderOpera.CustomerPay
                                    });
                                }
                                ts.Complete();
                               
                            }
                            //notify sync async
                            Task.Factory.StartNew(() =>
                            {
                                OrderRule.OrderPaid2Erp(orderTransaction);
                            });
                        }

                    }
                    return Content("success");

                }
                else
                {
                    return Content("fail");
                }
            }
            else
            {
                return Content("无通知参数");
            }
        }
コード例 #14
0
ファイル: return_url.aspx.cs プロジェクト: uwitec/O2O
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

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

                    Eyousoft_yhq.BLL.Order OrderType = new Eyousoft_yhq.BLL.Order();
                    var OrderModel = new Eyousoft_yhq.Model.Order();
                    string res = string.Empty;
                    if (trade_status == "TRADE_FINISHED")
                    {

                    }

                    else if (Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        OrderModel = OrderType.GetModel(out_trade_no);
                        if (OrderModel != null && OrderModel.PayState != Eyousoft_yhq.Model.PaymentState.已支付)
                        {

                            Eyousoft_yhq.Model.MConDetaile jilu = new Eyousoft_yhq.Model.MConDetaile()
                            {
                                HuiYuanID = OrderModel.MemberID,
                                XFway = Eyousoft_yhq.Model.XFfangshi.消费,
                                DingDanBianHao = OrderModel.OrderCode,
                                JiaoYiHao = DateTime.Now.ToString("yyyyMMddHHmm") + Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(5),
                                JiaoYiShiJian = DateTime.Now,
                                DDCarrtes = Eyousoft_yhq.Model.DDleibie.旅游订单,
                                JinE = OrderModel.OrderPrice
                            };
                            new Eyousoft_yhq.BLL.BConDetaile().Add(jilu);//消费记录

                            string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12);
                            while (OrderType.Exists(Ra))
                            {
                                Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12);
                            }
                            Eyousoft_yhq.Model.Order OrderInfo = new Eyousoft_yhq.Model.Order()
                            {
                                OrderID = out_trade_no,
                                PayState = Eyousoft_yhq.Model.PaymentState.已支付,
                                ConfirmCode = Ra,
                                OrderState = Eyousoft_yhq.Model.OrderState.已成交
                            };
                            int Sum = OrderType.UpdatePayState(OrderInfo);
                            if (Sum > 0)
                            {
                                Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member();
                                bool Mo = UM.GetModel(OrderModel.MemberID).valiUser;
                                if (!Mo)
                                {
                                    #region 短信发送
                                    string code = string.Empty;
                                    IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels();
                                    code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra);
                                    Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out res);//发送
                                    #endregion
                                    #region  短信日志
                                    Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog
                                    {
                                        TelCode = OrderModel.MemberTel,
                                        MsgText = code,
                                        ReResult = res
                                    };
                                    new Eyousoft_yhq.BLL.MsgLog().Add(MsLog);
                                    #endregion
                                }
                            }
                        }
                        var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no);
                        if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付)
                        {
                            var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID);
                            if (member != null)
                            {
                                member.YuE = member.YuE + chongzhiModel.OptMoney;
                                bool result = new Eyousoft_yhq.BLL.Member().Update(member);
                            }
                            new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付);
                        }
                    }
                    else
                    {
                    }

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

                    Response.Write("success");  //请不要修改或删除
                    Response.Redirect("/Huiyuan/OrderList.aspx");

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #15
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();
        #region 测试
        int orderid = Convert.ToInt32(Request.Form["body"]);
        string ordernum = Request.Form["out_trade_no"];
        string str=manager.EditOrder(orderid, StringHelper.付款成功);
        Response.Write("success");
        return;
        #endregion
        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码


                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                //商户订单号                string out_trade_no = Request.Form["out_trade_no"];

                //支付宝交易号                string trade_no = Request.Form["trade_no"];

                //交易状态
                string trade_status = Request.Form["trade_status"];
                //int orderid = Convert.ToInt32(Request.Form["body"]);
                //string ordernum = Request.Form["out_trade_no"];

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

                    //注意:
                    //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
                    //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                    //manager.EditOrder();
                    manager.EditOrder(orderid ,StringHelper.付款成功 );
                }
                else if(Request.Form["trade_status"] == "TRADE_SUCCESS")
                {
                    //判断该笔订单是否在商户网站中已经做过处理
                    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //如果有做过处理,不执行商户的业务程序

                    //注意:
                    //付款完成后,支付宝系统发送该交易状态通知
                    //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                    manager.EditOrder(orderid, StringHelper.付款成功);
                }
                else
                {
                }

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

                Response.Write("success");  //请不要修改或删除

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #16
0
ファイル: AlipayController.cs プロジェクト: NH4CL/UniProject
        public ActionResult return_url()
        {
            SortedDictionary<string, string> sPara = 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["price"];	            //获取总金额
                    string subject = Request.QueryString["subject"];                //商品名称、订单名称
                    string body = Request.QueryString["body"];                      //商品描述、订单备注、描述
                    string buyer_email = Request.QueryString["buyer_email"];        //买家支付宝账号
                    string receive_name = Request.QueryString["receive_name"];      //收货人姓名
                    string receive_address = Request.QueryString["receive_address"];//收货人地址
                    string receive_zip = Request.QueryString["receive_zip"];        //收货人邮编
                    string receive_phone = Request.QueryString["receive_phone"];    //收货人电话
                    string receive_mobile = Request.QueryString["receive_mobile"];  //收货人手机
                    string trade_status = Request.QueryString["trade_status"];      //交易状态

                    ViewBag.message = null;
                    if (Request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                    }
                    else
                    {
                        ViewBag.message = "trade_status=" + Request.QueryString["trade_status"];
                    }

                    //打印页面
                    ViewBag.message = "验证成功<br />" + "trade_no=" + trade_no;

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    ViewBag.message = "验证失败";
                }
            }
            else
            {
               ViewBag.message = "无返回参数";
            }
            return View();
        }
コード例 #17
0
ファイル: notify_url.aspx.cs プロジェクト: vasiliki02/le2le
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                //商户订单号
                string out_trade_no = Request.Form["out_trade_no"];

                //支付宝交易号
                string trade_no = Request.Form["trade_no"];

                //交易状态
                string trade_status = Request.Form["trade_status"];

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

                    //注意:
                    //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
                }
                else if(Request.Form["trade_status"] == "TRADE_SUCCESS")
                {
                    //判断该笔订单是否在商户网站中已经做过处理
                    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //如果有做过处理,不执行商户的业务程序

                    //注意:
                    //付款完成后,支付宝系统发送该交易状态通知
                }
                else
                {
                }

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

                Response.Write("success");  //请不要修改或删除

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #18
0
ファイル: return_url.aspx.cs プロジェクト: phiree/testttt
    protected void Page_Load(object sender, EventArgs e)
    {
        BLL.BLLOrder bllOrder = new BLL.BLLOrder();
        BLL.BLLPayment bllPayment;
        Model.Order order = new Model.Order();
        int orderId = int.Parse(Request["out_trade_no"]);
        string tradeNo = Request["trade_no"];
        if (orderId > 0)
        {

            order = bllOrder.GetOrderByOrderid(orderId);
            order.TradeNo = tradeNo;
            bllOrder.SaveOrUpdateOrder(order);
            //
            bllPayment = new BLL.BLLPayment(order);
            bllPayment.Received( Request.Url.Query);
        }
        else
        {
            BLL.ErrHandler.Redirect(BLL.ErrType.ParamIllegal);
        }
        SortedDictionary<string, string> sPara = 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"];      //交易状态

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

                    order.IsPaid = true;
                    order.PayTime = DateTime.Now;
                    bllOrder.SaveOrUpdateOrder(order);

                    Response.Redirect("/payment/paysuccess.aspx?orderid=" + orderId);

                }
                else
                {
                    Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                }

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

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("验证失败");
            }
        }
        else
        {
            Response.Write("无返回参数");
        }
    }
コード例 #19
0
ファイル: PayResultController.cs プロジェクト: 269378737/go81
        public ActionResult Payment_Result()
        {
            try
            {
                SortedDictionary<string, string> sPara = GetRequestGet();
                if (sPara.Count > 0)//判断是否有带返回参数
                {
                    Notify aliNotify = new Notify();
                    bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);
                    if (verifyResult)//验证成功
                    {
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        //请在这里加上商户的业务逻辑程序代码
                        var account = Request.QueryString["total_fee"];
                        string id = Request.QueryString["extra_common_param"];//传回的商品id和采购数量
                        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                        //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                        //商户订单号

                        string out_trade_no = Request.QueryString["out_trade_no"];

                        //支付宝交易号

                        string trade_no = Request.QueryString["trade_no"];

                        //交易状态
                        string trade_status = Request.QueryString["trade_status"];
                        string ordercode="";
                        /*if(!string.IsNullOrWhiteSpace(Request.QueryString["body"]))
                        {
                            ordercode=Request.QueryString["body"];//优惠码
                        }*/

                        if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                        {
                            if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) == 0)
                            {
                                ViewData["Trade_Status"] = 0;
                                ViewData["result"] = "不存在此订单";
                            }
                            else
                            {
                                订单 model = 订单管理.查找订单(long.Parse(id));
                                if (!model.已付款)
                                {
                                    /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode && m.已使用 == false)) > 0)
                                    {
                                        model.使用优惠码 = true;
                                        优惠码 yh = 优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First();
                                        yh.已使用 = true;
                                        优惠码管理.更新优惠码(yh);
                                    }*/
                                    model.已付款 = true;
                                    订单管理.更新订单(model);
                                    ViewData["userid"] = model.订单所属用户.用户ID;
                                }
                                else
                                {
                                    ViewData["userid"] = -1;
                                }
                                ViewData["Trade_Status"] = 1;//1订单付款成功,0订单付款失败
                                ViewData["result"] = "您已经成功购买价值为"+ account.ToString() + "的商品。";
                            }
                        }
                        else
                        {
                            ViewData["userid"] = -1;
                            ViewData["Trade_Status"] = 0;
                            ViewData["result"] = "交易为完成";
                            //Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                        }

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

                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    }
                    else//验证失败
                    {
                        //Response.Write("验证失败");
                        ViewData["userid"] = -1;
                        ViewData["Trade_Status"] = 0;
                        ViewData["result"] = "验证失败";
                    }
                }
                else
                {
                    ViewData["userid"] = -1;
                    ViewData["Trade_Status"] = 0;
                    ViewData["result"] = "无返回参数";
                    //Response.Write("无返回参数");
                }
                return View();
            }
            catch
            {
                ViewData["userid"] = -1;
                ViewData["Trade_Status"] = 0;
                ViewData["result"] = "支付出错!";
                return View();
            }
        }
コード例 #20
0
        // 同步调用,只发生一次
        public ActionResult AlipayReturn()
        {
            var model = new AlipayReturnViewModel();
            SortedDictionary<string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                    //商户订单号
                    model.out_trade_no = Request.QueryString["out_trade_no"];

                    //支付宝交易号
                    model.trade_no = Request.QueryString["trade_no"];

                    //交易状态
                    model.trade_status = Request.QueryString["trade_status"];

                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        model.message = "支付成功";
                    }
                    else
                    {
                        model.message = "支付失败";
                    }

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    model.message = ("验证失败");
                }
            }
            else
            {
                model.message = ("无返回参数");
            }
            return View(model);
        }
コード例 #21
0
        /// <summary>
        /// 支付宝 返回 前端订单交易信息 get
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ZFBReturnPara_Model ZFBReturn(HttpContext context)
        {
            ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model();
            SortedDictionary<string, string> sPara = GetRequestGet(context);
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Com.Alipay.Notify aliNotify = new Com.Alipay.Notify();
                bool verifyResult = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]);
                if (verifyResult)//验证成功
                {
                    #region
                    //交易状态
                    string trade_status = "trade_status".GetUrlString();

                    zfbpara.trade_no = "trade_no".GetUrlString();
                    zfbpara.order_no = "out_trade_no".GetUrlString();
                    zfbpara.total_fee = "total_fee".GetUrlString();

                    zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false;
                    zfbpara.isallreturn = false;
                    #endregion
                    zfbpara.iscallbacksuccess = true;
                    zfbpara.sendzfbcallbackmessage = "success";
                }
                else
                    zfbpara.sendzfbcallbackmessage = "fail";
            }
            else
                zfbpara.sendzfbcallbackmessage = "无通知参数";

            return zfbpara;

        }
コード例 #22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //批次号

                    string batch_no = Request.Form["batch_no"];

                    //批量退款数据中转账成功的笔数

                    string success_num = Request.Form["success_num"];

                    //批量退款数据中的详细信息
                    string result_details = Request.Form["result_details"];


                    //判断是否在商户网站中已经做过了这次通知返回的处理
                    //如果没有做过处理,那么执行商户的业务程序
                    //如果有做过处理,那么不执行商户的业务程序

                    #region 退款 异步更新数据 author:Ethan
                    //XHZ.BLL.U_OrdersBLL bll = new XHZ.BLL.U_OrdersBLL();
                    //XHZ.Model.U_Orders model = new XHZ.Model.U_Orders();
                    //model = bll.GetmodelByBatchNo(batch_no);
                    //if (model.OrderStatus == (int)XHZ.Model.UOrderStatus.已退款)
                    //{
                    //    Response.Write("success");  //请不要修改或删除
                    //}
                    //else
                    //{
                    //    model.OrderStatus = (int)XHZ.Model.UOrderStatus.已退款;
                    //    model.result_details = string.Format("退款明细[{0}],退款时间[{1}]", result_details, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                    //    XHZ.Web.Payment.Core.LogHandler.WriteLogForPay(model.OrderNo, "退款成功", model.result_details);

                    //    if (bll.Update(model))
                    //    {
                    //        try
                    //        {
                    //            P_User userModel = new P_UserBLL().GetModel(model.user_id);
                    //            pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已退款成功");
                    //        }
                    //        catch
                    //        {

                    //        }
                    //        XHZ.Web.Common.pfunction.InsertOrderHandle(model.OrderId, "您的订单退款成功", "支付宝退款接口异步调用");
                    //        XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款成功】", "支付宝退款异接口步调用");

                    //        Response.Write("success");  //请不要修改或删除
                    //    }
                    //    else
                    //    {
                    //        XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款失败】", "支付宝退款接口异步调用");
                    //    }
                    //}
                    #endregion

                    //Response.Write("success");  //请不要修改或删除

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestGet();

            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"];
                    orderID = out_trade_no;
                    //支付宝交易号

                    string trade_no = Request.QueryString["trade_no"];

                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];

                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        succ = true;
                        if (out_trade_no.Contains("C"))
                        {
                            ordertype = 1;
                        }
                        else if (out_trade_no.Contains("P"))
                        {
                            ordertype = 2;
                        }
                        ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no);
                        if (m_mod == null)
                        {
                            ShowError("");//订单号错误
                        }
                        if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay)
                        {
                            m_mod.CurrentID = trade_no;//记录支付流水号
                            ORD_CashBll.GetInstance().SetPaySucc(m_mod);
                        }
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                    }
                    else
                    {
                        LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回"+Request.QueryString["trade_status"], "PayReturnForAlipay",base.Request.UserHostAddress );
                    }

                    //打印页面
                    ShowResult();

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回验证失败", "PayReturnForAlipay", base.Request.UserHostAddress);
                }
            }
            else
            {
                LogManagement.getInstance().WriteTrace("支付宝返回无参数", "PayReturnForAlipay", base.Request.UserHostAddress);
                ShowError("请从正确的入口进入");
            }
        }
コード例 #24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];
                    orderID = out_trade_no;
                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];

                    if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {
                        succ = true;
                        if (out_trade_no.Contains("C"))
                        {
                            ordertype = 1;
                        }
                        else if (out_trade_no.Contains("P"))
                        {
                            ordertype = 2;
                        }
                        ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no);
                        if (m_mod == null)
                        {
                            ShowError("");//订单号错误
                        }
                        if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay)
                        {
                            m_mod.CurrentID = trade_no;//记录支付流水号
                            ORD_CashBll.GetInstance().SetPaySucc(m_mod);
                        }
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                    }
                    //else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                    //{
                    //    //判断该笔订单是否在商户网站中已经做过处理
                    //    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //    //如果有做过处理,不执行商户的业务程序

                    //    //注意:
                    //    //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                    //}
                    else
                    {
                        LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回" + Request.QueryString["trade_status"], "PayReturnForAlipay", base.Request.UserHostAddress);
                    }

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

                    Response.Write("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #25
0
ファイル: Alipay_Notify.aspx.cs プロジェクト: uwitec/O2O
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];

                    if (Request.Form["trade_status"] == "TRADE_FINISHED")
                    {
                        Response.Write("success");
                    }
                    else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {

                        var OrderModel = new Eyousoft_yhq.Model.Order();
                        var OrderBll = new Eyousoft_yhq.BLL.Order();
                        OrderModel = OrderBll.GetModel(out_trade_no);
                        if (OrderModel != null && OrderModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付)
                        {
                            string result = string.Empty;
                            string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12);
                            while (OrderBll.Exists(Ra))
                            {
                                Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12);
                            }
                            OrderModel.OrderID = out_trade_no;
                            OrderModel.PayState = Eyousoft_yhq.Model.PaymentState.已支付;
                            OrderModel.OrderState = Eyousoft_yhq.Model.OrderState.已成交;
                            OrderModel.ConfirmCode = Ra;
                            int Sum = OrderBll.UpdatePayState(OrderModel);
                            if (Sum > 0)
                            {
                                Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member();
                                bool Mo = UM.GetModel(OrderModel.MemberID).valiUser;
                                if (!Mo)
                                {
                                    #region 短信发送
                                    string code = string.Empty;
                                    IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels();
                                    code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra);
                                    Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out result);//发送
                                    #region  短信日志
                                    Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog
                                    {
                                        TelCode = OrderModel.MemberTel,
                                        MsgText = code,
                                        ReResult = result
                                    };
                                    new Eyousoft_yhq.BLL.MsgLog().Add(MsLog);
                                    #endregion

                                    #endregion
                                }
                            }
                        }
                        var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no);
                        if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付)
                        {
                            var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID);
                            if (member != null)
                            {
                                member.YuE = member.YuE + chongzhiModel.OptMoney;
                                bool result = new Eyousoft_yhq.BLL.Member().Update(member);
                            }
                            new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付);
                        }
                    }
                    else
                    {
                    }

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

                    Response.Write("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SortedDictionary <string, string> sPara = GetRequestGet();

                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"].Filter();

                        //支付宝交易号

                        string trade_no = Request.QueryString["trade_no"].Filter();

                        //交易状态
                        string trade_status = Request.QueryString["trade_status"].Filter();

                        int orderStatus = 0;
                        if (trade_status.ToUpper() == "TRADE_FINISHED" || trade_status.ToUpper() == "TRADE_SUCCESS")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序
                            orderStatus = (int)UOrderStatus.付款成功;
                        }
                        else
                        {
                            Response.Write("trade_status=" + trade_status.ToUpper());
                        }

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

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

                        Model_UserOrder model = new Rc.BLL.Resources.BLL_UserOrder().GetModelByOrderNo(out_trade_no);
                        if (model.UserOrder_Type == "1")//教师订单
                        {
                            Response.Redirect("../teacher/allOrder.aspx");
                        }
                        else if (model.UserOrder_Type == "2")//学生订单
                        {
                            Response.Redirect("../student/allOrder.aspx");
                        }
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    }
                    else//验证失败
                    {
                        Response.Write("验证失败");
                    }
                }
                else
                {
                    Response.Write("无返回参数");
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());
            }
        }
コード例 #27
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"].Filter();

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"].Filter();

                    //交易状态
                    string trade_status = Request.Form["trade_status"].Filter();

                    //买家支付宝账号
                    string buyer_email = Request.Form["buyer_email"];

                    int orderStatus = 1;// (int)XHZ.Model.UOrderStatus.等待付款;
                    if (trade_status.ToUpper() == "TRADE_FINISHED")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
                        orderStatus = (int)UOrderStatus.付款成功;
                    }
                    else if (trade_status.ToUpper() == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //付款完成后,支付宝系统发送该交易状态通知
                        orderStatus = (int)UOrderStatus.付款成功;
                    }
                    else
                    {
                    }

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

                    Rc.Web.Payment.Core.LogHandler.WriteLogForPay(out_trade_no, "付款成功", trade_no);

                    #region 付款成功 异步更新订单表 author:Ethan
                    Model_UserOrder model = new Model_UserOrder();
                    BLL_UserOrder   bll   = new BLL_UserOrder();
                    model = bll.GetModelByOrderNo(out_trade_no);

                    if (orderStatus == (int)UOrderStatus.付款成功 && model.UserOrder_Status == (int)UOrderStatus.待付款)
                    {
                        model.UserOrder_Paytool    = UserOrder_PaytoolEnum.ALIPAY.ToString();
                        model.UsreOrder_Buyeremail = buyer_email;
                        model.trade_no             = trade_no;
                        model.trade_status         = trade_status;
                        model.UserOrder_Status     = (int)UOrderStatus.完成;
                        model.UserOrder_FinishTime = DateTime.Now;

                        bool executeFlag = false;
                        if (new BLL_UserBuyResources().GetRecordCount(string.Format("UserId='{0}' and Book_id='{1}' ", model.UserId, model.Book_Id)) == 0)
                        {
                            #region 用户购买资源表
                            Model_UserBuyResources buyModel = new Model_UserBuyResources();
                            buyModel.UserBuyResources_ID = Guid.NewGuid().ToString();
                            buyModel.UserId     = model.UserId;
                            buyModel.Book_id    = model.Book_Id;
                            buyModel.BookPrice  = model.Book_Price;
                            buyModel.BuyType    = UserOrder_PaytoolEnum.ALIPAY.ToString();
                            buyModel.CreateTime = DateTime.Now;
                            buyModel.CreateUser = "******";
                            #endregion
                            executeFlag = bll.UpdateAndAddUserBuyResources(model, buyModel);
                        }
                        else
                        {
                            executeFlag = bll.Update(model);
                        }

                        if (executeFlag)
                        {
                            //try
                            //{
                            //    P_User userModel = new P_UserBLL().GetModel(model.user_id);
                            //    pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已支付成功");
                            //}
                            //catch
                            //{

                            //}
                            //if (new U_OrdersHandleBLL().GetRecordCount("OrderId='" + model.OrderId + "' and OperateUser='******'") == 0)
                            //{
                            //    pfunction.InsertOrderHandle(model.OrderId, "您已" + XHZ.Common.EnumService.GetDescription<UOrderStatus>(orderStatus), "支付接口异步回调");
                            //}
                            new Rc.Cloud.BLL.BLL_clsAuth().AddLogFromBS(Request.Url.ToString(), string.Format("支付宝回调。购买资源成功,购买人:{0},资源标识:{1}"
                                                                                                              , model.UserId, model.Book_Id));
                            Response.Write("success");  //请不要修改或删除
                        }
                    }
                    #endregion

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #28
0
ファイル: PayResultController.cs プロジェクト: 269378737/go81
        public void Notify()
        {
            SortedDictionary<string, string> sPara = GetRequestPost();
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);
                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    var account = Request.Form["total_fee"];
                    string ordercode = "";
                    /*if (!string.IsNullOrWhiteSpace(Request.Form["body"]))
                    {
                        ordercode = Request.Form["body"];//优惠码
                    }*/
                    string id = Request.Form["extra_common_param"];//传回的商品id和采购数量
                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];

                    if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {
                        if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) != 0)
                        {
                            订单 model = 订单管理.查找订单(long.Parse(id));
                            if (!model.已付款)
                            {
                                /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode&&m.已使用==false))>0)
                                {
                                    model.使用优惠码 = true;
                                    优惠码 yh=优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First();
                                    yh.已使用 = true;
                                    优惠码管理.更新优惠码(yh);
                                }*/
                                model.已付款 = true;
                                订单管理.更新订单(model);
                            }
                        }
                    }
                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
            }
        }
コード例 #29
0
ファイル: jctController.cs プロジェクト: 269378737/go81
        public void Notify()
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);
                // WriteTxt(Request.Form["notify_id"]+"\r\n" + Request.Form["sign"]);
                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    var account = Request.QueryString["total_fee"];
                    var 当前用户 = currentUser as 供应商;
                    var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString();
                    double amount = 0D;
                    switch (会员级别)
                    {
                        case "军采通标准会员":
                            switch (account)
                            {
                                case "2850":
                                    amount = double.Parse(account) / 0.95;
                                    break;
                                case "5400":
                                    amount = double.Parse(account) / 0.9;
                                    break;
                                case "8500":
                                    amount = double.Parse(account) / 0.85;
                                    break;
                                case "16000":
                                    amount = double.Parse(account) / 0.8;
                                    break;
                            }
                            break;
                        case "军采通高级会员":
                            switch (account)
                            {
                                case "2700":
                                    amount = double.Parse(account) / 0.9;
                                    break;
                                case "5100":
                                    amount = double.Parse(account) / 0.85;
                                    break;
                                case "8000":
                                    amount = double.Parse(account) / 0.8;
                                    break;
                                case "15000":
                                    amount = double.Parse(account) / 0.75;
                                    break;
                            }
                            break;
                        default:
                            switch (account)
                            {
                                case "2940":
                                    amount = double.Parse(account) * 0.98;
                                    break;
                                case "5700":
                                    amount = double.Parse(account) * 0.95;
                                    break;
                                case "9200":
                                    amount = double.Parse(account) * 0.92;
                                    break;
                                case "18000":
                                    amount = double.Parse(account) * 0.9;
                                    break;
                            }
                            break;
                    }


                    var 充值记录 = new 供应商充值记录();
                    充值记录.充值方式 = 充值方式.支付宝;
                    充值记录.充值金额 = (decimal)amount;
                    充值记录.充值时间 = DateTime.Now;
                    充值记录.供应商转款账号 = Request.QueryString["buyer_email"];
                    充值记录.收款账号 = Request.QueryString["seller_email"];
                    充值记录.所属供应商.用户ID = currentUser.Id;
                    供应商充值记录管理.添加供应商充值记录(充值记录);

                    var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id));
                    if (余额记录.Count() > 0)
                    {
                        var model = 余额记录.First();
                        model.可用余额 += 充值记录.充值金额;
                        供应商充值余额管理.更新供应商充值余额(model);
                    }
                    else
                    {
                        var 充值余额 = new 供应商充值余额();
                        充值余额.可用余额 = 充值记录.充值金额;
                        充值余额.所属供应商.用户ID = currentUser.Id;
                        供应商充值余额管理.添加供应商充值余额(充值余额);
                    }



                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];


                    if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {
                        WriteTxt("订单号:" + out_trade_no + "交易号:" + trade_no + "交易状态:" + trade_status);
                    }
                    else
                    {
                    }
                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
                    Response.Write("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
コード例 #30
0
        // 异步调用,支付宝会在24小时内多次调用,直到成功为止
        public ActionResult AlipayNotify()
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号
                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号
                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];

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

                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                    }
                    else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                    }
                    else
                    {
                    }

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

                    Response.Write("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }

            return View();
        }
コード例 #31
0
        ///// <summary>
        ///// 
        ///// </summary>
        ///// <returns></returns>
        //public ActionResult notify_url()
        //{
        //    SortedDictionary<string, string> sPara = GetRequestPost();
        //    if (sPara.Count > 0)//判断是否有带返回参数
        //    {
        //        Notify aliNotify = new Notify();
        //        bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);
        //        if (verifyResult)//验证成功
        //        {
        //            /////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //            //请在这里加上商户的业务逻辑程序代码
        //            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
        //            //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
        //            //商户订单号
        //            string out_trade_no = Request.Form["out_trade_no"];
        //            //支付宝交易号
        //            string trade_no = Request.Form["trade_no"];
        //            //交易状态
        //            string trade_status = Request.Form["trade_status"];
        //            if (Request.Form["trade_status"] == "TRADE_FINISHED")
        //            {
        //                //判断该笔订单是否在商户网站中已经做过处理
        //                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
        //                //如果有做过处理,不执行商户的业务程序
        //                //注意:
        //                //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
        //            }
        //            else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
        //            {
        //                //判断该笔订单是否在商户网站中已经做过处理
        //                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
        //                //如果有做过处理,不执行商户的业务程序
        //                //注意:
        //                //付款完成后,支付宝系统发送该交易状态通知
        //            }
        //            else
        //            {
        //            }
        //            //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
        //            Response.Write("success");  //请不要修改或删除
        //            /////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //        }
        //        else//验证失败
        //        {
        //            Response.Write("fail");
        //        }
        //    }
        //    else
        //    {
        //        Response.Write("无通知参数");
        //    }
        //    return View();
        //}
        public ActionResult return_url()
        {
            SortedDictionary<string, string> sPara = GetRequestGet();

            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 total_fee = Request.QueryString["total_fee"];
                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];

                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {

                        return RedirectToAction("TradeSuccess", "ChannelEvent", new RouteValueDictionary { { "area", "Event" }, { "orderNumber", out_trade_no }});
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                    }
                    else
                    {
                        Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                    }

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

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }

            return View();
        }
コード例 #32
0
ファイル: notify_url.aspx.cs プロジェクト: zjplus/phoneSys
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码

                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                //商户订单号

                string out_trade_no = Request.Form["out_trade_no"];

                //支付宝交易号

                string trade_no = Request.Form["trade_no"];

                //交易状态
                string trade_status = Request.Form["trade_status"];

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

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

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

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

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

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

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

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

                    Response.Write("success");  //请不要修改或删除
                }
                else
                {
                    Response.Write("success");  //其他状态判断。
                }

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

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
コード例 #33
0
ファイル: ResultFromAlipay.aspx.cs プロジェクト: ue96/ue96
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                //TODO:
                //上线需要verifyResult==true
                if (!verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];

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

                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                    }
                    else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                    }
                    else
                    {
                    }

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
                    try
                    {
                        //更新自己数据库的订单语句,请自己填写一下
                        string SOsysno = Request.Form["out_trade_no"];
                        int sosysno = Int32.Parse(SOsysno);

                        if (NetPayManager.GetInstance().IsPayedForAlipay(sosysno))
                        {
                            Response.Write("fail");
                            return;
                        }

                        SOInfo order = SaleManager.GetInstance().LoadSOMaster(sosysno);

                        if (order != null)
                        {
                            NetPayInfo netpay = new NetPayInfo();

                            netpay.SOSysNo = Int32.Parse(SOsysno);
                            netpay.PayTypeSysNo = order.PayTypeSysNo;
                            netpay.InputTime = DateTime.Now;
                            netpay.Source = (int)AppEnum.NetPaySource.Bank;
                            netpay.PayAmount = decimal.Parse(Request.Form["total_fee"]);
                            netpay.Status = (int)AppEnum.NetPayStatus.Origin;
                            //netpay.Note = Request.QueryString["msg"];
                            NetPayManager.GetInstance().Insert(netpay);

                            if (netpay.PayAmount >= order.GetTotalAmt())
                            {
                                //客人通过网上支付后,自动修改订单状态为已付款,默认为ias审核,userSysNo=33
                                NetPayManager.GetInstance().Verify(netpay.SysNo, 33);
                                Response.Write("success");
                            }
                            else
                            {
                                Response.Write("success");
                            }
                        }
                        else
                        {
                            Response.Write("fail");
                        }
                    }
                    catch
                    {
                        Response.Write("fail");
                    }
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }