// 订单和商品做到一块 public RESTfulModel UnifiedOrder(string authorizerAppID, string openID, int totalFee, string body) { try { #region 验证参数 RESTfulModel cv_AuthorizerAppID = ClientValidateAuthorizerAppID(authorizerAppID); if (cv_AuthorizerAppID.Code != 0) { return(cv_AuthorizerAppID); } RESTfulModel cv_OpenID = ClientValidateOpenID(openID); if (cv_OpenID.Code != 0) { return(cv_OpenID); } RESTfulModel cv_TotalFee = ClientValidateTotalFee(totalFee); if (cv_TotalFee.Code != 0) { return(cv_TotalFee); } RESTfulModel cv_Body = ClientValidateBody(body); if (cv_Body.Code != 0) { return(cv_Body); } #endregion DateTime dt = DateTime.Now; Random r = new Random(); string outTradeNo = dt.ToString("yyyyMMddHHmmssfff") + r.Next(100000, 999999); #region 操作 if (payDAL.Insert(authorizerAppID, openID, outTradeNo, totalFee, body, dt)) { return(new RESTfulModel() { Code = (int)CodeEnum.成功, Msg = codeMsgDAL.GetByCode((int)CodeEnum.成功), Data = new { outTradeNo = outTradeNo } }); } else { return(new RESTfulModel() { Code = (int)CodeEnum.单失败, Msg = codeMsgDAL.GetByCode((int)CodeEnum.单失败) }); } #endregion } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }
private RESTfulModel WXUnifiedOrder(string outTradeNo, string ip) { string url = "http://pay.smartyancheng.com/api/wxpay/unifiedorder?outtradeno={0}&ip={1}"; url = string.Format(url, outTradeNo, ip); string responseBody = HttpHelper.Get(url); RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody); if (resp.Code == 0) { WXUnifiedOrderResp wxUnifiedOrderResp = JsonConvert.DeserializeObject <WXUnifiedOrderResp>(resp.Data.ToString()); string appID = wxUnifiedOrderResp.AppID; string timeStamp = wxUnifiedOrderResp.TimeStamp; string nonceStr = wxUnifiedOrderResp.NonceStr; string package = "prepay_id=" + wxUnifiedOrderResp.PrePayID; string signType = "MD5"; string preStr = "appId=" + appID + "&nonceStr=" + nonceStr + "&package=" + package + "&signType=" + signType + "&timeStamp=" + timeStamp + "&key=" + "7fa914d492b9a0e27013db9300ffb2e8"; string paySign = UtilsHelper.MD5(preStr); LogHelper.Info("支付签名信息: ", preStr + "\r\n" + paySign); return(new RESTfulModel() { Code = 0, Msg = "成功", Data = new { appID = appID, timeStamp = timeStamp, nonceStr = nonceStr, package = package, signType = signType, paySign = paySign } }); } return(resp); }
public ActionResult ForceAccept(string code, string state, string appID) { if (string.IsNullOrEmpty(code)) { // 用户取消了授权 return(Redirect("/error/canceloauth2")); } else { // RESTfulModel resp = oauth2BLL.GetAuth(appID, code, state); if (resp.Code == 0) { // 设置openid CookieHelper.SetCookie("uid", resp.Data.ToString()); CookieHelper.SetCookie("aus", "tjh"); string redirect_uri = CookieHelper.GetCookie("redirect_uri"); return(Redirect(redirect_uri)); } else { // 授权失败 return(Redirect("/error/oauth2failed")); } } // 定制500错误页 }
public RESTfulModel Create(string authorizerAppID, string openID, OrderModel model, string ip) { try { // string url = "http://pay.smartyancheng.com/api/pay/unifiedorder?authorizerappid={0}&openid={1}&totalfee={2}&body={3}"; string body = "店内消费"; url = string.Format(url, authorizerAppID, openID, model.TotalFee, body); string responseBody = HttpHelper.Get(url); RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody); if (resp.Code == 0) { UnifiedOrderResp unifiedOrderResp = JsonConvert.DeserializeObject <UnifiedOrderResp>(resp.Data.ToString()); // 获取预支付信息 return(WXUnifiedOrder(unifiedOrderResp.OutTradeNo, ip)); } return(resp); } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }
public ActionResult Index(LoginModel model) { RESTfulModel restfulModel = adminInfoBLL.Login(model); if (restfulModel.Code == 0) { Session["admin"] = restfulModel.Data as AdminInfoModel; } return(Content(restfulModel.ToString(), "application/json")); }
public string Get() { string url = ConfigHelper.DomainToken + "api/componentaccesstoken/get"; LogHelper.Info("获取component_access_token url", url); string responseBody = HttpHelper.Get(url); LogHelper.Info("获取component_access_token responseBody", responseBody); RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody); return(resp.Data.ToString()); }
public override Task <HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) { HttpRequestMessage req = controllerContext.Request; string requestUrl = req.RequestUri.AbsoluteUri; string requestBody = req.Content.ReadAsAsync <string>().Result; Task <HttpResponseMessage> execute = base.ExecuteAsync(controllerContext, cancellationToken); RESTfulModel resp = execute.Result.Content.ReadAsAsync <RESTfulModel>().Result; string responseBody = JsonConvert.SerializeObject(resp); return(execute); }
public AuthorizationInfoModel Get(string authorizerAppID) { string url = ConfigHelper.DomainToken + "api/accesstoken/get?authorizerappid=" + authorizerAppID; LogHelper.Info("获取access_token url", url); string responseBody = HttpHelper.Get(url); LogHelper.Info("获取access_token responseBody", responseBody); RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody); AuthorizationInfoModel authorizationInfoModel = JsonConvert.DeserializeObject <AuthorizationInfoModel>(resp.Data.ToString()); return(authorizationInfoModel); }
public RESTfulModel GetSMSCode(string mobileNum, string requestIP) { try { #region 非数据库端验证mobileNum RESTfulModel cv_MobileNum = ClientValidateMobileNum(mobileNum); if (cv_MobileNum.Code != 0) { return(cv_MobileNum); } #endregion #region 数据库端验证appId //RESTfulModel sv_AppId = ServerValidateAppId(appId, requestIP); //if (sv_AppId.Code != 0) //{ // return sv_AppId; //} #endregion DateTime dt = DateTime.Now; #region 添加smscode string codeValue; smsCodeDAL.Insert(mobileNum, dt, out codeValue); return(new RESTfulModel() { Code = (int)CodeEnum.成功, Msg = string.Format(CodeMsgDAL.GetByCode((int)CodeEnum.成功), "成功"), SMSCode = codeValue }); #endregion } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = CodeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }
public RESTfulModel WXUnifiedOrder(string outTradeNo, string ip, int period, string tradeType) { try { string url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; #region 验证参数 RESTfulModel cv_OutTradeNo = ClientValidateOutTradeNo(outTradeNo); if (cv_OutTradeNo.Code != 0) { return(cv_OutTradeNo); } RESTfulModel cv_Period = ClientValidatePeriod(period); if (cv_Period.Code != 0) { return(cv_Period); } #endregion #region 验证商户订单是否存在 PayModel payModel = payDAL.GetByOutTradeNo(outTradeNo); if (payModel == null) { return(new RESTfulModel() { Code = (int)CodeEnum.商户订单号不存在, Msg = codeMsgDAL.GetByCode((int)CodeEnum.商户订单号不存在) }); } #endregion #region 获取微信签约信息 WXConfigModel wxConfigModel = wxConfigDAL.GetByAuthorizerAppID(payModel.AuthorizerAppID); if (wxConfigModel == null) { return(new RESTfulModel() { Code = (int)CodeEnum.平台号不存在, Msg = codeMsgDAL.GetByCode((int)CodeEnum.平台号不存在) }); } #endregion DateTime dt = DateTime.Now; SortedDictionary <string, object> sortedDictionary_to = new SortedDictionary <string, object>(); #region sortedDictionary装填参数 sortedDictionary_to["appid"] = wxConfigModel.AuthorizerAppID; sortedDictionary_to["mch_id"] = wxConfigModel.MCHID; sortedDictionary_to["nonce_str"] = NonceStrHelper.GenerateNonceStr(); sortedDictionary_to["body"] = payModel.Body; sortedDictionary_to["out_trade_no"] = outTradeNo; sortedDictionary_to["total_fee"] = payModel.TotalFee; sortedDictionary_to["spbill_create_ip"] = ip; sortedDictionary_to["time_start"] = dt.ToString("yyyyMMddHHmmss"); sortedDictionary_to["time_expire"] = dt.AddMinutes(period).ToString("yyyyMMddHHmmss"); sortedDictionary_to["notify_url"] = wxConfigModel.NOTIFY_URL; sortedDictionary_to["trade_type"] = tradeType; if (tradeType == "JSAPI") { sortedDictionary_to["openid"] = payModel.OpenID; } #endregion #region &参数,得到sign string para_to = ""; if (sortedDictionary_to.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_to) { if (pair.Key != "sign" && pair.Value.ToString() != "") { para_to += pair.Key + "=" + pair.Value + "&"; } } } para_to += "key=" + wxConfigModel.KEY; var bs_to = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(para_to)); var sb_to = new StringBuilder(); foreach (byte b in bs_to) { sb_to.Append(b.ToString("x2")); } sortedDictionary_to["sign"] = sb_to.ToString().ToUpper(); #endregion #region 序列化xml string xml_to = "<xml>"; if (sortedDictionary_to.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_to) { if (pair.Value.GetType() == typeof(int)) { xml_to += "<" + pair.Key + ">" + pair.Value + "</" + pair.Key + ">"; } else if (pair.Value.GetType() == typeof(string)) { xml_to += "<" + pair.Key + ">" + "<![CDATA[" + pair.Value + "]]></" + pair.Key + ">"; } } } xml_to += "</xml>"; #endregion LogHelper.Info_wx("unifiedorder request: ", xml_to); #region 发请求 string xml_from = string.Empty; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((a, b, c, d) => { return(true); }); } request.Method = "POST"; request.ContentType = "text/xml"; byte[] bytes = System.Text.Encoding.UTF8.GetBytes(xml_to); Stream reqest_stream = request.GetRequestStream(); reqest_stream.Write(bytes, 0, bytes.Length); reqest_stream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); xml_from = streamReader.ReadToEnd().Trim(); #endregion LogHelper.Info_wx("unifiedorder response: ", xml_from); SortedDictionary <string, object> sortedDictionary_from = new SortedDictionary <string, object>(); #region 解析xml XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml_from); XmlNode xmlNode = xmlDoc.FirstChild;//获取到根节点<xml> XmlNodeList nodes = xmlNode.ChildNodes; foreach (XmlNode xn in nodes) { XmlElement xe = (XmlElement)xn; sortedDictionary_from[xe.Name] = xe.InnerText;//获取xml的键值对到WxPayData内部的数据中 } #endregion #region 操作 if ("SUCCESS" == sortedDictionary_from["return_code"].ToString()) { #region &参数,得到sign string para_from = ""; if (sortedDictionary_from.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_from) { if (pair.Key != "sign" && pair.Value.ToString() != "") { para_from += pair.Key + "=" + pair.Value + "&"; } } } para_from += "key=" + wxConfigModel.KEY; var bs_from = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(para_from)); var sb_from = new StringBuilder(); foreach (byte b in bs_from) { sb_from.Append(b.ToString("x2")); } string sign_from = sb_from.ToString().ToUpper(); #endregion if (sign_from == sortedDictionary_from["sign"].ToString()) { if ("SUCCESS" == sortedDictionary_from["result_code"].ToString()) { #region sortedDictionary装填参数 SortedDictionary <string, object> sortedDictionary_res = new SortedDictionary <string, object>(); sortedDictionary_res["appid"] = sortedDictionary_from["appid"]; sortedDictionary_res["partnerid"] = sortedDictionary_from["mch_id"]; sortedDictionary_res["prepayid"] = sortedDictionary_from["prepay_id"]; sortedDictionary_res["package"] = "Sign=WXPay"; sortedDictionary_res["noncestr"] = NonceStrHelper.GenerateNonceStr(); sortedDictionary_res["timestamp"] = TimestampHelper.GenerateTimeStamp(); #endregion #region &参数,得到sign string para_res = ""; if (sortedDictionary_res.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_res) { if (pair.Key != "sign" && pair.Value.ToString() != "") { para_res += pair.Key + "=" + pair.Value + "&"; } } } para_res += "key=" + wxConfigModel.KEY; var bs_res = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(para_res)); var sb_res = new StringBuilder(); foreach (byte b in bs_res) { sb_res.Append(b.ToString("x2")); } sortedDictionary_res["sign"] = sb_res.ToString().ToUpper(); #endregion return(new RESTfulModel() { Code = (int)CodeEnum.成功, Msg = codeMsgDAL.GetByCode((int)CodeEnum.成功), Data = sortedDictionary_res }); } return(new RESTfulModel() { Code = (int)CodeEnum.单失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.单失败), "err_code: " + sortedDictionary_from["err_code"].ToString() + ", err_code_des: " + sortedDictionary_from["err_code_des"].ToString()) }); } return(new RESTfulModel() { Code = (int)CodeEnum.Sign验证失败, Msg = codeMsgDAL.GetByCode((int)CodeEnum.Sign验证失败) }); } return(new RESTfulModel() { Code = (int)CodeEnum.通信异常, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.通信异常), "return_msg: " + sortedDictionary_from["return_msg"].ToString()) }); #endregion } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }
public RESTfulModel WXOrderQuery(string outTradeNo) { try { string url = "https://api.mch.weixin.qq.com/pay/orderquery"; #region 验证参数 RESTfulModel cv_OutTradeNo = ClientValidateOutTradeNo(outTradeNo); if (cv_OutTradeNo.Code != 0) { return(cv_OutTradeNo); } #endregion #region 验证商户订单是否存在 PayModel payModel = payDAL.GetByOutTradeNo(outTradeNo); if (payModel == null) { return(new RESTfulModel() { Code = (int)CodeEnum.商户订单号不存在, Msg = codeMsgDAL.GetByCode((int)CodeEnum.商户订单号不存在) }); } #endregion #region 获取微信签约信息 WXConfigModel wxConfigModel = wxConfigDAL.GetByAuthorizerAppID(payModel.AuthorizerAppID); if (wxConfigModel == null) { return(new RESTfulModel() { Code = (int)CodeEnum.平台号不存在, Msg = codeMsgDAL.GetByCode((int)CodeEnum.平台号不存在) }); } #endregion #region 优先判断本地支付状态 //if (payModel.PayState != (int)PayStateEnum.未支付) //{ // Dictionary<string, object> dic = new Dictionary<string, object>(); // dic.Add("code", (int)CodeEnum.成功); // dic.Add("msg", codeMsgDAL.GetByCode((int)CodeEnum.成功)); // dic.Add("outtradeno", payModel.OutTradeNo); // dic.Add("totalfee", payModel.TotalFee); // dic.Add("tradeno", payModel.TradeNo); // dic.Add("realfee", payModel.RealFee); // dic.Add("paytime", payModel.PayTime.ToString("yyyy-MM-dd HH:mm:ss")); // dic.Add("tradestate", payModel.TradeState); // JsonResult jsonResult = Json(dic; // LogHelper.Info_wx("Send Data To Client(本地): " + new JavaScriptSerializer().Serialize(jsonResult.Data)); // return jsonResult; //} #endregion SortedDictionary <string, object> sortedDictionary_to = new SortedDictionary <string, object>(); #region sortedDictionary_to装填参数 sortedDictionary_to["appid"] = wxConfigModel.AuthorizerAppID; sortedDictionary_to["mch_id"] = wxConfigModel.MCHID; sortedDictionary_to["out_trade_no"] = outTradeNo; sortedDictionary_to["nonce_str"] = NonceStrHelper.GenerateNonceStr(); #endregion #region &参数,得到sign string para_to = ""; if (sortedDictionary_to.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_to) { if (pair.Key != "sign" && pair.Value.ToString() != "") { para_to += pair.Key + "=" + pair.Value + "&"; } } } para_to += "key=" + wxConfigModel.KEY; var bs_to = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(para_to)); var sb_to = new StringBuilder(); foreach (byte b in bs_to) { sb_to.Append(b.ToString("x2")); } sortedDictionary_to["sign"] = sb_to.ToString().ToUpper(); #endregion #region 序列化xml string xml_to = "<xml>"; if (sortedDictionary_to.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_to) { if (pair.Value.GetType() == typeof(int)) { xml_to += "<" + pair.Key + ">" + pair.Value + "</" + pair.Key + ">"; } else if (pair.Value.GetType() == typeof(string)) { xml_to += "<" + pair.Key + ">" + "<![CDATA[" + pair.Value + "]]></" + pair.Key + ">"; } } } xml_to += "</xml>"; #endregion LogHelper.Info_wx("orderquery request: ", xml_to); #region 发请求 string xml_from = string.Empty; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((a, b, c, d) => { return(true); }); } request.Method = "POST"; request.ContentType = "text/xml"; byte[] bytes = System.Text.Encoding.UTF8.GetBytes(xml_to); Stream reqest_stream = request.GetRequestStream(); reqest_stream.Write(bytes, 0, bytes.Length); reqest_stream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); xml_from = streamReader.ReadToEnd().Trim(); #endregion LogHelper.Info_wx("orderquery response: ", xml_from); SortedDictionary <string, object> sortedDictionary_from = new SortedDictionary <string, object>(); #region 解析xml XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml_from); XmlNode xmlNode = xmlDoc.FirstChild;//获取到根节点<xml> XmlNodeList nodes = xmlNode.ChildNodes; foreach (XmlNode xn in nodes) { XmlElement xe = (XmlElement)xn; sortedDictionary_from[xe.Name] = xe.InnerText;//获取xml的键值对到WxPayData内部的数据中 } #endregion #region SUCCESS/FAIL(return_code) if ("SUCCESS" == sortedDictionary_from["return_code"].ToString()) { #region &参数,得到sign string para_from = ""; if (sortedDictionary_from.Count > 0) { foreach (KeyValuePair <string, object> pair in sortedDictionary_from) { if (pair.Key != "sign" && pair.Value.ToString() != "") { para_from += pair.Key + "=" + pair.Value + "&"; } } } para_from += "key=" + wxConfigModel.KEY; var bs_from = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(para_from)); var sb_from = new StringBuilder(); foreach (byte b in bs_from) { sb_from.Append(b.ToString("x2")); } string sign_from = sb_from.ToString().ToUpper(); #endregion #region 校验sign if (sign_from == sortedDictionary_from["sign"].ToString()) { #region SUCCESS/FAIL(result_code) if ("SUCCESS" == sortedDictionary_from["result_code"].ToString()) { if ("SUCCESS" == sortedDictionary_from["trade_state"].ToString()) { #region result_code == SUCCESS DateTime payTime; DateTime.TryParseExact(sortedDictionary_from["time_end"].ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out payTime); //payBLL.Update(sortedDictionary_from["out_trade_no"].ToString(), (int)PayTypeEnum.微信, sortedDictionary_from["transaction_id"].ToString(), sortedDictionary_from["cash_fee"].ToInt(), payTime, (int)PayStateEnum.支付成功, sortedDictionary_from["result_code"].ToString()); Dictionary <string, object> sortedDictionary_res = new Dictionary <string, object>(); sortedDictionary_res.Add("outtradeno", sortedDictionary_from["out_trade_no"].ToString()); sortedDictionary_res.Add("totalfee", sortedDictionary_from["total_fee"].ToInt()); sortedDictionary_res.Add("tradeno", sortedDictionary_from["transaction_id"].ToString()); sortedDictionary_res.Add("realfee", sortedDictionary_from["cash_fee"].ToInt()); sortedDictionary_res.Add("paytime", payTime.ToString("yyyy-MM-dd HH:mm:ss")); sortedDictionary_res.Add("tradestate", sortedDictionary_from["trade_state"].ToString()); return(new RESTfulModel() { Code = (int)CodeEnum.成功, Msg = codeMsgDAL.GetByCode((int)CodeEnum.成功), Data = sortedDictionary_res }); #endregion } else if ("NOTPAY" == sortedDictionary_from["trade_state"].ToString() || "USERPAYING" == sortedDictionary_from["trade_state"].ToString()) { return(new RESTfulModel() { Code = (int)CodeEnum.微信服务器返回订单未支付, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.微信服务器返回订单未支付), "trade_state : " + sortedDictionary_from["trade_state"].ToString() + ", trade_state_desc : " + sortedDictionary_from["trade_state_desc"].ToString()) }); } else if ("REFUND" == sortedDictionary_from["trade_state"].ToString()) { return(new RESTfulModel() { Code = (int)CodeEnum.微信服务器返回订单转入退款, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.微信服务器返回订单转入退款), sortedDictionary_from["trade_state"].ToString()) }); } else { return(new RESTfulModel() { Code = (int)CodeEnum.查单失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.查单失败), sortedDictionary_from["trade_state"].ToString() + ", trade_state_desc : " + sortedDictionary_from["trade_state_desc"].ToString()) }); } } else { // result_code == FAIL return(new RESTfulModel() { Code = (int)CodeEnum.查单失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.查单失败), sortedDictionary_from["err_code_des"].ToString()) }); } #endregion } #endregion return(new RESTfulModel() { Code = (int)CodeEnum.Sign验证失败, Msg = codeMsgDAL.GetByCode((int)CodeEnum.Sign验证失败) }); } else if ("ORDERNOTEXIST" == sortedDictionary_from["return_code"].ToString()) { return(new RESTfulModel() { Code = (int)CodeEnum.微信服务器返回订单号不存在, Msg = codeMsgDAL.GetByCode((int)CodeEnum.微信服务器返回订单号不存在) }); } #endregion return(new RESTfulModel() { Code = (int)CodeEnum.通信异常, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.通信异常), "return_msg: " + sortedDictionary_from["return_msg"].ToString()) }); } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }
public RESTfulModel SaveAuth(string authCode, int expiresIn, string userID) { try { DateTime authTime = DateTime.Now; #region 4、使用授权码换取公众号的接口调用凭据和授权信息 string componentAppID = ConfigHelper.ComponentAppId; string componentAccessToken = componentAccessTokenDAL.Get(); string url_4 = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=" + componentAccessToken; LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 url_4", url_4); // 4、使用授权码换取公众号的接口调用凭据和授权信息 AuthorizationInfoGetReq req_4 = new AuthorizationInfoGetReq(); req_4.ComponentAppId = componentAppID; req_4.AuthorizationCode = authCode; string requestBody_4 = JsonConvert.SerializeObject(req_4); LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 requestBody_4", requestBody_4); string responseBody_4 = HttpHelper.Post(url_4, requestBody_4); LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 responseBody_4", responseBody_4); AuthorizationInfoGetResp resp_4 = JsonConvert.DeserializeObject <AuthorizationInfoGetResp>(responseBody_4); #endregion #region 调用远程接口保存AccessToken信息 string url = ConfigHelper.DomainToken + "api/accesstoken/save"; LogHelper.Info("调用远程接口保存AccessToken信息 url", url); SaveAuthModel req = new SaveAuthModel() { AuthorizerAppID = resp_4.AuthorizationInfo.AuthorizerAppID, AuthorizerAccessToken = resp_4.AuthorizationInfo.AuthorizerAccessToken, ExpiresIn = resp_4.AuthorizationInfo.ExpiresIn, AuthorizerRefreshToken = resp_4.AuthorizationInfo.AuthorizerRefreshToken, AuthTime = authTime }; string requestBody = JsonConvert.SerializeObject(req); LogHelper.Info("调用远程接口保存AccessToken信息 requestBody", requestBody); string responseBody = HttpHelper.Post(url, requestBody); LogHelper.Info("调用远程接口保存AccessToken信息 responseBody", responseBody); RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody); #endregion if (resp.Code == 0) { #region 权限 // 删除权限 funcInfoDAL.Delete(resp_4.AuthorizationInfo.AuthorizerAppID); // 插入权限,不存在空集合 List <int> funcscopeCategoryIdList = resp_4.AuthorizationInfo.FuncInfo.Select(o => o.FuncscopeCategory.ID).ToList(); foreach (var funcscopeCategoryId in funcscopeCategoryIdList) { funcInfoDAL.Insert(resp_4.AuthorizationInfo.AuthorizerAppID, funcscopeCategoryId); } #endregion // 保存授权者信息 return(SaveAuthorizer(componentAppID, componentAccessToken, resp_4.AuthorizationInfo.AuthorizerAppID, userID, authTime)); } else { return(new RESTfulModel() { Code = (int)CodeEnum.保存授权信息失败, Msg = codeMsgDAL.GetByCode((int)CodeEnum.保存授权信息失败) }); } } catch (Exception ex) { LogHelper.Error(ex); return(new RESTfulModel() { Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常) }); } }