public int GetTotalFee(string trade_nos, string city) { var mchid = WxPayConfig.getMCHID(city); var sql = string.Format("SELECT sum(FLD_TOTAL_FEE) from tb_wx_pappay_201708 where FLD_OUT_TRADE_NO in({0}) and FLD_MACH_ID='{1}' and FLD_STATE='0' and fld_cleardebted=0", trade_nos, city); return(this.DataSource.GetInt(sql)); }
public ContentResult getDecode(string openid, string city) { var pay = new JsApiPay(this.Request); var bus = new Bus(this.DataSource); string mch_id = WxPayConfig.getMCHID(city); var card = bus.GetCard(openid, WxPayConfig.APPID(city), mch_id); //乐清的订阅号appid pay.GetAccessToken("wx8a8f4c94ea99c3c6", "d08019f391fc2a7113e5efea6fc4c9dc", this.DataSource); return(Content(bus.DeCardCode(pay.access_token, card.CardId, card.CardCode))); }
public WxPayData getToken(string contract_id, string city, string qrcode_hashs, int token_count = 1) { string url = "https://api.mch.weixin.qq.com/transit/gettoken"; WxPayData data = new WxPayData(); data.SetValue("appid", WxPayConfig.APPID(city)); data.SetValue("mch_id", WxPayConfig.getMCHID(city)); data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); data.SetValue("contract_id", contract_id); data.SetValue("sign_type", "HMAC-SHA256"); data.SetValue("sign", data.MakeSign_SHA256()); data.SetValue("token_count", token_count); data.SetValue("qrcode_hashs", qrcode_hashs); string xml = HttpService.Post(data.ToXml(), url, false, 10); WxPayData res = new WxPayData(); res.FromXml(xml); return(res); }
public bool isSign(string openid, string appid, string city) { bool _isSign = false; var edc = new Tb_Wx_Entrustinfo(this.DataSource); var Entrustinfo = GetEntrustinfo(openid, appid, WxPayConfig.getMCHID(city)); if (Entrustinfo != null) { if (Entrustinfo.FldQuerydate.ToString("yyyy-MM-dd") == ("1753-01-01")) { //一天调一次 string outxml = string.Empty; _isSign = this.QueryContract(city, Entrustinfo.FldContractId, out outxml); if (_isSign) { Entrustinfo.DataDriver = this.DataSource; Entrustinfo.FldQuerydate = DateTime.Now; Entrustinfo.FldChangeType = 1; Entrustinfo.Store(); } else { if (Entrustinfo.FldChangeType == 1) { Entrustinfo.DataDriver = this.DataSource; Entrustinfo.FldChangeType = 0; Entrustinfo.Store(); } } } else { if (Entrustinfo.FldChangeType == 1 && DateTime.Compare(Entrustinfo.FldContractExpiredTime, DateTime.Now) > 0) { _isSign = true; } } } return(_isSign); }
/// <summary> /// 查询签约关系 /// </summary> /// <param name="contract_id"></param> /// <returns></returns> public bool QueryContract(string city, string contract_id, out string outxml) { WxPayData inputObj = new WxPayData(city); inputObj.SetValue("appid", WxPayConfig.APPID(city)); inputObj.SetValue("mch_id", WxPayConfig.getMCHID(city)); inputObj.SetValue("contract_id", contract_id); inputObj.SetValue("version", "1.0"); inputObj.SetValue("sign", inputObj.MakeSign()); string url = "https://api.mch.weixin.qq.com/papay/querycontract"; string xml = inputObj.ToXml(); string result = HttpService.Post(xml, url, false, 10); WxPayData data = new WxPayData(); data.FromXml(result); outxml = result; bool isSign = false; if (data.IsSet("contract_state") && data.GetValue("contract_state").ToString() == "0") { isSign = true; } return(isSign); }
public exterData Sign(string openid, string nickname, string UserHostAddress, string city) { city = (city == null) ? "" : city; var Entrustinfo = this.GetEntrustinfo(openid, WxPayConfig.APPID(city), WxPayConfig.getMCHID(city)); var wxuser = this.GetUserInfo(openid, WxPayConfig.APPID(city)); var wxpay = new WxPayApi(); var exdata = new exterData(); exdata.appid = WxPayConfig.APPID(city); exdata.mch_id = WxPayConfig.getMCHID(city); exdata.contract_code = WxPayConfig.getCityCode(city) + Convert.ToString(long.Parse("10000") + Entrustinfo.Id) + DateTime.Now.ToString("ssfff"); exdata.request_serial = Entrustinfo.Id.ToString(); string display_account = string.Empty; if (!string.IsNullOrEmpty(wxuser.Mobile) && wxuser.Mobile.Length == 11) { display_account = wxuser.Mobile.Substring(0, 3) + "****" + wxuser.Mobile.Substring(7, 4); } else { display_account = nickname; } exdata.contract_display_account = display_account; switch (city) { case "福州市": exdata.notify_url = "https://www.cmeeol.com/wechat/FZReceiveSign"; break; case "杭州市": exdata.notify_url = "https://wx.hzgolong.com/wechat/HZReceiveSign"; break; case "杭州市2": exdata.notify_url = "https://wx.hzgolong.com/wechat/wccReceiveSign"; break; default: exdata.notify_url = "https://wx.hzgolong.com/wechat/ReceiveSign"; break; } //exdata.notify_url = HttpUtility.UrlEncode(exdata.notify_url); exdata.plan_id = WxPayConfig.getPlanID(city); exdata.openid = openid; exdata.timestamp = WxPayApi.GenerateTimeStamp(); exdata.clientip = UserHostAddress; exdata.deviceid = ""; exdata.mobile = ""; exdata.email = ""; exdata.qq = ""; exdata.creid = ""; exdata.outerid = ""; WxPayData inputObj = new WxPayData(city); inputObj.SetValue("appid", WxPayConfig.APPID(city)); inputObj.SetValue("contract_code", exdata.contract_code); inputObj.SetValue("contract_display_account", exdata.contract_display_account); inputObj.SetValue("mch_id", exdata.mch_id); inputObj.SetValue("notify_url", exdata.notify_url); inputObj.SetValue("plan_id", exdata.plan_id); inputObj.SetValue("request_serial", exdata.request_serial); inputObj.SetValue("timestamp", exdata.timestamp); inputObj.SetValue("clientip", exdata.clientip); inputObj.SetValue("deviceid", ""); inputObj.SetValue("mobile", ""); inputObj.SetValue("email", ""); inputObj.SetValue("qq", ""); inputObj.SetValue("openid", openid); inputObj.SetValue("creid", ""); inputObj.SetValue("outerid", ""); if (wxuser.Mobile == "13588861726") { Log.Write("luo sign inputObj json:", inputObj.ToJson()); } exdata.sign = inputObj.MakeSign(); return(exdata); }
/// <summary> /// 绑定手机号 /// </summary> /// <param name="openid"></param> /// <param name="mobile"></param> /// <param name="code"></param> /// <returns></returns> public JsonResult BindMobile(string openid, string mobile, string code, string nickname, string city) { bool result = false, needCheck = (ConfigurationManager.AppSettings["RNameNeedCheck"] == "1")?true:false; string msg = string.Empty; var bus = new Bus(this.DataSource); var user = bus.GetEntrustinfo(openid, WxPayConfig.APPID(city), WxPayConfig.getMCHID(city)); var wxuser = bus.GetUserInfo(openid, WxPayConfig.APPID(city)); var isSign = bus.isSign(openid, WxPayConfig.APPID(city), city); exterData exdata = null; var dc = new Tb_Wx_Mobilecode(this.DataSource); var obilecode = dc.FindFirst <Tb_Wx_Mobilecode>(string.Format("lower(FLD_Code)='{0}' and fld_mobile='{1}' and USED=0 order by id desc", code.ToLower(), mobile)); if (obilecode != null) { obilecode.Used = 1; obilecode.DataDriver = this.DataSource; obilecode.Store(); if (obilecode.FldExpiredTime.CompareTo(DateTime.Now) < 0) { result = false; msg = "验证码过期!"; } else { exdata = bus.Sign(openid, nickname, Request.UserHostAddress, city); user.DataDriver = this.DataSource; user.FldMobile = mobile; user.Store(); wxuser.DataDriver = this.DataSource; wxuser.Mobile = mobile; wxuser.Store(); result = true; } } else { msg = "无效验证码!"; } if (!string.IsNullOrEmpty(wxuser.Mobile) && needCheck == false) { needCheck = (wxuser.Mobile.iEqualsArr(ConfigurationManager.AppSettings["RNameCheckPhones"])) ? true : false; } return(Json(new { result = result, msg = msg, exdata = exdata, isSign = isSign, needCheck = needCheck, RNameChecked = wxuser.RNameChecked }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 添加卡 /// </summary> /// <param name="openid"></param> /// <param name="city"></param> /// <returns></returns> public JsonResult addUserCard(string openid, string city) { var pay = new JsApiPay(this.Request); string appid = string.Empty, appSecret = string.Empty, card_id = string.Empty; switch (city) { case "乐清市": appid = "wx8a8f4c94ea99c3c6"; appSecret = "d08019f391fc2a7113e5efea6fc4c9dc"; card_id = "pszDVt2lJKXxOYA3alLVdbezrLTY"; break; case "常熟市": appid = "wx48a67a2aaf02f77a"; appSecret = "d788725d971438371f8a0b8c39221b2a"; card_id = "p__l8t2MvHkqBTDdGtiazSI_hSR0"; break; case "福州市": appid = "wxc20b289e21d1b606"; appSecret = "10711737c1c6b58b029f70c624bbb7e2"; card_id = "p4erJ0oPLrLMDhWcKZPLwF2Psdr8"; break; } //乐清的订阅号appid pay.GetAccessToken(appid, appSecret, this.DataSource); var bus = new Bus(this.DataSource); string mch_id = WxPayConfig.getMCHID(city); var Entrustinfo = bus.GetEntrustinfo(openid, WxPayConfig.APPID(city), mch_id); var card = bus.GetCard(openid, WxPayConfig.APPID(city), mch_id); string result = string.Empty; bool hasCard = !string.IsNullOrEmpty(card.CardCode) && card.IsRemove == 0; /* * if (!string.IsNullOrEmpty(card.CardCode)&&card.OperateTime.AddMinutes(10).CompareTo(DateTime.Now)<0) * { * string cardstate= bus.DeCardCode(pay.access_token, card.CardId, card.CardCode); * if (cardstate.ToLower().IndexOf("\"user_card_status\": \"NORMAL\"") == -1) * { * card.DataDriver = this.DataSource; * card.IsRemove = 1; * card.Store(); * hasCard = false; * } * } */ if (!hasCard) { if (Entrustinfo != null) { WxPayData inputObj = new WxPayData(city); inputObj.SetValue("appid", WxPayConfig.APPID(city)); inputObj.SetValue("mch_id", mch_id); inputObj.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); inputObj.SetValue("contract_id", Entrustinfo.FldContractId); inputObj.SetValue("sign_type", "MD5"); inputObj.SetValue("card_id", card_id); inputObj.SetValue("openid", openid); inputObj.SetValue("sign", inputObj.MakeSign()); string url = "https://api.mch.weixin.qq.com/transit/card/addcard"; string xml = inputObj.ToXml(); result = HttpService.Post(xml, url, false, 10); WxPayData data = new WxPayData(); data.FromXml(result); card.Remark = result; card.DataDriver = this.DataSource; if (data.GetValue("return_code").ToString().iEquals("success") && data.GetValue("result_code").ToString().iEquals("success")) { card.CardId = data.GetValue("card_id").ToString(); card.CardCode = data.GetValue("card_code").ToString(); card.OperateTime = DateTime.Now; card.IsRemove = 0; } card.Store(); } string signature = "", timestamp = WxPayApi.GenerateTimeStamp(); WxPayData exdata = new WxPayData(city); exdata.SetValue("code", card.CardCode); exdata.SetValue("openid", openid); exdata.SetValue("timestamp", timestamp); //exdata.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); string ticket = bus.getTicket(appid, pay.access_token); string sign = string.Empty; string[] ArrTmp = { card.CardCode, openid, timestamp, appSecret }; //ticket Array.Sort(ArrTmp); //字典排序 string tmpStr = string.Join("", ArrTmp); sign = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); exdata.SetValue("signature", sign);//exdata.sha1() var cardList = new List <Card>(); var card1 = new Card(); card1.cardId = card.CardId; card1.cardExt = exdata.ToJson(); cardList.Add(card1); return(Json(new { hasCard = false, ticket = ticket, cardList = cardList, addcardCallback = result }, JsonRequestBehavior.AllowGet)); } else { //var pay = new JsApiPay(this.Request); ////乐清的订阅号appid //pay.GetAccessToken("wx8a8f4c94ea99c3c6", "d08019f391fc2a7113e5efea6fc4c9dc"); //bus.DeCardCode(pay.access_token, card.CardId, card.CardCode); } var cardList2 = new List <Cardv>(); var card2 = new Cardv(); card2.cardId = card.CardId; card2.code = card.CardCode; cardList2.Add(card2); return(Json(new { hasCard = true, cardList = cardList2 }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 是否已经认签委托扣款 /// </summary> /// <param name="code"></param> /// <returns></returns> public JsonResult IsSign(string code, string openid, string nickname, string latitude, string longitude, string city, string mode = "0") { city = (city == null) ? "" :(city == "切换城市")?"": city; bool RNameChecked = false, needCheck = (ConfigurationManager.AppSettings["RNameNeedCheck"] == "1") ? true : false; if (string.IsNullOrEmpty(openid)) { var pay = new JsApiPay(this.Request); pay.GetOpenidAndAccessToken(city); openid = pay.openid; } var bus = new Bus(this.DataSource); var isDebt = bus.isDebt(openid, city); var isSign = (!string.IsNullOrEmpty(city)) ? bus.isSign(openid, WxPayConfig.APPID(city), city) : false; var user = bus.GetEntrustinfo(openid, WxPayConfig.APPID(city), WxPayConfig.getMCHID(city)); var hzuser = bus.GetEntrustinfo(openid, WxPayConfig.APPID(city), WxPayConfig.getMCHID("杭州市")); var wxuser = bus.GetUserInfo(openid, WxPayConfig.APPID(city)); nickname = (string.IsNullOrEmpty(nickname)) ? "" : nickname; var exdata = bus.Sign(openid, nickname, Request.UserHostAddress, city); if (user != null) { user.DataDriver = this.DataSource; if (!string.IsNullOrEmpty(nickname)) { user.FldNickname = nickname; } user.FldLatitude = latitude; if (!string.IsNullOrEmpty(city)) { user.FldCity = city.Replace("undefined", ""); } user.FldLongitude = longitude; user.Store(); } if (wxuser != null) { wxuser.DataDriver = this.DataSource; if (!string.IsNullOrEmpty(nickname)) { wxuser.Nickname = nickname; } wxuser.City = city; wxuser.Latitude = latitude; wxuser.Longitude = longitude; if (string.IsNullOrEmpty(wxuser.Mobile) && hzuser != null && !string.IsNullOrEmpty(hzuser.FldMobile)) { wxuser.Mobile = hzuser.FldMobile; } wxuser.Store(); RNameChecked = wxuser.RNameChecked == 1 ? true : false; } var wxpay = new WxPayApi(); bool bindMobile = !string.IsNullOrEmpty(wxuser.Mobile); if (!string.IsNullOrEmpty(wxuser.Mobile) && needCheck == false) { needCheck = (wxuser.Mobile.iEqualsArr(ConfigurationManager.AppSettings["RNameCheckPhones"])) ? true : false; } string[] valarray = new string[] { "乐清市" }; // new string[] { "乐清市", "杭州市" }; string[] keyarray = new string[] { "乐清城市公交乘车码" }; //new string[] { "乐清城市公交乘车码", "杭州城市公交乘车码" }; bool showcard = nickname.iEqualsArr("司令大人,XLsn0w,xiangling别") ? true : false; switch (mode) { case "1": valarray = new string[] { "乐清市", "常熟市" }; keyarray = new string[] { "乐清城市公交乘车码", "常熟城市公交乘车码" }; break; case "2": valarray = new string[] { "杭州市" }; keyarray = new string[] { "演示" }; break; case "3": valarray = new string[] { "福州市" }; keyarray = new string[] { "福州市" }; break; } return(Json(new { exdata = exdata, isSign = isSign, openid = openid, TimeStamp = WxPayApi.GenerateTimeStamp(), bindMobile = bindMobile, RNameChecked = RNameChecked, needCheck = needCheck, isDebt = isDebt, valarray = valarray, keyarray = keyarray, showcard = showcard }, JsonRequestBehavior.AllowGet)); }