Example #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PayConfig payConfig       = new PayConfig();
            string    alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?";
            string    key             = payConfig.SecurityKey; //partner 的对应交易安全校验码(必须填写)
            string    _input_charset  = "utf-8";
            string    partner         = payConfig.Partner;     //partner合作伙伴id(必须填写)

            alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "&notify_id=" + Request.QueryString["notify_id"];
            //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
            string responseTxt = Get_Http(alipayNotifyURL, 120000);
            int    i;
            NameValueCollection coll = Request.QueryString;

            String[] requestarr = coll.AllKeys;
            //进行排序;
            string[] Sortedstr = BubbleSort(requestarr);
            //构造待md5摘要字符串 ;
            StringBuilder prestr = new StringBuilder();

            for (i = 0; i < Sortedstr.Length; i++)
            {
                if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")
                {
                    if (i == Sortedstr.Length - 1)
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);
                    }
                    else
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");
                    }
                }
            }
            prestr.Append(key);
            //生成Md5摘要;
            string mysign = GetMD5(prestr.ToString(), _input_charset);
            string sign   = Request.QueryString["sign"];

            if (mysign == sign && responseTxt == "true")   //验证支付发过来的消息,签名是否正确
            {
                //更新数据库的订单语句
                message = "成功付款";
                string    orderNumber = RequestHelper.GetQueryString <string>("out_trade_no");
                OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                if (order.ID > 0)
                {
                    if (order.OrderStatus == (int)OrderStatus.WaitPay)
                    {
                        order.OrderStatus = (int)OrderStatus.WaitCheck;
                        OrderBLL.UpdateOrder(order);
                        //增加操作记录
                        OrderActionInfo orderAction = new OrderActionInfo();
                        orderAction.OrderID          = order.ID;
                        orderAction.OrderOperate     = (int)OrderOperate.Pay;
                        orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                        orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                        orderAction.Note             = "客户支付宝在线支付";
                        orderAction.IP        = ClientHelper.IP;
                        orderAction.Date      = RequestHelper.DateNow;
                        orderAction.AdminID   = 0;
                        orderAction.AdminName = string.Empty;
                        OrderActionBLL.AddOrderAction(orderAction);

                        message = "您已经成功支付订单:" + orderNumber;
                    }
                }
                else
                {
                    UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                    if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                    {
                        userRecharge.IsFinish = (int)BoolType.True;
                        UserRechargeBLL.UpdateUserRecharge(userRecharge);
                        //账户记录
                        string note = "支付宝在线冲值:" + userRecharge.Number;
                        UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);

                        message = "您的冲值已经成功完成";
                    }
                }
            }
            else
            {
                message = "支付订单出现问题";
            }
        }
Example #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string suchtml = "<meta content=\"China TENCENT\" name=\"TENCENT_ONLINE_PAYMENT\">\n"
                             + "<script language=\"javascript\">\n"
                             + "window.location.href='http://" + Request.ServerVariables["Http_Host"] + "/Plugins/Pay/TenPay/Show.aspx';\n"
                             + "</script>";
            string errmsg = "";

            PayConfig payConfig = new PayConfig();
            Md5Pay    md5pay    = new Md5Pay();

            md5pay.Key          = payConfig.BusinessKey; //卖家商户key
            md5pay.Bargainor_id = payConfig.BargainorID;
            //判断签名
            if (md5pay.GetPayValueFromUrl(Request.QueryString, out errmsg))
            {
                //认证签名成功
                //支付判断
                if (md5pay.Pay_Result == Md5Pay.PAYOK)
                {
                    //支付成功,同定单号md5pay.Transaction_id可能会多次通知,请务必注意判断订单是否重复的逻辑
                    //跳转到成功页面,财付通收到<meta content=\"China TENCENT\" name=\"TENCENT_ONLINE_PAYMENT\">,认为通知成功
                    string    orderNumber = md5pay.Sp_billno;
                    OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                    if (order.ID > 0)
                    {
                        if (order.OrderStatus == (int)OrderStatus.WaitPay)
                        {
                            order.OrderStatus = (int)OrderStatus.WaitCheck;
                            OrderBLL.UpdateOrder(order);
                            //增加操作记录
                            OrderActionInfo orderAction = new OrderActionInfo();
                            orderAction.OrderID          = order.ID;
                            orderAction.OrderOperate     = (int)OrderOperate.Pay;
                            orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                            orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                            orderAction.Note             = "客户财付通在线支付";
                            orderAction.IP        = ClientHelper.IP;
                            orderAction.Date      = RequestHelper.DateNow;
                            orderAction.AdminID   = 0;
                            orderAction.AdminName = string.Empty;
                            OrderActionBLL.AddOrderAction(orderAction);
                        }
                    }
                    else
                    {
                        UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                        if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                        {
                            userRecharge.IsFinish = (int)BoolType.True;
                            UserRechargeBLL.UpdateUserRecharge(userRecharge);
                            //账户记录
                            string note = "财付通在线冲值:" + userRecharge.Number;
                            UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);
                        }
                    }
                    //StreamWriter sw = File.AppendText(Server.MapPath("log.txt"));
                    //sw.WriteLine(DateTime.Now.ToString() + orderNumber);
                    //sw.Flush();
                    //sw.Close();
                    Response.Write(suchtml);
                }
                else
                {
                    //支付失败,请不要按成功处理
                    Response.Write("支付失败" + errmsg);
                }
            }
            else
            {
                //认证签名失败
                Response.Write("认证签名失败");
            }
        }
Example #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

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

                if (verifyResult)                                                                                            //验证成功
                {
                    if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") //   判断支付状态TRADE_FINISHED(文档中有枚举表可以参考)
                    {
                        //更新数据库的订单语句
                        string    orderNumber = RequestHelper.GetForm <string>("out_trade_no");
                        OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                        if (order.ID > 0)
                        {
                            if (order.OrderStatus == (int)OrderStatus.WaitPay)
                            {
                                order.OrderStatus = (int)OrderStatus.WaitCheck;
                                OrderBLL.UpdateOrder(order);
                                //增加操作记录
                                OrderActionInfo orderAction = new OrderActionInfo();
                                orderAction.OrderID          = order.ID;
                                orderAction.OrderOperate     = (int)OrderOperate.Pay;
                                orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                                orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                                orderAction.Note             = "客户支付宝在线支付";
                                orderAction.IP        = ClientHelper.IP;
                                orderAction.Date      = RequestHelper.DateNow;
                                orderAction.AdminID   = 0;
                                orderAction.AdminName = string.Empty;
                                OrderActionBLL.AddOrderAction(orderAction);
                            }
                        }
                        //else
                        //{
                        //    UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                        //    if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                        //    {
                        //        userRecharge.IsFinish = (int)BoolType.True;
                        //        UserRechargeBLL.UpdateUserRecharge(userRecharge);
                        //        //账户记录
                        //        string note = "支付宝在线冲值:" + userRecharge.Number;
                        //        UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);
                        //    }
                        //}
                    }

                    Response.Write("success");  //请不要修改或删除
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
Example #4
0
        public override void ProcessNotify()
        {
            WxPayData notifyData = GetNotifyData();

            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }

            string transaction_id = notifyData.GetValue("transaction_id").ToString();

            //查询订单,判断订单真实性
            if (!QueryOrder(transaction_id))
            {
                //若订单查询失败,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单查询失败");
                Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }
            //查询订单成功
            else
            {
                //更新数据库的订单语句
                string    orderNumber = notifyData.GetValue("out_trade_no").ToString();
                OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                if (order.ID > 0)
                {
                    if (order.OrderStatus == (int)OrderStatus.WaitPay)
                    {
                        order.OrderStatus = (int)OrderStatus.WaitCheck;
                        OrderBLL.UpdateOrder(order);
                        //增加操作记录
                        OrderActionInfo orderAction = new OrderActionInfo();
                        orderAction.OrderID          = order.ID;
                        orderAction.OrderOperate     = (int)OrderOperate.Pay;
                        orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                        orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                        orderAction.Note             = "微信支付";
                        orderAction.IP        = ClientHelper.IP;
                        orderAction.Date      = RequestHelper.DateNow;
                        orderAction.AdminID   = 0;
                        orderAction.AdminName = string.Empty;
                        OrderActionBLL.AddOrderAction(orderAction);
                    }
                }

                WxPayData res = new WxPayData();
                res.SetValue("return_code", "SUCCESS");
                res.SetValue("return_msg", "OK");
                Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }
        }
Example #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestGet();

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

                if (verifyResult)//验证成功
                {
                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        //更新数据库的订单语句
                        message = "成功付款";
                        string    orderNumber = RequestHelper.GetQueryString <string>("out_trade_no");
                        OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                        if (order.ID > 0)
                        {
                            if (order.OrderStatus == (int)OrderStatus.WaitPay)
                            {
                                order.OrderStatus = (int)OrderStatus.WaitCheck;
                                OrderBLL.UpdateOrder(order);
                                //增加操作记录
                                OrderActionInfo orderAction = new OrderActionInfo();
                                orderAction.OrderID          = order.ID;
                                orderAction.OrderOperate     = (int)OrderOperate.Pay;
                                orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                                orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                                orderAction.Note             = "客户支付宝在线支付";
                                orderAction.IP        = ClientHelper.IP;
                                orderAction.Date      = RequestHelper.DateNow;
                                orderAction.AdminID   = 0;
                                orderAction.AdminName = string.Empty;
                                OrderActionBLL.AddOrderAction(orderAction);

                                message = "您已经成功支付订单:" + orderNumber;
                            }
                        }
                        //else
                        //{
                        //    UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                        //    if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                        //    {
                        //        userRecharge.IsFinish = (int)BoolType.True;
                        //        UserRechargeBLL.UpdateUserRecharge(userRecharge);
                        //        //账户记录
                        //        string note = "支付宝在线冲值:" + userRecharge.Number;
                        //        UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);

                        //        message = "您的冲值已经成功完成";
                        //    }
                        //}
                        ResponseHelper.Redirect("PrePaidCourse.aspx");
                    }
                    else
                    {
                        Response.Write("trade_status=" + Request.QueryString["trade_status"]);
                    }
                }
                else//验证失败
                {
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
        }
Example #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PayConfig payConfig       = new PayConfig();
            string    alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?";
            string    key             = payConfig.SecurityKey; //partner 的对应交易安全校验码(必须填写)
            string    partner         = payConfig.Partner;     //partner合作伙伴id(必须填写)

            alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "&notify_id=" + Request.Form["notify_id"];
            //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
            string responseTxt = Get_Http(alipayNotifyURL, 120000000);
            int    i;
            NameValueCollection coll = Request.Form;

            String[] requestarr = coll.AllKeys;
            //进行排序;
            string[] Sortedstr = BubbleSort(requestarr);
            //构造待md5摘要字符串 ;
            string prestr = "";

            for (i = 0; i < Sortedstr.Length; i++)
            {
                if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")
                {
                    if (i == Sortedstr.Length - 1)
                    {
                        prestr = prestr + Sortedstr[i] + "=" + Request.Form[Sortedstr[i]];
                    }
                    else
                    {
                        prestr = prestr + Sortedstr[i] + "=" + Request.Form[Sortedstr[i]] + "&";
                    }
                }
            }
            prestr = prestr + key;
            //生成Md5摘要;
            string mysign = GetMD5(prestr);
            string sign   = Request.Form["sign"];

            //StreamWriter sw = File.AppendText(Server.MapPath("log.txt"));
            //sw.WriteLine(DateTime.Now.ToString() + "返回页面:" + RequestHelper.GetStringForm("out_trade_no") + ":" + Request.Form["trade_status"]);
            //sw.WriteLine("mysign:" + mysign + ";sign:" + sign + ";responseTxt:" + responseTxt);
            //sw.Flush();
            //sw.Close();

            if (mysign == sign && responseTxt == "true")   //验证支付发过来的消息,签名是否正确
            {
                //sw = File.AppendText(Server.MapPath("log.txt"));
                //sw.WriteLine(DateTime.Now.ToString() + "验证成功:" + RequestHelper.GetStringForm("out_trade_no") +":"+ Request.Form["trade_status"]);
                //sw.Flush();
                //sw.Close();

                if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS")//   判断支付状态TRADE_FINISHED(文档中有枚举表可以参考)
                {
                    //更新数据库的订单语句
                    string    orderNumber = RequestHelper.GetForm <string>("out_trade_no");
                    OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                    if (order.ID > 0)
                    {
                        if (order.OrderStatus == (int)OrderStatus.WaitPay)
                        {
                            order.OrderStatus = (int)OrderStatus.WaitCheck;
                            OrderBLL.UpdateOrder(order);
                            //增加操作记录
                            OrderActionInfo orderAction = new OrderActionInfo();
                            orderAction.OrderID          = order.ID;
                            orderAction.OrderOperate     = (int)OrderOperate.Pay;
                            orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                            orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                            orderAction.Note             = "客户支付宝在线支付";
                            orderAction.IP        = ClientHelper.IP;
                            orderAction.Date      = RequestHelper.DateNow;
                            orderAction.AdminID   = 0;
                            orderAction.AdminName = string.Empty;
                            OrderActionBLL.AddOrderAction(orderAction);
                        }
                    }
                    else
                    {
                        UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                        if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                        {
                            userRecharge.IsFinish = (int)BoolType.True;
                            UserRechargeBLL.UpdateUserRecharge(userRecharge);
                            //账户记录
                            string note = "支付宝在线冲值:" + userRecharge.Number;
                            UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);
                        }
                    }
                    Response.Write("success");
                }
                else
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("fail");
            }
        }
Example #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PayConfig payConfig      = new PayConfig();
            string    merchant_key   = payConfig.MerchantKey;                ///商户密钥
            string    merchant_id    = Request["merchant_id"].ToString();    ///获取商户编号
            string    orderid        = Request["orderid"].ToString();        ///获取订单编号
            string    amount         = Request["amount"].ToString();         ///获取订单金额
            string    dealdate       = Request["date"].ToString();           ///获取交易日期
            string    succeed        = Request["succeed"].ToString();        ///获取交易结果,Y成功,N失败
            string    mac            = Request["mac"].ToString();            ///获取安全加密串
            string    merchant_param = Request["merchant_param"].ToString(); ///获取商户私有参数

            string couponid    = Request["couponid"].ToString();             ///获取优惠券编码
            string couponvalue = Request["couponvalue"].ToString();          ///获取优惠券面额

            ///生成加密串,注意顺序
            string SrctStr = "merchant_id=" + merchant_id + "&orderid=" + orderid + "&amount=" + amount + "&date=" + dealdate + "&succeed=" + succeed + "&merchant_key=" + merchant_key;
            string mymac   = FormsAuthentication.HashPasswordForStoringInConfigFile(SrctStr, "MD5");


            if (mac == mymac)
            {
                if (succeed == "Y")
                {
                    //更新数据库的订单语句
                    message = "成功付款";
                    string    orderNumber = orderid;
                    OrderInfo order       = OrderBLL.ReadOrderByNumber(orderNumber, 0);
                    if (order.ID > 0)
                    {
                        if (order.OrderStatus == (int)OrderStatus.WaitPay)
                        {
                            order.OrderStatus = (int)OrderStatus.WaitCheck;
                            OrderBLL.UpdateOrder(order);
                            //增加操作记录
                            OrderActionInfo orderAction = new OrderActionInfo();
                            orderAction.OrderID          = order.ID;
                            orderAction.OrderOperate     = (int)OrderOperate.Pay;
                            orderAction.StartOrderStatus = (int)OrderStatus.WaitPay;
                            orderAction.EndOrderStatus   = (int)OrderStatus.WaitCheck;
                            orderAction.Note             = "客户快钱在线支付";
                            orderAction.IP        = ClientHelper.IP;
                            orderAction.Date      = RequestHelper.DateNow;
                            orderAction.AdminID   = 0;
                            orderAction.AdminName = string.Empty;
                            OrderActionBLL.AddOrderAction(orderAction);

                            message = "您已经成功支付订单:" + orderNumber;
                        }
                    }
                    else
                    {
                        UserRechargeInfo userRecharge = UserRechargeBLL.ReadUserRechargeByNumber(orderNumber, 0);
                        if (userRecharge.ID > 0 && userRecharge.IsFinish == (int)BoolType.False)
                        {
                            userRecharge.IsFinish = (int)BoolType.True;
                            UserRechargeBLL.UpdateUserRecharge(userRecharge);
                            //账户记录
                            string note = "快钱在线冲值:" + userRecharge.Number;
                            UserAccountRecordBLL.AddUserAccountRecord(userRecharge.Money, 0, note, userRecharge.UserID, userRecharge.UserName);

                            message = "您的冲值已经成功完成";
                        }
                    }
                }
                else
                {
                    message = "支付订单失败";
                }
            }
            else
            {
                message = "签名错误";
            }
        }