Beispiel #1
0
        private void initWx()
        {
            var ts = Tools.GetGreenTime("");
            var no = Tools.GetRandRom(6);

            dict.Add("wx_appid", cfg.wx_appid);
            dict.Add("wx_ts", ts);
            dict.Add("wx_no", no);

            var tk   = Wx.GetToken(cfg.wx_appid, cfg.wx_scr);
            var tick = Wx.GetJsTicket(tk);

            if (string.IsNullOrEmpty(tk))
            {
                tick = Wx.GetJsTicket(Wx.GetToken(cfg.wx_appid, cfg.wx_scr, true), true);
            }

            var dt = new List <string>();

            dt.Add("noncestr=" + no);
            dt.Add("jsapi_ticket=" + tick);
            dt.Add("timestamp=" + ts);
            dt.Add("url=http://" + cfg.domain + Context.Request.RawUrl);
            dt.Sort();

            var sign = Secret.SHA1(string.Join("&", dt));

            dict.Add("wx_sign", sign.ToLower());
        }
Beispiel #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Wx         Wx          = new Wx();
        string     AccessToken = Wx.AccessToken.Get;
        WxUserList WxUserList  = Wx.User.GetUserList(AccessToken);



        for (int i = 0; i < WxUserList.data.openid.Count; i++)
        {
            string kk = WxUserList.data.openid[i];
        }

        foreach (string kc in WxUserList.data.openid)
        {
            string k4c = kc;
        }



        //Wx.User.GetUserList(AccessToken, "oXQwCt60GWPKmymy6LufFhERyGsY");
        //dynamic Obj=Wx.Http.PostGetObj(UserList);

        //dynamic openids= Obj.data.openid;
        ////List<string> kc = (List<string>)openids;
        //string kc = openids[0].ToString();
        //foreach(string kc3 in openids){
        //    string k3 = kc3;

        //}
        //dynamic kk = new object();
        //kk.g = "123";
        // Wx.User.GetUserList(Config,);
    }
Beispiel #3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Wx Wx = new Wx();

        ResMes("获取全局AccessToken");
        ResMes(Wx.AccessToken.Get);
    }
Beispiel #4
0
        protected override void InitView()
        {
            base.InitView();

            if (needwx == 1)
            {
                var code   = GetReqParms("code");
                var cu_key = GetReqParms("cu_key");
                if (string.IsNullOrEmpty(cu_key))
                {
                    cu_key = Secret.MD5(Guid.NewGuid().ToString());
                }
                opid = CacheHelper.Get <string>(cu_key);
                if (!string.IsNullOrEmpty(code))
                {
                    tk = Wx.GetWebToken(cfg.wx_appid, cfg.wx_scr, code);
                    if (!string.IsNullOrEmpty(tk.errcode))
                    {
                        ToWxUrl("snsapi_base");
                    }
                    opid = tk.openid;
                    Context.Response.Cookies.Add(new HttpCookie("cu_key", cu_key));
                }
                else if (string.IsNullOrEmpty(opid))
                {
                    ToWxUrl("snsapi_base");
                }
                CacheHelper.Save(cu_key, opid, 60 * 20);
            }
        }
Beispiel #5
0
        protected override XResp Execute()
        {
            var od = new x_order()
            {
                ctime   = DateTime.Now,
                user_id = cu.user_id,
                no      = Secret.MD5(Guid.NewGuid().ToString(), 0),
                status  = 1
            };

            var et = cu.etime > DateTime.Now ? (DateTime)cu.etime : DateTime.Now;

            od.etime  = et.AddMonths(mo);
            od.amount = mo * 10;//(decimal)0.01;

            od.desc = "业主房源服务续费到" + od.etime.Value.ToString("yyyy-MM-dd HH:mm:ss");

            DB.x_order.InsertOnSubmit(od);
            SubmitDBChanges();

            var co = Wx.Pay.MdOrder(od.desc, od.no, ((int)(od.amount * 100)).ToString(), "http://" + cfg.domain + "/wx/bw/notify-" + od.no + ".html", opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey);

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T预付款号为空");
            }

            od.wx_no = co.prepay_id;
            SubmitDBChanges();

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                ns   = ps["nonceStr"],
                ts   = ps["timeStamp"],
                pkg  = ps["package"],
                sign = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }
Beispiel #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args">
        /// ip:port code
        /// </param>
        static void Main(string[] args)
        {
            var svr = ConfigurationManager.AppSettings["svr"] ?? "";

            if (svr == null && args.Length >= 1)
            {
                svr = args[0];
            }

            var ps = svr.Split(':');

            if (ps.Length != 2)
            {
                Console.WriteLine("服务器配置参数不正确"); Environment.Exit(0);
            }

            ip = ps[0];
            int.TryParse(ps[1], out port);
            nk = ConfigurationManager.AppSettings["net-key"];

            if (string.IsNullOrEmpty(ip) || port == 0 || string.IsNullOrEmpty(nk))
            {
                Console.WriteLine("缺少参数或参数不正确"); Environment.Exit(0);
            }

            RunTcp();

            new Thread(o =>
            {
                wx           = new Wx();
                wx.LoadQr   += Wx_LoadQr;;
                wx.Scaned   += Wx_Scaned;
                wx.Loged    += Wx_Loged;
                wx.LogonOut += Wx_LogonOut;
                wx.OutLog   += Wx_OutLog;;
                wx.NewMsg   += Wx_NewMsg;
                wx.Run();
            }).Start();
        }
Beispiel #7
0
        private void initUser()
        {
            if (sd != null)
            {
                return;
            }

            var code = GetReqParms("code");

            if (string.IsNullOrEmpty(code))
            {
                toWxUrl("snsapi_base");
            }

            if (!string.IsNullOrEmpty(code))
            {
                var tk = Wx.GetWebToken(cfg.wx_appid, cfg.wx_scr, code);
                if (!string.IsNullOrEmpty(tk.errcode))
                {
                    toWxUrl("snsapi_base");
                }
                opid = tk.openid;
            }
        }
Beispiel #8
0
        //private void initCity()
        //{
        //    var c = Tools.GetHttpData("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" + Tools.GetClientIP(), Encoding.GetEncoding("GB2312")); //1 - 1 - 1  中国 上海  上海
        //    x_dict city = null;
        //    if (!string.IsNullOrEmpty(c) && c[0] == '1' && c.Length >= 6)
        //    {
        //        var cn = c.TrimEnd('\t').Split('\t').LastOrDefault();
        //        city = DB.x_dict.FirstOrDefault(o => o.name == cn && o.code == "sys.city");
        //    }
        //    if (city == null) city = DB.x_dict.FirstOrDefault(o => o.name == "长沙" && o.code == "sys.city");
        //    city_id = long.Parse(city.value);
        //    city_name = city.name;
        //}

        private void initUser()
        {
            if (cu != null)
            {
                return;
            }

            if (!isWx && !nd_user)
            {
                return;
            }

            if (!isWx && nd_user)
            {
                if (Context.Request.RawUrl != "/wx/login.html")
                {
                    Context.Response.Redirect("/wx/login.html");
                }
                else
                {
                    return;
                }
            }
            if (!isWx)
            {
                return;
            }

            var code = GetReqParms("code");

            if (string.IsNullOrEmpty(code))
            {
                toWxUrl("snsapi_base");
            }

            if (!string.IsNullOrEmpty(code))
            {
                var tk = Wx.GetWebToken(cfg.wx_appid, cfg.wx_scr, code);
                if (!string.IsNullOrEmpty(tk.errcode))
                {
                    toWxUrl("snsapi_base");
                }
                opid = tk.openid;
            }

            if (nd_user)
            {
                cu = DB.x_user.FirstOrDefault(o => o.wx_opid == opid);

                if (cu == null)
                {
                    cu = new x_user()
                    {
                        ctime = DateTime.Now, etime = DateTime.Now, wx_opid = opid, exp = 0, type = 1, used_exp = 0, invter = 0
                    }
                }
                ;

                if (cu.id == 0 || cu.etime.Value.AddDays(7) < DateTime.Now)
                {
                    var uk = Wx.GetToken(cfg.wx_appid, cfg.wx_scr);
                    var us = Wx.User.GetUserInfo(cu.wx_opid, uk);
                    cu.nickname = us.nickname;
                    cu.headimg  = us.headimgurl;
                    cu.sex      = us.sex == 1 ? "男" : us.sex == 2 ? "女" : "未知";
                }

                cu.ukey = Secret.MD5(Guid.NewGuid().ToString());
                if (cu.id == 0)
                {
                    DB.x_user.InsertOnSubmit(cu);
                }
            }
        }
Beispiel #9
0
        protected override XResp Execute()
        {
            if (amount > cfg.max_deposit || amount < cfg.min_deposit)
            {
                throw new XExcep("0x0056");
            }

            var depositLog = new x_charge();

            depositLog.amount       = amount;
            depositLog.ctime        = DateTime.Now;
            depositLog.audit_status = 1;//1为待审核
            cu.x_charge.Add(depositLog);
            SubmitDBChanges();

            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("0x0048");
            }

            CacheHelper.Save("pay." + cu.id, "1");
            var co = Wx.Pay.MdOrder(cu.nickname + "_" + cu.id + "充值" + amount, "chg_" + depositLog.charge_id + "", (int)(amount * 100) + "", "http://" + cfg.domain + "/wx/notify-2-" + depositLog.charge_id + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);
            SubmitDBChanges();

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des + "," + depositLog.charge_id);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("0x0051");
            }

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + co.prepay_id);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id          = depositLog.charge_id,
                amount      = depositLog.amount.Value,
                ns          = ps["nonceStr"],
                ts          = ps["timeStamp"],
                pkg         = ps["package"],
                sign        = Wx.ToSign(ps, false, cfg.wx_paykey),
                fromDeposit = 2
            };

            return(r);
        }
Beispiel #10
0
        protected override XResp Execute()
        {
            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("T当前订单正在处理中,请稍后...");
            }

            CacheHelper.Save("pay." + cu.id, "1");
            var od = cu.x_order.FirstOrDefault(o => o.order_id == id);

            if (od.pay_amount > 0)
            {
                throw new XExcep("T当前订单已经支付,请不要重复支付");
            }
            if (od.status != 1)
            {
                throw new XExcep("T当前订单状态不正确");
            }

            if (od.pay_way == 2)
            {
                return new od()
                       {
                           amount = od.yf_amount.Value.ToString("F2"), id = od.order_id
                       }
            }
            ;

            var co = Wx.Pay.MdOrder(od.no, od.order_id + "", ((int)(od.yf_amount * 100)).ToString(), "http://" + cfg.domain + "/wx/notify-" + od.no + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T预付款号为空");
            }

            od.wx_no = co.prepay_id;

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id     = od.order_id,
                amount = od.yf_amount.Value.ToString("F2"),
                ns     = ps["nonceStr"],
                ts     = ps["timeStamp"],
                pkg    = ps["package"],
                sign   = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }
Beispiel #11
0
        private XResp wechatPay()
        {
            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("T当前已经有操作正在进行");
            }

            var od = cu.x_order.FirstOrDefault(o => o.order_id == id);

            if (od.iscancel == true)
            {
                throw new XExcep("T订单已经取消");
            }
            if (od.pay_amount > 0)
            {
                throw new XExcep("T当前订单已经支付");
            }
            if (od.status != 1)
            {
                throw new XExcep("T订单当前状态不能支付");
            }

            CacheHelper.Save("pay." + cu.id, "1");

            var co = Wx.Pay.MdOrder(od.no, od.no + "", "1" /*((int)(od.yf_amount * 100)).ToString()*/, "http://" + cfg.domain + "/wx/notify-1-" + od.order_id + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);

            if (co.return_code == "FAIL")
            {
                throw new XExcep("T微信支付失败", co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep("T微信支付失败", co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T微信支付预付ID为空");
            }

            od.wx_no = co.prepay_id;

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id     = od.order_id,
                amount = od.yf_amount.Value.ToString("F2"),
                ns     = ps["nonceStr"],
                ts     = ps["timeStamp"],
                pkg    = ps["package"],
                sign   = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }
Beispiel #12
0
        private void Tc_NewMsg(msg m, Tcp tc)
        {
            switch (m.act)
            {
            case "setcode":
                if (m.body.Length == 36)
                {
                    new Thread(o => { lg.ShowDialog(); }).Start();
                }
                tc.Send(new msg()
                {
                    act = "ok"
                });
                SetCode?.Invoke(m.body);
                break;

            case "setuser":
                cu = Serialize.FromJson <User>(m.body);
                if (lg.Visible)
                {
                    lg.SetSucc();
                }
                NewWx?.Invoke(this);
                wx     = new Wx(cu, tc);
                repies = Sdk.LoadReply(cu.uin).items;
                break;

            case "newmsg":
                var wm = Serialize.FromJson <Wxm>(m.body);
                if (wm == null)
                {
                    break;
                }
                if (string.IsNullOrEmpty(wm.text))
                {
                    break;
                }

                wx.OutLog("收到消息->" + wm.fr.text + (wm.rm.name[1] == '@' ? "@" + wm.rm.text : "") + ":\r\n\t" + wm.text.Replace("  ", "").Replace("&nbsp;", "").Replace("<br>", "\r\n\t").Trim());

                if (repies == null)
                {
                    break;
                }

                ReplyResp.Reply rep = null;
                foreach (var r in repies)
                {
                    switch (r.tp)
                    {
                    case 1:
                        if (wm.text.Contains("我通过了你的朋友验证请求,现在我们可以开始聊天了"))
                        {
                            rep = r;
                        }
                        wx.OutLog("匹配到 被添加 自动回复,发送了" + (rep.type == 1 ? "文本" : "图片") + "内容:" + rep.content);
                        //被添加
                        break;

                    case 2:        //群内新成员
                        wx.OutLog("匹配到 群内新成员 自动回复,发送了" + (rep.type == 1 ? "文本" : "图片") + "内容:" + rep.content);
                        break;

                    case 3:        //默认回复
                        break;

                    case 4:        //关键字回复
                        if (r.match == 1 && r.keys.Contains(wm.text))
                        {
                            rep = r;
                        }
                        else if (r.match == 2 && r.keys.Count(o => wm.text.StartsWith(o)) > 0)
                        {
                            rep = r;
                        }
                        else if (r.match == 3 && r.keys.Count(o => wm.text.EndsWith(o)) > 0)
                        {
                            rep = r;
                        }
                        else if (r.match == 4 && r.keys.Count(o => wm.text.Contains(o)) > 0)
                        {
                            rep = r;
                        }
                        if (rep != null)
                        {
                            wx.OutLog("匹配到 关键字(" + string.Join(" ", r.keys) + ") 自动回复,发送了" + (rep.type == 1 ? "文本" : "图片") + "内容:" + rep.content);
                        }
                        break;
                    }
                    if (rep != null)
                    {
                        break;
                    }
                }

                if (rep != null)
                {
                    tc.Send(new msg()
                    {
                        act = "send", body = Serialize.ToJson(new { to = wm.fr.name, rep.type, rep.content })
                    });
                }

                break;

            case "qrcode":
                lg.SetQrcode(m.body);
                break;

            case "headimg":
                lg.SetHeadimg(m.body);
                cu.headimg = m.body;
                break;

            case "log":
                Debug.WriteLine("log->" + m.body);
                break;

            case "quit":
                Quit(1);
                break;

            case "contact":
                wx.SetContact(Serialize.FromJson <List <Contact> >(m.body));
                break;
            }
        }
Beispiel #13
0
 protected override XResp Execute()
 {
     Wx.GetToken(cfg.wx_appid, cfg.wx_scr, true);
     return(new XResp());
 }