diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/WechatTenpayClientBuilder.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/WechatTenpayClientBuilder.cs
new file mode 100644
index 00000000..3e2cd04c
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/WechatTenpayClientBuilder.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
+{
+ ///
+ /// 用于构造 实例的构造器。
+ ///
+ public partial class WechatTenpayClientBuilder : ICommonClientBuilder
+ {
+ private readonly WechatTenpayClientOptions _options;
+ private readonly IList> _configures;
+ private readonly IList _interceptors;
+ private HttpClient? _httpClient;
+ private bool? _disposeClient;
+
+ private WechatTenpayClientBuilder(WechatTenpayClientOptions options)
+ {
+ _options = options;
+ _configures = new List>();
+ _interceptors = new List();
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.ConfigureSettings(Action configure)
+ {
+ return ConfigureSettings(configure);
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.UseInterceptor(HttpInterceptor interceptor)
+ {
+ return UseInterceptor(interceptor);
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.UseHttpClient(HttpClient httpClient, bool disposeClient)
+ {
+ return UseHttpClient(httpClient, disposeClient);
+ }
+
+ public WechatTenpayClientBuilder ConfigureSettings(Action configure)
+ {
+ if (configure is null) throw new ArgumentNullException(nameof(configure));
+
+ _configures.Add(configure);
+ return this;
+ }
+
+ public WechatTenpayClientBuilder UseInterceptor(HttpInterceptor interceptor)
+ {
+ if (interceptor is null) throw new ArgumentNullException(nameof(interceptor));
+
+ _interceptors.Add(interceptor);
+ return this;
+ }
+
+ public WechatTenpayClientBuilder UseHttpClient(HttpClient httpClient, bool disposeClient = true)
+ {
+ if (httpClient is null) throw new ArgumentNullException(nameof(httpClient));
+
+ _httpClient = httpClient;
+ _disposeClient = disposeClient;
+ return this;
+ }
+
+ public WechatTenpayClient Build()
+ {
+ WechatTenpayClient client = _disposeClient.HasValue
+ ? new WechatTenpayClient(_options, _httpClient, _disposeClient.Value)
+ : new WechatTenpayClient(_options, _httpClient);
+
+ foreach (Action configure in _configures)
+ {
+ client.Configure(configure);
+ }
+
+ foreach (HttpInterceptor interceptor in _interceptors)
+ {
+ client.Interceptors.Add(interceptor);
+ }
+
+ return client;
+ }
+ }
+
+ partial class WechatTenpayClientBuilder
+ {
+ public static WechatTenpayClientBuilder Create(WechatTenpayClientOptions options)
+ {
+ if (options is null) throw new ArgumentNullException(nameof(options));
+
+ return new WechatTenpayClientBuilder(options);
+ }
+ }
+}