盛派网络:微信支付微信授权类库下载

微信小程序支付后台代码

配置:<!--身份证验证APPKEY--><add key="ServiceAppID" value="wxbcfbc3412920225" /><add key="ServiceMechID" value="150351221" /><add key="SubAppID" value="wxb25cd5d2014cbfc" /><add key="SubMechID" value="160003570" /><add key="AppKey" value="qiiwangluo18qingweiwangluo" /><add key="SubAppKey" value="59F3DE7C78C4924A4ECF2446D08EF81" /><add key="Notify_URL" value="http://AppApi/Pay/OrderInfoWechatNotify" /><add key="IDCardQuery" value="007b4a461d947f1c2aa8cb1f88c04d" />string nonceStr = Guid.NewGuid().ToString();nonceStr = nonceStr.Replace("-", "");//随机字符串string Noncestr = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10);TenPayV3UnifiedorderRequestData TenPay = new TenPayV3UnifiedorderRequestData(System.Configuration.ConfigurationManager.AppSettings["ServiceAppID"],//服务商APPIDSystem.Configuration.ConfigurationManager.AppSettings["ServiceMechID"],//服务商商户IDSystem.Configuration.ConfigurationManager.AppSettings["SubAppID"],//子AppIDSystem.Configuration.ConfigurationManager.AppSettings["SubMechID"],//子商户ID"购买商品" + OrderInfo.OrderNo,//订单编号OrderInfo.OrderNo,//订单号Convert.ToInt32(OrderInfo.PayPrice * 100),"127.0.0.1",//用户的公网ip,不是商户服务器IPSystem.Configuration.ConfigurationManager.AppSettings["Notify_URL"],Senparc.Weixin.MP.TenPayV3Type.JSAPI,"",Users.WxOpenID,//微信授权OpenIDSystem.Configuration.ConfigurationManager.AppSettings["AppKey"],//微信支付KeyNoncestr//支付订单号);UnifiedorderResult UResult = TenPayV3.Unifiedorder(TenPay);#region 计算APP支付签名string AppKeySign = string.Empty;TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();string NonceStr = JSSDKHelper.GetNoncestr();RequestHandler AppPayRequestHandler = new RequestHandler(null);AppPayRequestHandler.Init();AppPayRequestHandler.SetParameter("appId", System.Configuration.ConfigurationManager.AppSettings["SubAppID"]);AppPayRequestHandler.SetParameter("package", "prepay_id="+UResult.prepay_id);AppPayRequestHandler.SetParameter("signType", "MD5");AppPayRequestHandler.SetParameter("nonceStr", NonceStr);AppPayRequestHandler.SetParameter("timeStamp", timestamp);AppKeySign = AppPayRequestHandler.CreateMd5Sign("key", System.Configuration.ConfigurationManager.AppSettings["AppKey"]);#endregionUnifiedorderResult UResult1 = TenPayV3.Unifiedorder(TenPay);if (UResult != null && UResult.return_code == "SUCCESS"){if (UResult.result_code == "SUCCESS"){object data = new{PrepayId = UResult.prepay_id,// 预支付交易会话标识Price = Convert.ToInt32(OrderInfo.PayPrice * 100).ToString("0.##"),//交易金额OrderNumber = OrderInfo.OrderNo,//第三方订单号Sign = AppKeySign,//签名NonceStr = NonceStr,//随机字符串TimeStamp = timestamp,//时当前间戳AppID = System.Configuration.ConfigurationManager.AppSettings["ServiceAppID"],//APPIDMechID = System.Configuration.ConfigurationManager.AppSettings["ServiceMechID"],//商户IDSubAppID = System.Configuration.ConfigurationManager.AppSettings["SubAppID"],//子APPIDSubMechID = System.Configuration.ConfigurationManager.AppSettings["SubMechID"],//子商户ID};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "下单成功:" + UResult.return_msg }, JsonRequestBehavior.DenyGet);}}#region 回调地址 public ActionResult OrderInfoWechatNotify(){Int32 intLen = Convert.ToInt32(Request.InputStream.Length);byte[] b = new byte[intLen];Request.InputStream.Read(b, 0, intLen);string resultFromWx = System.Text.Encoding.UTF8.GetString(b);Logger.Debug("==OrderInfoWechatNotify 回调参数:" + resultFromWx);if (string.IsNullOrEmpty(resultFromWx)){return Content("<xml><return_code>FAIL</return_code><return_msg>支付失败</return_msg></xml>");}var xmlDoc = XDocument.Parse(resultFromWx);try{IQingWei.Model.OrderInfo OrderInfo = OrderInfoBLL.GetModelByWhere(string.Format("OrderNo='{0}'", xmlDoc.Element("xml").Element("out_trade_no").Value));if (OrderInfo == null){return Content("<xml><return_code>FAIL</return_code><return_msg>订单不存在</return_msg></xml>");}if (xmlDoc.Element("xml").Element("return_code").Value == "FAIL"){//根据订单号获取对象OrderInfo.PayState = 0;OrderInfo.OrderState = 1;if (OrderInfoBLL.Update(OrderInfo)){return Content("<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>");}}#region 验证签名RequestHandler paySignReqHandler = new RequestHandler(null);paySignReqHandler.SetParameter("appid", xmlDoc.Element("xml").Element("appid").Value);paySignReqHandler.SetParameter("bank_type", xmlDoc.Element("xml").Element("bank_type").Value);paySignReqHandler.SetParameter("fee_type", xmlDoc.Element("xml").Element("fee_type").Value);paySignReqHandler.SetParameter("is_subscribe", xmlDoc.Element("xml").Element("is_subscribe").Value);paySignReqHandler.SetParameter("mch_id", xmlDoc.Element("xml").Element("mch_id").Value);paySignReqHandler.SetParameter("nonce_str", xmlDoc.Element("xml").Element("nonce_str").Value);paySignReqHandler.SetParameter("out_trade_no", xmlDoc.Element("xml").Element("out_trade_no").Value);paySignReqHandler.SetParameter("result_code", xmlDoc.Element("xml").Element("result_code").Value);paySignReqHandler.SetParameter("return_code", xmlDoc.Element("xml").Element("return_code").Value);paySignReqHandler.SetParameter("sign", xmlDoc.Element("xml").Element("sign").Value);paySignReqHandler.SetParameter("time_end", xmlDoc.Element("xml").Element("time_end").Value);paySignReqHandler.SetParameter("total_fee", xmlDoc.Element("xml").Element("total_fee").Value);paySignReqHandler.SetParameter("trade_type", xmlDoc.Element("xml").Element("trade_type").Value);paySignReqHandler.SetParameter("transaction_id", xmlDoc.Element("xml").Element("transaction_id").Value);paySignReqHandler.SetParameter("sub_appid", xmlDoc.Element("xml").Element("sub_appid").Value);paySignReqHandler.SetParameter("sub_mch_id", xmlDoc.Element("xml").Element("sub_mch_id").Value);paySignReqHandler.SetParameter("sub_is_subscribe", xmlDoc.Element("xml").Element("sub_is_subscribe").Value);paySignReqHandler.SetParameter("cash_fee", xmlDoc.Element("xml").Element("cash_fee").Value);paySignReqHandler.SetParameter("openid", xmlDoc.Element("xml").Element("openid").Value);paySignReqHandler.SetParameter("sub_openid", xmlDoc.Element("xml").Element("sub_openid").Value);//支付验证是否使用了优惠券,如果使用,则需要添加如下参数if (xmlDoc.Element("xml").Element("coupon_count") != null){paySignReqHandler.SetParameter("coupon_count", xmlDoc.Element("xml").Element("coupon_count").Value);paySignReqHandler.SetParameter("coupon_fee", xmlDoc.Element("xml").Element("coupon_fee").Value);paySignReqHandler.SetParameter("coupon_fee_0", xmlDoc.Element("xml").Element("coupon_fee_0").Value);paySignReqHandler.SetParameter("coupon_id_0", xmlDoc.Element("xml").Element("coupon_id_0").Value);paySignReqHandler.SetParameter("coupon_fee", xmlDoc.Element("xml").Element("coupon_fee").Value);}var paySign = paySignReqHandler.CreateMd5Sign("key", System.Configuration.ConfigurationManager.AppSettings["AppKey"]);if (paySign != xmlDoc.Element("xml").Element("sign").Value){return Content("<xml><return_code>FAIL</return_code><return_msg>签名验证失败</return_msg></xml>");}#endregion//判断订单金额是否与回调金额一致,如不一致,则直接返回失败if (Convert.ToInt32(OrderInfo.PayPrice * 100) != Convert.ToInt32(xmlDoc.Element("xml").Element("total_fee").Value)){return Content("<xml><return_code>FAIL</return_code><return_msg>订单金额不一致</return_msg></xml>");}OrderInfo.PayState = 1;//已支付OrderInfo.OrderState = 2;//已支付未出货微信支付回调 OrderInfo.PayDate = DateTime.Now;OrderInfo.ParOrderNo = xmlDoc.Element("xml").Element("transaction_id").Value;if (OrderInfoBLL.Update(OrderInfo)){//如果有支付奖券,进行奖券更新if (OrderInfo.UserCouponReceiveId != Guid.Empty){UserCouponReceiveBLL.UpdateCouponReceiveStatus(OrderInfo.UserCouponReceiveId);}var equipModel = equipmentBLL.GetModelByWhere(string.Format(" id='{0}' ", OrderInfo.EquipId));#region 支付成功 - 根据设备类型通知服务器if (OrderInfo.TypeNo != null){IQingWei.Model.EquipType EquipType = EquipTypeBLL.GetModelByWhere(string.Format("TypeNo='{0}'", OrderInfo.TypeNo));if (EquipType.ProtocolMode == 4){//摇摇车通知服务器SendYaoYaoChe(equipModel.Sn, OrderInfo.OrderNo, (OrderInfo.GoodsNumber * OrderInfo.GoodsCount).ToString());}}#endregionreturn Content("<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>");}return Content("<xml><return_code>FAIL</return_code><return_msg>订单不存在</return_msg></xml>");}catch (Exception ex){Logger.Debug("==回调方法执行错误: " +ex.Message);return Content("<xml><return_code>FAIL</return_code><return_msg>" + ex.Message + "</return_msg></xml>");}}#endregion

微信登录

    public class wxlogin{#region Http (GET/POST)/// <summary>/// Http (GET/POST)/// </summary>/// <param name="url">请求URL</param>/// <param name="parameters">请求参数</param>/// <param name="method">请求方法</param>/// <returns>响应内容</returns>public static string sendPost(string url, IDictionary<string, string> parameters, string method){if (method.ToLower() == "post"){HttpWebRequest req = null;HttpWebResponse rsp = null;System.IO.Stream reqStream = null;try{req = (HttpWebRequest)WebRequest.Create(url);req.Method = method;req.KeepAlive = false;req.ProtocolVersion = HttpVersion.Version10;req.Timeout = 5000;req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));reqStream = req.GetRequestStream();reqStream.Write(postData, 0, postData.Length);rsp = (HttpWebResponse)req.GetResponse();Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);return GetResponseAsString(rsp, encoding);}catch (Exception ex){return ex.Message;}finally{if (reqStream != null) reqStream.Close();if (rsp != null) rsp.Close();}}else{//创建请求HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));//GET请求request.Method = "GET";request.ReadWriteTimeout = 5000;request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));//返回内容string retString = myStreamReader.ReadToEnd();return retString;}}#endregion#region 组装普通文本请求参数/// <summary>/// 组装普通文本请求参数。/// </summary>/// <param name="parameters">Key-Value形式请求参数字典</param>/// <returns>URL编码后的请求数据</returns>static string BuildQuery(IDictionary<string, string> parameters, string encode){StringBuilder postData = new StringBuilder();bool hasParam = false;IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();while (dem.MoveNext()){string name = dem.Current.Key;string value = dem.Current.Value;// 忽略参数名或参数值为空的参数if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value){if (hasParam){postData.Append("&");}postData.Append(name);postData.Append("=");if (encode == "gb2312"){postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));}else if (encode == "utf8"){postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));}else{postData.Append(value);}hasParam = true;}}return postData.ToString();}#endregion#region 把响应流转换为文本/// <summary>/// 把响应流转换为文本。/// </summary>/// <param name="rsp">响应流对象</param>/// <param name="encoding">编码方式</param>/// <returns>响应文本</returns>static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding){System.IO.Stream stream = null;StreamReader reader = null;try{// 以字符流的方式读取HTTP响应stream = rsp.GetResponseStream();reader = new StreamReader(stream, encoding);return reader.ReadToEnd();}finally{// 释放资源if (reader != null) reader.Close();if (stream != null) stream.Close();if (rsp != null) rsp.Close();}}#endregion#region 获取微信登陆openid和session_key/// <summary>/// 获取微信登陆openid和session_key/// </summary>/// <param name="code">code</param>public static JObject Getopenid(string AppID, string Secret, string code){string Data = "";IDictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("appId", AppID);parameters.Add("secret", Secret);parameters.Add("js_code", code);parameters.Add("grant_type", "authorization_code");Data = sendPost("https://api.weixin.qq.com/sns/jscode2session", parameters, "GET");JObject jObject = JObject.Parse(Data);if (jObject["errcode"] != null){return null;}else{return jObject;}}#endregion#region XML Post请求/// <summary>/// XML Post请求/// </summary>/// <param name="XML"></param>/// <returns></returns>public static string XMLsendPost(string XML, string url){HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);myHttpWebRequest.Method = "POST";myHttpWebRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";byte[] encodedBytes = Encoding.UTF8.GetBytes(XML);myHttpWebRequest.ContentLength = encodedBytes.Length;Stream requestStream = myHttpWebRequest.GetRequestStream();requestStream.Write(encodedBytes, 0, encodedBytes.Length);requestStream.Close();HttpWebResponse result;try{result = (HttpWebResponse)myHttpWebRequest.GetResponse();}catch (Exception ex){return string.Empty;}if (result.StatusCode == HttpStatusCode.OK){using (Stream mystream = result.GetResponseStream()){using (StreamReader reader = new StreamReader(mystream)){return reader.ReadToEnd();}}}return null;}#endregion#region 请求URLpublic static string Post(string Url, string jsonParas){string strURL = Url;//创建一个HTTP请求  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);//Post请求方式  request.Method = "POST";//内容类型request.ContentType = "application/x-www-form-urlencoded";string paraUrlCoded = System.Web.HttpUtility.UrlEncode("param");paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);byte[] payload;//将Json字符串转化为字节  payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);//设置请求的ContentLength   request.ContentLength = payload.Length;//发送请求,获得请求流  Stream writer;try{writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象}catch (Exception){writer = null;Console.Write("连接服务器失败!");}//将请求参数写入流writer.Write(payload, 0, payload.Length);writer.Close();//关闭请求流String strValue = "";//strValue为http响应所返回的字符流HttpWebResponse response;try{//获得响应流response = (HttpWebResponse)request.GetResponse();}catch (WebException ex){response = ex.Response as HttpWebResponse;}Encoding encoding = Encoding.GetEncoding(response.CharacterSet);return GetResponseAsString(response, encoding);}#endregion#region 公众号获取用户信息public static string GetInfos(string _code){//string _access_tokens = GetToken(_code);JObject json = JObject.Parse(_access_tokens);string access_token = json["access_token"].ToString();string refresh_token = json["refresh_token"].ToString();string openid = json["openid"].ToString();return openid;}/// <summary>/// 用code 获取 Token/// </summary>static string GetToken(string _code){if (_code.IndexOf("\"") > -1)_code = _code.Replace("\"", "");string URL = "https://api.weixin.qq.com/sns/oauth2/access_token";string RequestPara = "?appid=wxb16e70ee139561f1";RequestPara += "&secret=41af799f8767ab7d5ce18df8f4431a4c";RequestPara += "&code=" + _code;RequestPara += "&grant_type=authorization_code";string _access_tokens = GetData(URL, RequestPara);_access_tokens = _access_tokens.Replace("\"", "'");return _access_tokens;}/// <summary>/// 获取用户信息/// </summary>static string GetUserInfo(string access_token, string openid){if (access_token.IndexOf("\"") > -1)access_token = access_token.Replace("\"", "");if (openid.IndexOf("\"") > -1)openid = openid.Replace("\"", "");string I_URL = "https://api.weixin.qq.com/sns/userinfo";string I_RequestPara = "?access_token=" + access_token;I_RequestPara += "&openid=" + openid;I_RequestPara += "&lang=zh_CN";string _infos = GetData(I_URL, I_RequestPara);_infos = _infos.Replace("\"", "'");return _infos;}/// <summary>/// 刷新 Token/// </summary>static string RefreshToken(string refresh_token){if (refresh_token.IndexOf("\"") > -1)refresh_token = refresh_token.Replace("\"", "");string R_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token";string R_RequestPara = "?appid=wxb16e70ee139561f1";R_RequestPara += "&grant_type=refresh_token";R_RequestPara += "&refresh_token=" + refresh_token;string _infos = GetData(R_URL, R_RequestPara);_infos = _infos.Replace("\"", "'");return _infos;}/// <summary>/// 访问地址,并获取数据/// </summary>static string GetData(string URL, string RequestPara){RequestPara = RequestPara.IndexOf('?') > -1 ? (RequestPara) : ("?" + RequestPara);WebRequest hr = HttpWebRequest.Create(URL + RequestPara);byte[] buf = System.Text.Encoding.GetEncoding("utf-8").GetBytes(RequestPara);hr.Method = "GET";System.Net.WebResponse response = hr.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));string ReturnVal = reader.ReadToEnd();reader.Close();response.Close();return ReturnVal;}#endregionpublic static string m_PostSubmit(string strUrl, string strParam){string strResult = "error";try{System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strUrl);Encoding encoding = Encoding.UTF8;//encoding.GetBytes(postData);byte[] bs = Encoding.ASCII.GetBytes(strParam);string responseData = System.String.Empty;req.Method = "POST";req.ContentType = "application/json";req.ContentLength = bs.Length;try{using (System.IO.Stream reqStream = req.GetRequestStream()){reqStream.Write(bs, 0, bs.Length);reqStream.Close();}using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)req.GetResponse()){using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(), encoding)){responseData = reader.ReadToEnd().ToString();strResult = responseData;}}}catch (System.Exception ex){strResult = "error:" + ex.Message;//返回异常信息}}catch (System.Exception ex){strResult = "error:" + ex.Message;//返回异常信息}return strResult;}}

微信小程序授权

   #region 用户端登录/// <summary>/// 用户端登录/// </summary>/// <param name="param">参数{"UserName":"会员名称","Password":"密码","code":"code","toDecrypt":"明文","ivBytes":"向量","AgentCode":""}</param>/// <returns></returns>[HttpPost]public JsonResult Account_UsersWxLogin(string param){JObject jObject = JObject.Parse(param);if (jObject != null){try{string AppID = System.Configuration.ConfigurationManager.AppSettings["AppID"].ToString();string Secret = System.Configuration.ConfigurationManager.AppSettings["AppSecret"].ToString();JObject Data = new JObject();string UserName = string.Empty;int IsOneClick = 0;try{if (!string.IsNullOrEmpty(jObject["code"].ToString())){Data = wxlogin.Getopenid(AppID, Secret, jObject["code"].ToString());}if (string.IsNullOrEmpty(jObject["UserName"].ToString()) && Data != null){string Result = AesDecode(jObject["toDecrypt"].ToString(), Data["session_key"].ToString(), jObject["ivBytes"].ToString());JObject jObjects = JObject.Parse(Result);UserName = jObjects["phoneNumber"].ToString();IsOneClick = 2;}else{UserName = jObject["UserName"].ToString();}}catch (Exception ex){ErrLog.LogResult("授权登录错误信息" + ex.Message);}if (string.IsNullOrEmpty(UserName)){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "登录失败,用户名不存在!" }, JsonRequestBehavior.DenyGet);}string WhereSql = string.Format("UserName='{0}' and UserType='UU'", UserName);IQingWei.SysManage.Model.Account_Users Users = Account_UsersBLL.GetModels(WhereSql);if (!string.IsNullOrEmpty(jObject["UserName"].ToString())){if (!string.IsNullOrEmpty(jObject["Password"].ToString())){if (Users.Password != MD5Helper.Encrypt(MD5Helper.Encrypt(jObject["Password"].ToString()))){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "登录失败,请确认用户名密码是否正确!" }, JsonRequestBehavior.DenyGet);}}}object data = new object();if (Users == null){IQingWei.SysManage.Model.Account_Users User = new SysManage.Model.Account_Users();User.Activity = true;//状态  User.UserType = "UU";//类型    if (!string.IsNullOrEmpty(jObject["AgentCode"].ToString())){int code = int.Parse(jObject["AgentCode"].ToString()) - 10000;IQingWei.SysManage.Model.Account_Users _Account_Users = Account_UsersBLL.GetModel(code);User.User_iGreator = code;//创建者User.User_iGreatorPath = _Account_Users.User_iGreatorPath + "," + _Account_Users.UserID;//创建者路径}else{User.User_iGreator = 0;//创建者User.User_iGreatorPath = "0";}User.TrueName = UserName; //姓名User.User_dateGreate = DateTime.Now;User.User_dataValid = DateTime.Now;//有效期   User.User_dateExpire = DateTime.Now;//失效期      User.UserName = UserName;//用户名 User.Password = MD5Helper.Encrypt(MD5Helper.Encrypt("123456"));//用户名 User.Phone = UserName;//电话 User.Activation = false;//激活状态 User.WxOpenID = Data["openid"].ToString();//User.IsOneClick = IsOneClick;int UserID = Account_UsersBLL.Add(User);if (UserID > 0){data = new{UserID = UserID,//商户用户IDUserName = UserName,//用户名手机号NickName = User.NickName,//昵称};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "" }, JsonRequestBehavior.DenyGet);}}if (Data != null && Data.Count > 0 && !string.IsNullOrEmpty(Data["openid"].ToString())){if (string.IsNullOrEmpty(Users.WxOpenID) || Users.WxOpenID != Data["openid"].ToString()){IQingWei.SysManage.Model.Account_Users User = Account_UsersBLL.GetModel(Users.UserID);User.WxOpenID = Data["openid"] != null ? Data["openid"].ToString() : "";Account_UsersBLL.Update(User);data = new{UserID = User.UserID,//商户用户IDUserName = User.UserName,//用户名手机号NickName = User.NickName,//昵称};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "" }, JsonRequestBehavior.DenyGet);}}if (!Users.Activity){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "登录失败,该账号不能使用!" }, JsonRequestBehavior.DenyGet);}if (Users.UserType != "UU"){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "不能在此平台登陆此账号!" }, JsonRequestBehavior.DenyGet);}data = new{UserID = Users.UserID,//商户用户IDUserName = Users.UserName,//用户名手机号NickName = Users.NickName,//昵称};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "登录成功!" }, JsonRequestBehavior.DenyGet);}catch (Exception ex){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "请求失败!" + ex.Message }, JsonRequestBehavior.DenyGet);}}return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "请求失败,传递参数出现错误!" }, JsonRequestBehavior.DenyGet);}#endregion

微信H5授权

        #region 微信H5授权/// <summary>/// 微信H5授权/// </summary>/// <param name="param">{"code":"",EquipmentSN:""}</param>/// <returns></returns>public JsonResult Account_UsersWxLogin(string param){JObject jObject = JObject.Parse(param);if (jObject != null){try{string AppID = "wx7d13807d301db9";string Secret = "4ef696437c586bb2d32eb1b0d39d92";string EquipmentSN = !string.IsNullOrEmpty(jObject["EquipmentSN"].ToString()) ? jObject["EquipmentSN"].ToString() : "";Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthAccessTokenResult _OAuthAccessTokenResult = null;Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthUserInfo _OAuthUserInfo = null;if (string.IsNullOrEmpty(jObject["code"].ToString())){return Json(new Result { DATA = "", ERROR_CODE = "1", ERROR_MESSAGE = "Code不为空!" }, JsonRequestBehavior.DenyGet);}if (string.IsNullOrEmpty(EquipmentSN)){return Json(new Result { DATA = "", ERROR_CODE = "1", ERROR_MESSAGE = "设备SN不为空!" }, JsonRequestBehavior.DenyGet);}_OAuthAccessTokenResult = OAuthApi.GetAccessToken(AppID, Secret, jObject["code"].ToString());if (_OAuthAccessTokenResult.ErrorCodeValue == 40029){return Json(new Result { DATA = _OAuthAccessTokenResult, ERROR_CODE = "1", ERROR_MESSAGE = "Code无效错误!" }, JsonRequestBehavior.DenyGet);}_OAuthUserInfo = OAuthApi.GetUserInfo(_OAuthAccessTokenResult.access_token, _OAuthAccessTokenResult.openid);if (_OAuthUserInfo == null){return Json(new Result { DATA = _OAuthUserInfo, ERROR_CODE = "1", ERROR_MESSAGE = "openid错误,获取用户信息错误!" }, JsonRequestBehavior.DenyGet);}string UserName = "";int IsOneClick = 0;if (string.IsNullOrEmpty(_OAuthUserInfo.nickname)){UserName = _OAuthUserInfo.nickname;IsOneClick = 2;}else{UserName = _OAuthUserInfo.nickname;}if (string.IsNullOrEmpty(UserName)){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "登录失败,用户名不存在!" }, JsonRequestBehavior.DenyGet);}string WhereSql = string.Format(" UserType='UU' and WxOpenID='{0}'", _OAuthAccessTokenResult.openid);List<IQingWei.SysManage.Model.Account_Users> Userlist = Account_UsersBLL.GetModelList(WhereSql, "User_dateGreate desc");object data = new object();if (Userlist == null || Userlist.Count == 0){IQingWei.SysManage.Model.Account_Users User = new SysManage.Model.Account_Users();User.Activity = true;//状态    User.UserType = "UU";//类型    User.User_iGreator = 0;//创建者User.User_iGreatorPath = "0";User.TrueName = UserName; //昵称User.User_dateGreate = DateTime.Now;User.User_dataValid = DateTime.Now;//有效期  User.User_dateExpire = DateTime.Now;//失效期      User.UserName = UserName;//用户名 User.Password = MD5Helper.Encrypt(MD5Helper.Encrypt("123456"));//用户名 User.Phone = UserName;//电话 User.Activation = false;//激活状态 User.WxOpenID = _OAuthAccessTokenResult.openid;//User.IsOneClick = IsOneClick;int UserID = Account_UsersBLL.Add(User);if (UserID > 0){data = new{UserID = UserID,//商户用户IDUserName = UserName,//用户名手机号EquipmentSN = EquipmentSN};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "" }, JsonRequestBehavior.DenyGet);}}if (!Userlist[0].Activity){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "登录失败,该账号不能使用!" }, JsonRequestBehavior.DenyGet);}if (Userlist[0].UserType != "UU"){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "不能在此平台登陆此账号!" }, JsonRequestBehavior.DenyGet);}data = new{UserID = Userlist[0].UserID,//商户用户IDUserName = Userlist[0].UserName,//用户名手机号EquipmentSN = EquipmentSN,};return Json(new Result { DATA = data, ERROR_CODE = "-1", ERROR_MESSAGE = "登录成功!" }, JsonRequestBehavior.DenyGet);}catch (Exception ex){return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "请求失败!" + ex.Message }, JsonRequestBehavior.DenyGet);}}return Json(new Result { DATA = null, ERROR_CODE = "1", ERROR_MESSAGE = "请求失败,传递参数出现错误!" }, JsonRequestBehavior.DenyGet);}#endregion

微信支付 微信授权相关推荐

  1. 微信支付—微信H5支付「微信内部浏览器」

    前言 微信支付-微信H5外部浏览器支付 微信支付-微信H5内部浏览器支付「本文」 微信支付-PC端扫码支付「待写」 本篇是微信支付系列的第二篇.微信H5内部浏览器支付,关于微信H5外部浏览器唤起微信A ...

  2. 微信支付—微信H5支付「PC端扫码支付」

    前言 微信支付-微信H5外部浏览器支付 微信支付-微信H5内部浏览器支付 微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇,PC端扫码支付. 开发环境:Java + SpringBoot ...

  3. 微信支付—微信H5支付「非微信内部浏览器-QQ/UC浏览器等」

    前言 微信支付-微信H5外部浏览器支付「本文」 微信H5内部浏览器支付「待写」 PC端扫码支付「待写」 一直计划着写一写微信支付相关的文章,希望能加深一下自己的印象,拖了一天又一天- 最近终于空出时间 ...

  4. python微信库有哪些_GitHub - zwczou/weixin-python: 微信SDK - 包括微信支付,微信公众号,微信登陆,微信消息处理等...

    微信SDK 提供微信登陆,公众号管理,微信支付,微信消息的全套功能 文档目录 如果需要单独使用其中的某些模块,可以见文档目录的具体模块 如果需要组合在一起可以参考快速开始 目录 安装 使用pip su ...

  5. 微信支付网页授权域名只能填1个,怎么破,教你一招搞定

    通常一个企业可能有多个网站,每个业务方向,或者产品类型都会有单独的一个网站,但是微信支付或登录,只允许填写一个网页授权域名,我们不可能每个网站都去申请一个公众号,且不说每年300元的成本,主要是管理起 ...

  6. JSAPI网页授权-微信支付-微信退款-商户平台Java对接

    简介: 首先,对接微信支付要知道需要什么参数,然后等我们拿到这些需要的参数.就要开始怎么去做.微信有专门的支付dome,可惜我才疏学浅,没怎么看懂(哭泣~).不过里面的有一些工具类是我们所需要的. 这 ...

  7. vue前端实现微信支付-微信公众号JSSDK

    最近在做支付功能,微信支付准备工作之类的请参考官方说明,注意个人申请的测试号不支持,要申请企业号,还要商户号,开通支付权限,配置域名,JSSDK的权限问题,尽可能都开通吧! 官方地址可参考这里:接入准 ...

  8. 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)

    做微信支付前期准备: 1,服务好开通微信支付. 2,公众账号ID:AppId. 3,公众账号密钥:AppSecret. 4,微信支付密钥:Key. 第一步:获取用户信息并跳转到需要微信支付的页面 pu ...

  9. 微信支付~微信手机网站支付(mweb)

    这次做微信h5支付(Mweb)时发现很多时间都花费在需申请和配置的操作上,所以整体记录下这次h5支付(Mweb)的流程作为备忘录. 1.申请h5支付的权限 申请入口:登录微信商户平台-->产品中 ...

最新文章

  1. 五点讲述C++智能指针的点点滴滴
  2. XML DOM 解析器概述
  3. Windows下安装python的pip
  4. Eclipse如何生成jar包
  5. 文巾解题 14. 最长公共前缀
  6. PHP7新增的主要特性
  7. kmeanssklearn实例_sklearn实践(一):kmeans聚类
  8. c++ 确定百分比_【文献笔记】JIMF中国货币政策的不确定性
  9. BottomNavigationView的使用
  10. IntelliJ IDEA中怎么创建xml文件?
  11. ios把数据传递到另一个页面_iOS页面跳转及数据传递(三种)
  12. ajax分页效果、分类联动、搜索功能
  13. 2020年总结:敏而多思,宁静致远——纪念这风雨兼程的一年
  14. 关于物联网卡,您想了解的都在这里
  15. apple id两步验证服务器,如何开启 Apple ID 两步验证
  16. python 文件上传 web_pythonweb自动化三种文件上传方法
  17. 关于YY1139-2013心电诊断设备的共模抑制测试项的理解
  18. 计算机三级数据库知识点整理
  19. 【汽车行业中的RKE/PKE】
  20. 回撤率 python 平台_python怎么计算最大回撤

热门文章

  1. 网络安全宣传小程序计算机毕业设计源码70468
  2. 收藏 | 数据分析师面试指南——自我定位篇
  3. 优克联与伦敦合作伙伴携手,为欧洲夏季旅游重新开放做准备
  4. python基础3----函数与类
  5. 万物皆可 Serverless 之免费搭建不限速 5% 大云盘
  6. chubby中文意思
  7. Ansys SCADE Vision-感知算法鲁棒性分析测试工具
  8. 2020汽车驾驶员(中级)考试试题及汽车驾驶员(中级)模拟考试软件
  9. AE 自动曝光 Understanding Auto Exposure Control
  10. Camtasia2023最新版电脑视频录屏记录编辑软件