Example #1
0
        private string SendHB(HttpContext context, string opid, string name, string phone, string hb)
        {
            #region 设置参数信息

            string mchbillno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);

            string         nonceStr          = TenPayV3Util.GetNoncestr();
            RequestHandler packageReqHandler = new RequestHandler(null);

            //设置package订单参数
            packageReqHandler.SetParameter("nonce_str", nonceStr);                                                //随机字符串
            packageReqHandler.SetParameter("wxappid", WebConfigurationManager.AppSettings["wxappid"]);            //公众账号ID
            packageReqHandler.SetParameter("mch_id", WebConfigurationManager.AppSettings["WeixinPay_PartnerId"]); //商户号
            packageReqHandler.SetParameter("mch_billno", mchbillno);                                              //填入商家订单号
            packageReqHandler.SetParameter("send_name", "D3舍首饰设计创意生活");                                           //红包发送者名称
            packageReqHandler.SetParameter("re_openid", opid);                                                    //接受收红包的用户的openId
            packageReqHandler.SetParameter("total_amount", hb);                                                   //付款金额,单位分
            packageReqHandler.SetParameter("total_num", "1");                                                     //红包发放总人数
            packageReqHandler.SetParameter("wishing", WebConfigurationManager.AppSettings["hbzf"]);               //红包祝福语
            packageReqHandler.SetParameter("client_ip", context.Request.UserHostAddress);                         //调用接口的机器Ip地址
            packageReqHandler.SetParameter("act_name", WebConfigurationManager.AppSettings["hbname"]);            //活动名称
            packageReqHandler.SetParameter("remark", WebConfigurationManager.AppSettings["hbDesc"]);              //备注信息
            string sign = packageReqHandler.CreateMd5Sign("key", WebConfigurationManager.AppSettings["WeixinPay_Key"]);
            packageReqHandler.SetParameter("sign", sign);                                                         //签名

            //最新的官方文档中将以下三个字段去除了
            //packageReqHandler.SetParameter("nick_name", "提供方名称");                 //提供方名称
            //packageReqHandler.SetParameter("max_value", "100");                //最大红包金额,单位分
            //packageReqHandler.SetParameter("min_value", "100");                //最小红包金额,单位分


            //发红包需要post的数据
            string data = packageReqHandler.ParseXML();

            //发红包接口地址
            string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
            //本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)
            string cert = WebConfigurationManager.AppSettings["zswz"];
            //私钥(在安装证书时设置)
            string password = WebConfigurationManager.AppSettings["WeixinPay_PartnerId"];
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            //调用证书
            X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
            #endregion
            #region 发起post请求
            try
            {
                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
                webrequest.ClientCertificates.Add(cer);
                webrequest.Method = "post";

                byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
                webrequest.ContentLength = postdatabyte.Length;
                Stream stream;
                stream = webrequest.GetRequestStream();
                stream.Write(postdatabyte, 0, postdatabyte.Length);
                stream.Close();

                HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
                StreamReader    streamReader    = new StreamReader(httpWebResponse.GetResponseStream());
                string          responseContent = streamReader.ReadToEnd();
                //using (WXDBEntities db = new WXDBEntities())
                //{
                //    OperateLoginfo mt = new OperateLoginfo()
                //    {
                //        Title = name,
                //        Descs = "返回成功",
                //        AddTime = DateTime.Now,
                //        UpdateTime = DateTime.Now,
                //        Status = 0,
                //        Orders = 0,
                //        Extent1 = "",
                //        Extent2 = "",
                //        LogType = 1
                //    };
                //    db.OperateLoginfo.AddObject(mt);
                //    db.SaveChanges();
                //}
                WxZFData tdata = new WxZFData();
                tdata.FromXml(responseContent);
                string return_code = tdata.GetValue("return_code").ToString(); //状态码
                string return_msg  = tdata.GetValue("return_msg").ToString();  //状态码
                //using (WXDBEntities db = new WXDBEntities())
                //{
                //    OperateLoginfo mt = new OperateLoginfo()
                //    {
                //        Title = name,
                //        Descs = "返回值:" + return_code,
                //        AddTime = DateTime.Now,
                //        UpdateTime = DateTime.Now,
                //        Status = 0,
                //        Orders = 0,
                //        Extent1 = "",
                //        Extent2 = "",
                //        LogType = 1
                //    };
                //    db.OperateLoginfo.AddObject(mt);
                //    db.SaveChanges();
                //}
                var str = string.Empty;
                if ("SUCCESS".Equals(return_code))
                {
                    //string zfsign = tdata.GetValue("sign").ToString();
                    string result_code = tdata.GetValue("result_code").ToString();

                    //using (WXDBEntities db = new WXDBEntities())
                    //{
                    //    //+ "|" + err_code + "|" + err_code_des
                    //    OperateLoginfo mt = new OperateLoginfo()
                    //    {
                    //        Title = name,
                    //        Descs = "返回值:" + result_code,
                    //        AddTime = DateTime.Now,
                    //        UpdateTime = DateTime.Now,
                    //        Status = 0,
                    //        Orders = 0,
                    //        Extent1 = "",
                    //        Extent2 = "",
                    //        LogType = 1
                    //    };
                    //    db.OperateLoginfo.AddObject(mt);
                    //    db.SaveChanges();
                    //}
                    if ("SUCCESS".Equals(result_code))
                    {
                        //红包发送成功!
                        using (WXDBEntities db = new WXDBEntities())
                        {
                            var model = new Forms()
                            {
                                Title      = "万圣节红包",
                                FormType   = 0,
                                Name       = name,
                                Number     = 1,
                                Mobile     = phone,
                                Age        = 0,
                                Source     = opid,
                                Income     = "",
                                Remark     = "",
                                AddTime    = DateTime.Now,
                                Status     = 0,
                                Orders     = 0,
                                UpdateTime = DateTime.Now,
                                Extend     = context.Request.UserHostAddress,
                                Extend2    = "",
                                Type       = 8,
                                JFCount    = Convert.ToDouble(hb)
                            };
                            db.Forms.AddObject(model);
                            db.SaveChanges();
                        }
                        //加入数据库操作
                        str = "1|发送红包成功";
                    }
                    else
                    {
                        string err_code     = tdata.GetValue("err_code").ToString();
                        string err_code_des = tdata.GetValue("err_code_des").ToString();
                        using (WXDBEntities db = new WXDBEntities())
                        {
                            OperateLoginfo mt = new OperateLoginfo()
                            {
                                Title      = name,
                                Descs      = err_code,
                                AddTime    = DateTime.Now,
                                UpdateTime = DateTime.Now,
                                Status     = 0,
                                Orders     = 0,
                                Extent1    = "",
                                Extent2    = err_code_des,
                                LogType    = 1
                            };
                            db.OperateLoginfo.AddObject(mt);
                            db.SaveChanges();
                        }
                        //红包发送失败
                        str = "2|发送红包失败!";
                    }
                }
                else
                {
                    using (WXDBEntities db = new WXDBEntities())
                    {
                        OperateLoginfo mt = new OperateLoginfo()
                        {
                            Title      = name,
                            Descs      = return_msg,
                            AddTime    = DateTime.Now,
                            UpdateTime = DateTime.Now,
                            Status     = 0,
                            Orders     = 0,
                            Extent1    = "",
                            Extent2    = "",
                            LogType    = 1
                        };
                        db.OperateLoginfo.AddObject(mt);
                        db.SaveChanges();
                    }
                    str = "3|发送红包失败";
                }
                return(str);
            }
            catch (Exception ex)
            {
                using (WXDBEntities db = new WXDBEntities())
                {
                    OperateLoginfo mt = new OperateLoginfo()
                    {
                        Title      = name,
                        Descs      = ex.Message,
                        AddTime    = DateTime.Now,
                        UpdateTime = DateTime.Now,
                        Status     = 0,
                        Orders     = 0,
                        Extent1    = "",
                        Extent2    = "",
                        LogType    = 5
                    };
                    db.OperateLoginfo.AddObject(mt);
                    db.SaveChanges();
                }
                return("4|获取失败!");
            }
            #endregion
        }
Example #2
0
        private string SendHB(string opid, string stid, string hb, string cursjd)
        {
            var      str  = string.Empty;
            DateTime now  = DateTime.Now;
            TimeSpan span = now.TimeOfDay;
            TimeSpan end  = new TimeSpan(15, 0, 0);
            TimeSpan end1 = new TimeSpan(12, 0, 0);

            //cursjd.Equals("1") ||
            //cursjd.Equals("1") && DateTime.Now.Hour >= 11 && span < end1
            //cursjd.Equals("2") && DateTime.Now.Hour >= 14 && span < end
            if (cursjd.Equals("1") && DateTime.Now.Hour >= 11 && span < end1)
            {
                #region 设置参数信息
                try
                {
                    string         mchbillno         = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);
                    string         nonceStr          = TenPayV3Util.GetNoncestr();
                    RequestHandler packageReqHandler = new RequestHandler(null);

                    //设置package订单参数
                    packageReqHandler.SetParameter("nonce_str", nonceStr);                                                 //随机字符串
                    packageReqHandler.SetParameter("wxappid", WebConfigurationManager.AppSettings["wxappid8"]);            //公众账号ID
                    packageReqHandler.SetParameter("mch_id", WebConfigurationManager.AppSettings["WeixinPay_PartnerId8"]); //商户号
                    packageReqHandler.SetParameter("mch_billno", mchbillno);                                               //填入商家订单号
                    packageReqHandler.SetParameter("send_name", WebConfigurationManager.AppSettings["sendname8"]);         //红包发送者名称
                    packageReqHandler.SetParameter("re_openid", opid);                                                     //接受收红包的用户的openId
                    packageReqHandler.SetParameter("total_amount", hb);                                                    //付款金额,单位分
                    packageReqHandler.SetParameter("total_num", "1");                                                      //红包发放总人数
                    packageReqHandler.SetParameter("wishing", WebConfigurationManager.AppSettings["hbzf8"]);               //红包祝福语
                    packageReqHandler.SetParameter("client_ip", _context.Request.UserHostAddress);                         //调用接口的机器Ip地址
                    packageReqHandler.SetParameter("act_name", WebConfigurationManager.AppSettings["hbname8"]);            //活动名称
                    packageReqHandler.SetParameter("remark", WebConfigurationManager.AppSettings["hbDesc8"]);              //备注信息
                    string sign = packageReqHandler.CreateMd5Sign("key", WebConfigurationManager.AppSettings["WeixinPay_Key8"]);
                    packageReqHandler.SetParameter("sign", sign);                                                          //签名
                    //发红包需要post的数据
                    string data = packageReqHandler.ParseXML();
                    //发红包接口地址
                    string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
                    //本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)
                    string cert = WebConfigurationManager.AppSettings["zswz8"];
                    //私钥(在安装证书时设置)
                    string password = WebConfigurationManager.AppSettings["WeixinPay_PartnerId8"];
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    //调用证书
                    X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
                    #endregion
                    #region 发起post请求

                    HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
                    webrequest.ClientCertificates.Add(cer);
                    webrequest.Method = "post";
                    byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
                    webrequest.ContentLength = postdatabyte.Length;
                    Stream stream;
                    stream = webrequest.GetRequestStream();
                    stream.Write(postdatabyte, 0, postdatabyte.Length);
                    stream.Close();
                    HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
                    StreamReader    streamReader    = new StreamReader(httpWebResponse.GetResponseStream());
                    string          responseContent = streamReader.ReadToEnd();

                    WxZFData tdata = new WxZFData();
                    tdata.FromXml(responseContent);
                    string return_code = tdata.GetValue("return_code").ToString(); //状态码
                    string return_msg  = tdata.GetValue("return_msg").ToString();  //状态码


                    string result_code = tdata.GetValue("result_code").ToString().ToUpper();
                    if ("SUCCESS".Equals(return_code))
                    {
                        //using (WXDBEntities db = new WXDBEntities())
                        //{
                        //    OperateLoginfo mt = new OperateLoginfo()
                        //    {
                        //        Title = "五洲国际红包",
                        //        Descs = "进入",
                        //        AddTime = DateTime.Now,
                        //        UpdateTime = DateTime.Now,
                        //        Status = 0,
                        //        Orders = 0,
                        //        Extent1 = return_msg,
                        //        Extent2 = result_code,
                        //        LogType = 0
                        //    };
                        //    db.OperateLoginfo.AddObject(mt);
                        //    db.SaveChanges();
                        //}

                        if ("SUCCESS".Equals(result_code))
                        {
                            //红包发送成功!
                            using (WXDBEntities db = new WXDBEntities())
                            {
                                //OperateLoginfo mt = new OperateLoginfo()
                                //{
                                //    Title = "五洲国际红包",
                                //    Descs = stid,
                                //    AddTime = DateTime.Now,
                                //    UpdateTime = DateTime.Now,
                                //    Status = 0,
                                //    Orders = 0,
                                //    Extent1 = "",
                                //    Extent2 = cursjd,
                                //    LogType = 0
                                //};
                                //db.OperateLoginfo.AddObject(mt);
                                //db.SaveChanges();
                                var model = new Oders()
                                {
                                    OrderId      = mchbillno,
                                    Title        = "五洲红包",
                                    Number       = 1,
                                    Mobile       = "",
                                    Soucre       = opid,
                                    Remark       = "345",
                                    AddTime      = DateTime.Now,
                                    UpdateTime   = DateTime.Now,
                                    OrderStatus  = 0,
                                    Status       = 0,
                                    Orders       = 0,
                                    Extent1      = stid,
                                    Extent2      = "789",
                                    AddUser      = cursjd,
                                    UpdateUser   = "******",
                                    CheckTime    = DateTime.Now,
                                    CheckoutTime = DateTime.Now,
                                    Totals       = Convert.ToInt32(hb)
                                };
                                db.Oders.AddObject(model);
                                db.SaveChanges();
                            }
                            //加入数据库操作
                            str = "1|发送红包成功|" + hb;
                        }
                        else
                        {
                            string err_code     = tdata.GetValue("err_code").ToString();
                            string err_code_des = tdata.GetValue("err_code_des").ToString();
                            using (WXDBEntities db = new WXDBEntities())
                            {
                                OperateLoginfo mt = new OperateLoginfo()
                                {
                                    Title      = "五洲国际红包",
                                    Descs      = err_code,
                                    AddTime    = DateTime.Now,
                                    UpdateTime = DateTime.Now,
                                    Status     = 0,
                                    Orders     = 0,
                                    Extent1    = "",
                                    Extent2    = err_code_des,
                                    LogType    = 1
                                };
                                db.OperateLoginfo.AddObject(mt);
                                db.SaveChanges();
                            }
                            //红包发送失败
                            str = "2|发送红包失败!";
                        }
                    }
                    else
                    {
                        using (WXDBEntities db = new WXDBEntities())
                        {
                            OperateLoginfo mt = new OperateLoginfo()
                            {
                                Title      = "五洲国际红包",
                                Descs      = return_msg,
                                AddTime    = DateTime.Now,
                                UpdateTime = DateTime.Now,
                                Status     = 0,
                                Orders     = 0,
                                Extent1    = "",
                                Extent2    = "",
                                LogType    = 2
                            };
                            db.OperateLoginfo.AddObject(mt);
                            db.SaveChanges();
                        }
                        str = "3|发送红包失败";
                    }
                    return(str);
                }
                catch (Exception ex)
                {
                    using (WXDBEntities db = new WXDBEntities())
                    {
                        OperateLoginfo mt = new OperateLoginfo()
                        {
                            Title      = "五洲国际红包",
                            Descs      = ex.Message,
                            AddTime    = DateTime.Now,
                            UpdateTime = DateTime.Now,
                            Status     = 0,
                            Orders     = 0,
                            Extent1    = hb,
                            Extent2    = "",
                            LogType    = 6
                        };
                        db.OperateLoginfo.AddObject(mt);
                        db.SaveChanges();
                    }
                    return("4|获取失败!");
                }
            }
            else
            {
                str = "2|发送红包失败!";
                return(str);
            }
            #endregion
        }
Example #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Log.Info("回调函数", "进入");
            WxPayData infos        = GetNotifyData();
            string    out_trade_no = infos.GetValue("out_trade_no").ToString();
            //财付通订单号
            string transaction_id = infos.GetValue("transaction_id").ToString();
            //金额,以分为单位
            string total_fee = infos.GetValue("total_fee").ToString();
            ////如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
            //string discount = resHandler.GetParameter("discount");
            //支付结果
            string trade_state = infos.GetValue("result_code").ToString();
            string stropid     = infos.GetValue("openid").ToString();//openid

            //string total_fee = XmlMap["total_fee"].ToString();//总价格
            //即时到账
            Log.Info("回调函数", trade_state);
            if ("SUCCESS".Equals(trade_state))
            {
                Log.Info("回调函数", "成功");
                //------------------------------
                //处理业务开始
                //------------------------------
                using (WXDBEntities db = new WXDBEntities())
                {
                    string tmpordids = out_trade_no;
                    Oders  order     = db.Oders.Where(s => s.OrderId == tmpordids && s.OrderStatus != 1).FirstOrDefault();
                    if (order != null)
                    {
                        order.OrderStatus = 1;//支付成功
                        order.UpdateTime  = DateTime.Now;
                        OperateLoginfo model = new OperateLoginfo()
                        {
                            Title      = "支付成功",
                            Descs      = "",
                            AddTime    = DateTime.Now,
                            UpdateTime = DateTime.Now,
                            Status     = 0,
                            Orders     = 0,
                            Extent1    = "",
                            Extent2    = "",
                            LogType    = 1 //支付日志
                        };
                        db.OperateLoginfo.AddObject(model);
                        db.SaveChanges();
                    }
                    else
                    {
                        Log.Info("回调函数", "不存在数据");
                    }
                }
                //处理数据库逻辑
                //注意交易单不要重复处理
                //注意判断返回金额
                //------------------------------
                //处理业务完毕
                //------------------------------
                //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                Response.Write("success 后台通知成功");
            }
            else
            {
                Log.Info("回调函数", "失败");
                using (WXDBEntities db = new WXDBEntities())
                {
                    OperateLoginfo model = new OperateLoginfo()
                    {
                        Title      = "支付失败",
                        Descs      = out_trade_no,
                        AddTime    = DateTime.Now,
                        UpdateTime = DateTime.Now,
                        Status     = 0,
                        Orders     = 0,
                        Extent1    = "",
                        Extent2    = "",
                        LogType    = 2 //支付日志
                    };
                    db.OperateLoginfo.AddObject(model);
                    db.SaveChanges();
                }
                Response.Write("支付失败");
            }
            //回复服务器处理成功
            Response.Write("success");
        }