コード例 #1
0
ファイル: HomeController.cs プロジェクト: fengzijun/Beauty
        public ActionResult ProcessTrxReturn()
        {
            SortedDictionary <string, string> sPara = GetRequestGet();
            PaginationInfo paging = new PaginationInfo();

            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)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        MoneyRecord moneyrecord = imoney.Get(Guid.Parse(out_trade_no));
                        if (moneyrecord != null && !moneyrecord.Balance.HasValue)
                        {
                            Setting setting     = isetting.Get(Guid.Parse("2AADE1C6-59BE-4B0E-927C-7B28BFC8C397"));
                            Setting backsetting = isetting.Get(Guid.Parse("3A1FC752-0700-492B-A6C6-A5460271DC91"));
                            User    user        = iuser.Get(null, moneyrecord.Username, null, null, null, null, null, null, null, null, null, 0, null, out paging)[0];
                            user.Point          = user.Point + decimal.Round(decimal.Parse(setting.Value) * moneyrecord.Money, 2);
                            moneyrecord.Balance = user.Point - user.FreezePoint;


                            iuser.Update(user);
                            imoney.Update(moneyrecord);
                            WriteLog(user.Username + " 充值" + moneyrecord.Money.ToString());
                            if (!string.IsNullOrEmpty(user.Refer))
                            {
                                IList <User> referusers = iuser.Get(null, user.Refer, null, null, null, null, null, null, null, null, null, 0, null, out paging);
                                if (referusers != null && referusers.Count > 0)
                                {
                                    User    referuser = referusers[0];
                                    decimal addpoint  = decimal.Parse(setting.Value) * moneyrecord.Money * decimal.Parse(backsetting.Value);
                                    addpoint        = decimal.Round(addpoint, 2);
                                    referuser.Point = referuser.Point + addpoint;
                                    WriteLog(referuser.Username + " 获得返利积分" + (decimal.Parse(setting.Value) * moneyrecord.Money * decimal.Parse(backsetting.Value)).ToString());
                                    iuser.Update(referuser);

                                    MoneyRecord money = new MoneyRecord
                                    {
                                        ID       = Guid.NewGuid(),
                                        Money    = 0,
                                        Statues  = 1,
                                        Username = referuser.Username,
                                        Balance  = referuser.Point - referuser.FreezePoint,
                                        Type     = "获得返利积分:" + addpoint.ToString()
                                    };

                                    imoney.Create(money);
                                }
                            }

                            ViewBag.Money = moneyrecord.Money.ToString();
                            ViewBag.Msg   = "成功";
                            ViewBag.Type  = "OK";
                        }
                        else
                        {
                            ViewBag.Msg  = "非法操作";
                            ViewBag.Type = "Fail";
                        }
                    }
                    else
                    {
                        ViewBag.Msg  = "非法操作";
                        ViewBag.Type = "Fail";
                    }



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

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

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    //Response.Write("验证失败");

                    ViewBag.Msg  = "非法操作";
                    ViewBag.Type = "Fail";
                }
            }
            else
            {
                //Response.Write("无返回参数");
                ViewBag.Msg  = "非法操作";
                ViewBag.Type = "Fail";
            }

            return(View());
        }