Ejemplo n.º 1
0
        public async Task should_verify_wechat_account()
        {
            var verifyResult = await _normalChatyApiService.VerifyWeChatAccount("839425");

            Assert.Equal(1, _httpClient.RequestsSent.Count);
            Assert.Contains(_httpClient.RequestsSent, req => req.Method == HttpMethod.Post && req.RequestUri.PathAndQuery == "/bot/pair");

            Assert.NotNull(verifyResult);
            Assert.Equal("wx_l09d", verifyResult.Id);
        }
Ejemplo n.º 2
0
        public async Task <ApiResponse> VerifyWeChatAccountByCode([FromForm] string code)
        {
            var verifyResult = await _chatyApiService.VerifyWeChatAccount(code);

            if (verifyResult == null)
            {
                return(ApiResponse.NoContent(HttpStatusCode.InternalServerError));
            }

            var user = HttpContext.DiscussionUser();

            if (verifyResult.Id == null)
            {
                _logger.LogWarning("验证微信账号失败:{@WeChatAccountVerification}", new { user.UserName, UserId = user.Id, Code = code, Result = "验证码不正确或已过期" });
                return(ApiResponse.Error("验证失败"));
            }

            _logger.LogInformation("验证微信账号成功:{@WeChatAccountVerification}", new { user.UserName, UserId = user.Id, Code = code });
            var weChatAccount = _wechatAccountRepo.All().FirstOrDefault(wxa => wxa.WxId == verifyResult.Id && wxa.UserId == 0);

            if (weChatAccount == null)
            {
                weChatAccount = new WeChatAccount()
                {
                    WxId      = verifyResult.Id,
                    UserId    = user.Id,
                    WxAccount = verifyResult.Weixin
                };
                _wechatAccountRepo.Save(weChatAccount);
            }
            else
            {
                weChatAccount.UserId    = user.Id;
                weChatAccount.WxAccount = verifyResult.Weixin;
                _wechatAccountRepo.Save(weChatAccount);
            }

            return(ApiResponse.NoContent());
        }