/** * * 通过code换取网页授权access_token和openid的返回数据,正确时返回的JSON数据包如下: * { * "access_token":"ACCESS_TOKEN", * "expires_in":7200, * "refresh_token":"REFRESH_TOKEN", * "openid":"OPENID", * "scope":"SCOPE", * "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" * } * 其中access_token可用于获取共享收货地址 * openid是微信支付jsapi支付接口统一下单时必须的参数 * 更详细的说明请参考网页授权获取用户基本信息:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html * @失败时抛异常WxPayException */ public void GetOpenidAndAccessTokenFromCode(string code) { try { //构造获取openid及access_token的url WxPayData data = new WxPayData(); data.SetValue("appid", jsApiConfig.AppId); data.SetValue("secret", jsApiConfig.AppSecret); data.SetValue("code", code); data.SetValue("grant_type", "authorization_code"); string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl(); //请求url以获取数据 string result = HttpService.Get(url); OwinTokenDto model = SerializationHelper.JsonToObject <OwinTokenDto>(result); //保存access_token,用于收货地址获取 access_token = model.Access_Token; //获取用户openid openid = model.OpenId; } catch (Exception ex) { throw new WxPayException(ex.ToString()); } }
public OwinUserDto GetUserDto(OwinConfig owinConfig, OwinTokenDto owinTokenDto) { //https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID string strUri = GetUserUri(owinConfig, owinTokenDto); return(HttpHelper.Get <OwinUserDto>(strUri)); }
public OwinUserDto GetUserDto(OwinConfig owinConfig, string strCode) { OwinTokenDto owinTokenDto = GetTokenDto(owinConfig, strCode); if (owinTokenDto.ErrCode.HasValue) { return(new OwinUserDto { ErrCode = owinTokenDto.ErrCode, ErrMsg = owinTokenDto.ErrMsg }); } return(GetUserDto(owinConfig, owinTokenDto)); }
public string GetUserUri(string strName, OwinTokenDto owinTokenDto) { OwinConfig config = GetByName(strName); return(GetUserUri(config, owinTokenDto)); }
public async Task <bool> Login(string strOwinConfigName, string strOwinState, string strOwinCode, string strSessionName = "Mob") { MobMemberHelper helper = new MobMemberHelper(); Member member = null; if (!SystemConfigModel.Instance.IsUseWechatLogin) { member = new Member(); if (!(await helper.SaveAsync(member))) { return(false); } return(true); } if (!SessionHelper.Owin.IsValid(strOwinState)) { return(false); } OwinConfig config = GetByName(strOwinConfigName); OwinTokenDto owinTokenDto = GetTokenDto(config, strOwinCode); if (!owinTokenDto.ErrCode.HasValue) { member = helper.GetDbSet <Member>().Where(o => o.OpenId == owinTokenDto.OpenId).FirstOrDefault(); if (member != null) { member.Name = ""; SetSession(member); return(true); } } OwinUserDto owinDto = GetUserDto(config, owinTokenDto); if (owinDto.ErrCode.HasValue) { LogHelper.Error(owinDto.ErrCode + ":" + owinDto.ErrMsg); return(false); } if (member == null) { member = helper.GetDbSet <Member>().Where(o => o.OpenId == owinTokenDto.OpenId).FirstOrDefault(); } if (member == null) { member = new Member { OpenId = owinDto.OpenId, }; } member.NickName = owinDto.NickName; member.Avatar = owinDto.HeadImgUrl; member.Sex = owinDto.Sex == "1" ? Sex.Male : Sex.Male; member.ShareCode = await GetShareCodeAsync(); if (!(await helper.SaveAsync(member))) { return(false); } string strShareCode = SessionHelper.ShareCode.GetSession <string>(); if (!string.IsNullOrEmpty(strShareCode)) { await helper.SetMemberReferee(member, strShareCode); } return(true); }
public string GetUserUri(OwinConfig config, OwinTokenDto owinTokenDto) { string strUri = TypeHelper.FillContent <OwinConfig>(config, config.UserInfoUri); return(TypeHelper.FillContent <OwinTokenDto>(owinTokenDto, strUri)); }