| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // 大名科技(天津)有限公司 版权所有
- //
- // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
- //
- // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动
- //
- // 任何基于本项目二次开发而产生的一切法律纠纷和责任,均与作者无关
- using Newtonsoft.Json;
- namespace Admin.NET.Core.Service;
- /// <summary>
- /// 微信API客户端
- /// </summary>
- public partial class WechatApiClientFactory : ISingleton
- {
- private readonly IHttpClientFactory _httpClientFactory;
- public readonly WechatOptions _wechatOptions;
- public WechatApiClientFactory(IHttpClientFactory httpClientFactory, IOptions<WechatOptions> wechatOptions)
- {
- _httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
- _wechatOptions = wechatOptions.Value ?? throw new ArgumentNullException(nameof(wechatOptions));
- }
- /// <summary>
- /// 微信公众号
- /// </summary>
- /// <returns></returns>
- public WechatApiClient CreateWechatClient()
- {
- if (string.IsNullOrEmpty(_wechatOptions.WechatAppId) || string.IsNullOrEmpty(_wechatOptions.WechatAppSecret))
- throw Oops.Oh("微信公众号配置错误");
- var client = WechatApiClientBuilder.Create(new WechatApiClientOptions()
- {
- AppId = _wechatOptions.WechatAppId,
- AppSecret = _wechatOptions.WechatAppSecret,
- })
- .UseHttpClient(_httpClientFactory.CreateClient(), disposeClient: false) // 设置 HttpClient 不随客户端一同销毁
- .Build();
- client.Configure(config =>
- {
- JsonSerializerSettings jsonSerializerSettings = NewtonsoftJsonSerializer.GetDefaultSerializerSettings();
- jsonSerializerSettings.Formatting = Formatting.Indented;
- config.JsonSerializer = new NewtonsoftJsonSerializer(jsonSerializerSettings); // 指定 System.Text.Json JSON序列化
- // config.JsonSerializer = new SystemTextJsonSerializer(jsonSerializerOptions); // 指定 Newtonsoft.Json JSON序列化
- });
- return client;
- }
- /// <summary>
- /// 微信小程序
- /// </summary>
- /// <returns></returns>
- public WechatApiClient CreateWxOpenClient()
- {
- if (string.IsNullOrEmpty(_wechatOptions.WxOpenAppId) || string.IsNullOrEmpty(_wechatOptions.WxOpenAppSecret))
- throw Oops.Oh("微信小程序配置错误");
- var client = WechatApiClientBuilder.Create(new WechatApiClientOptions()
- {
- AppId = _wechatOptions.WxOpenAppId,
- AppSecret = _wechatOptions.WxOpenAppSecret
- })
- .UseHttpClient(_httpClientFactory.CreateClient(), disposeClient: false) // 设置 HttpClient 不随客户端一同销毁
- .Build();
- client.Configure(config =>
- {
- JsonSerializerSettings jsonSerializerSettings = NewtonsoftJsonSerializer.GetDefaultSerializerSettings();
- jsonSerializerSettings.Formatting = Formatting.Indented;
- config.JsonSerializer = new NewtonsoftJsonSerializer(jsonSerializerSettings); // 指定 System.Text.Json JSON序列化
- // config.JsonSerializer = new SystemTextJsonSerializer(jsonSerializerOptions); // 指定 Newtonsoft.Json JSON序列化
- });
- return client;
- }
- }
|