using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; namespace AssetManager.Services.Services; public class WechatService { private readonly HttpClient _httpClient; private readonly string _appId; private readonly string _appSecret; public WechatService(HttpClient httpClient) { _httpClient = httpClient; // 完全从环境变量读取 _appId = Environment.GetEnvironmentVariable("Wechat__AppId") ?? "wx245f0f3ebcfcf5a7"; _appSecret = Environment.GetEnvironmentVariable("Wechat__AppSecret") ?? "809c740129bc8b434177ce12ef292dd0"; } public async Task GetOpenIdAsync(string code) { var url = $"https://api.weixin.qq.com/sns/jscode2session?appid={_appId}&secret={_appSecret}&js_code={code}&grant_type=authorization_code"; var response = await _httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize(content) ?? new WechatAuthResult(); } } public class WechatAuthResult { public string? OpenId { get; set; } public string? SessionKey { get; set; } public string? UnionId { get; set; } public int Errcode { get; set; } public string? Errmsg { get; set; } }