Beispiel #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var obj = Session["OrderInfo"];

            if (obj != null)
            {
                ordersinfo os = JsonConvert.DeserializeObject <ordersinfo>(obj.ToString());
                WIDout_trade_no.Text = os.ID;
                WIDsubject.Text      = os.OExtension;
                WIDtotal_fee.Text    = os.Money.ToString();
                WIDshow_url.Text     = "http://mp.weixin.qq.com/s/latm6ZXn2Hi6yCy8oWKa5Q";
                WIDbody.Text         = "回馈众多Vip用户特权礼品,每人仅能领取一次!";
            }
        }
Beispiel #2
0
        public void AliPlay(ordersinfo os)
        {
            ////////////////////////////////////////////请求参数////////////////////////////////////////////


            //商户订单号,商户网站订单系统中唯一订单号,必填
            string out_trade_no = os.ID;

            //订单名称,必填
            string subject = os.OExtension;

            //付款金额,必填
            string total_fee = os.Money.ToString();

            //收银台页面上,商品展示的超链接,必填
            string show_url = "http://mp.weixin.qq.com/s/latm6ZXn2Hi6yCy8oWKa5Q";

            //商品描述,可空
            string body = "回馈众多Vip用户特权礼品,每人仅能领取一次!";



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

            //把请求参数打包成数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            sParaTemp.Add("partner", Config.partner);
            sParaTemp.Add("seller_id", Config.seller_id);
            sParaTemp.Add("_input_charset", Config.input_charset.ToLower());
            sParaTemp.Add("service", Config.service);
            sParaTemp.Add("payment_type", Config.payment_type);
            sParaTemp.Add("notify_url", Config.notify_url);
            sParaTemp.Add("return_url", Config.return_url);
            sParaTemp.Add("out_trade_no", out_trade_no);
            sParaTemp.Add("subject", subject);
            sParaTemp.Add("total_fee", total_fee);
            sParaTemp.Add("show_url", show_url);
            sParaTemp.Add("app_pay", "Y");//启用此参数可唤起钱包APP支付。
            sParaTemp.Add("body", body);
            //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1
            //如sParaTemp.Add("参数名","参数值");

            //建立请求
            string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认");

            Response.Write(sHtmlText);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            using (SBIContext sc = new SBIContext())
            {
                SortedDictionary <string, string> sPara = GetRequestPost();
                Core.LogResult("支付宝测试log:sPara" + sPara);
                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"];
                        string     ID           = trade_no;
                        ordersinfo os           = sc.ordersinfo.Where(o => o.ID == ID && o.PayStatus == 0).FirstOrDefault();

                        if (Request.Form["trade_status"] == "TRADE_FINISHED")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                            //如果有做过处理,不执行商户的业务程序
                            if (os != null)
                            {
                                DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10);
                                DateTime now     = DateTime.Now;
                                if (now > endtime)
                                {
                                    os.Remark = "支付超时";
                                    sc.SaveChanges();
                                    Core.LogResult("支付宝异步支付超时->支付失败->跳转到支付失败页面!");
                                    Response.Write("fail");
                                }
                                else
                                {
                                    os.PayStatus = 1;
                                    sc.SaveChanges();
                                    Core.LogResult("支付宝异步回调数据成功->支付成功->跳转到支付成功页面!");
                                    Response.Write("success");
                                }
                            }
                            //注意:
                            //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
                        }
                        else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                            //如果有做过处理,不执行商户的业务程序
                            if (os != null)
                            {
                                DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10);
                                DateTime now     = DateTime.Now;
                                if (now > endtime)
                                {
                                    os.Remark = "支付超时";
                                    sc.SaveChanges();
                                    Core.LogResult("支付宝异步支付超时->支付失败->跳转到支付失败页面!");
                                    Response.Write("fail");
                                }
                                else
                                {
                                    os.PayStatus = 1;
                                    sc.SaveChanges();
                                    Core.LogResult("支付宝异步回调数据成功->支付成功->跳转到支付成功页面!");
                                    Response.Write("success");
                                }
                            }
                            //注意:
                            //付款完成后,支付宝系统发送该交易状态通知
                        }
                        else
                        {
                            Core.LogResult("支付宝异步回调数据失败->支付状态trade_status=" + Request.Form["trade_status"]);
                        }

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

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

                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    }
                    else//验证失败
                    {
                        Core.LogResult("支付宝异步回调数据验证失败->验证失败");
                        Response.Write("fail");
                    }
                }
                else
                {
                    Core.LogResult("支付宝异步回调数据验证失败->无返回参数");
                    Response.Write("无通知参数");
                }
            }
        }
Beispiel #4
0
        public ActionResult OrderInfo(string UserName, string Phone, string Adress)
        {
            using (CTContext cc = new CTContext())
            {
                var result = cc.Users.Where(o => o.UserName == Phone && o.IsVip == 1).ToList();
                if (result.Count() > 0)
                {
                    //生成订单ID
                    var id = MD5Helper.getMd5Hash(Phone + DateTime.Now.ToString());
                    if (string.IsNullOrWhiteSpace(UserName))
                    {
                        Response.Write("<script languge='javascript'>alert('名字不能为空!');</script>");
                        return(View());
                    }
                    if (string.IsNullOrWhiteSpace(Phone))
                    {
                        Response.Write("<script languge='javascript'>alert('手机号码不能为空!');</script>");
                        return(View());
                    }
                    //电信手机号码正则
                    string dianxin = @"^1[3578][01379]\d{8}$";
                    Regex  dReg    = new Regex(dianxin);
                    //联通手机号正则
                    string liantong = @"^1[34578][01256]\d{8}$";
                    Regex  tReg     = new Regex(liantong);
                    //移动手机号正则
                    string yidong = @"^(134[012345678]\d{7}|1[34578][012356789]\d{8})$";
                    Regex  yReg   = new Regex(yidong);

                    if (!dReg.IsMatch(Phone) && !tReg.IsMatch(Phone) && !yReg.IsMatch(Phone))
                    {
                        Response.Write("<script languge='javascript'>alert('手机号码错误,请填写正确号码!');</script>");
                        return(View());
                    }
                    if (string.IsNullOrWhiteSpace(Adress))
                    {
                        Response.Write("<script languge='javascript'>alert('手机号码不能为空alert('地址不能为空!');</script>");
                        return(View());
                    }
                    using (SBIContext sc = new SBIContext())
                    {
                        try
                        {
                            var model = sc.ordersinfo.Where(o => o.Phone == Phone && o.PayStatus == 1).FirstOrDefault();
                            if (model == null)
                            {
                                ordersinfo os = new ordersinfo();
                                os.ID         = id;
                                os.Name       = UserName;
                                os.Phone      = Phone;
                                os.Adress     = Adress;
                                os.DateTime   = DateTime.Now;
                                os.Money      = 0.01;
                                os.OExtension = "茶叶运送邮费";
                                var obj = JsonConvert.SerializeObject(os);
                                Session["OrderInfo"] = obj;
                                sc.ordersinfo.Add(os);
                                sc.SaveChanges();
                                AliPlay(os);
                            }
                            else
                            {
                                Response.Write("<script languge='javascript'>alert('该用户已申请过,不可重复申请!');</script>");
                                return(View());
                            }
                        }
                        catch (Exception e)
                        {
                            Session["Error"] = e.Message;
                            Response.Redirect("default/Error");
                        }
                    }
                    return(View());
                }
                else
                {
                    Response.Write("<script languge='javascript'>alert('手机号码与注册手机号不符,请用开通VIP的账号来领取礼品!');</script>");
                    return(View());
                }
            }
        }
Beispiel #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            using (SBIContext sc = new SBIContext())
            {
                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"];
                        string     ID           = out_trade_no;
                        ordersinfo os           = sc.ordersinfo.Where(o => o.ID == ID && o.PayStatus == 0).FirstOrDefault();

                        if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序
                            if (os != null)
                            {
                                DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10);
                                DateTime now     = DateTime.Now;
                                if (now > endtime)
                                {
                                    os.Remark = "支付宝异步支付超时->支付失败->跳转到支付失败页面!";
                                    sc.SaveChanges();
                                    Core.LogResult("return:支付宝异步支付超时->支付失败->跳转到支付失败页面!");
                                    Response.Write("fail");
                                }
                                else
                                {
                                    os.PayStatus = 1;
                                    sc.SaveChanges();
                                    Core.LogResult("return:支付宝异步回调数据成功->支付成功->跳转到支付成功页面!");
                                    Response.Write("success");
                                }
                            }
                        }
                        else
                        {
                            Core.LogResult("return:支付宝同步回调数据验证失败->支付状态trade_status=" + Request.QueryString["trade_status"]);
                            Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                        }

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

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

                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    }
                    else//验证失败
                    {
                        Core.LogResult("return:支付宝同步回调数据验证失败->验证失败");
                        Response.Write("验证失败");
                    }
                }
                else
                {
                    Core.LogResult("return:支付宝同步回调数据验证失败->无返回参数");
                    Response.Write("无返回参数");
                }
            }
        }