Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        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));
        }