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()); }
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,); }
protected void Page_Load(object sender, EventArgs e) { Wx Wx = new Wx(); ResMes("获取全局AccessToken"); ResMes(Wx.AccessToken.Get); }
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); } }
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); }
/// <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(); }
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; } }
//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); } } }
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); }
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); }
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); }
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(" ", "").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; } }
protected override XResp Execute() { Wx.GetToken(cfg.wx_appid, cfg.wx_scr, true); return(new XResp()); }