아임포트 HTTP 클라이언트 구성 옵션을 정의하는 클래스입니다.
 public PaymentController(
     IPaymentsApi paymentsApi,
     CheckoutRepository checkoutRepository,
     PaymentRepository paymentRepository,
     IamportHttpClientOptions clientOptions)
 {
     if (paymentsApi == null)
     {
         throw new ArgumentNullException(nameof(paymentsApi));
     }
     if (checkoutRepository == null)
     {
         throw new ArgumentNullException(nameof(checkoutRepository));
     }
     if (paymentRepository == null)
     {
         throw new ArgumentNullException(nameof(paymentRepository));
     }
     if (clientOptions == null)
     {
         throw new ArgumentNullException(nameof(clientOptions));
     }
     this.paymentsApi = paymentsApi;
     this.checkoutRepository = checkoutRepository;
     this.paymentRepository = paymentRepository;
     iamportId = clientOptions.IamportId;
 }
 /// <summary>
 /// ConfigurationManager에서 아임포트 설정을 반환합니다.
 /// </summary>
 /// <returns>아임포트 설정</returns>
 private static IamportHttpClientOptions GetHttpClientOptions()
 {
     var apiKey = ConfigurationManager.AppSettings["iamport:ApiKey"];
     var apiSecret = ConfigurationManager.AppSettings["iamport:ApiSecret"];
     var iamportId = ConfigurationManager.AppSettings["iamport:IamportId"];
     var baseUrl = ConfigurationManager.AppSettings["iamport:BaseUrl"];
     var authorizationHeaderName = ConfigurationManager.AppSettings["iamport:AuthorizationHeaderName"];
     var options = new IamportHttpClientOptions();
     if (!string.IsNullOrEmpty(apiKey))
     {
         options.ApiKey = apiKey;
     }
     if (!string.IsNullOrEmpty(apiSecret))
     {
         options.ApiSecret = apiSecret;
     }
     if (!string.IsNullOrEmpty(iamportId))
     {
         options.IamportId = iamportId;
     }
     if (!string.IsNullOrEmpty(baseUrl))
     {
         options.BaseUrl = baseUrl;
     }
     if (!string.IsNullOrEmpty(authorizationHeaderName))
     {
         options.AuthorizationHeaderName = authorizationHeaderName;
     }
     return options;
 }
 public CheckoutController(
     CheckoutRepository checkoutRepository,
     IamportHttpClientOptions clientOptions)
 {
     if (checkoutRepository == null)
     {
         throw new ArgumentNullException(nameof(checkoutRepository));
     }
     if (clientOptions == null)
     {
         throw new ArgumentNullException(nameof(clientOptions));
     }
     this.checkoutRepository = checkoutRepository;
     this.clientOptions = clientOptions;
 }
        /// <summary>
        /// 주어진 옵션과 HttpClient로 인스턴스를 초기화합니다.
        /// </summary>
        /// <param name="options">아임포트 클라이언트의 옵션</param>
        /// <param name="httpClient">HTTP 클라이언트의 인스턴스</param>
        public IamportHttpClient(IamportHttpClientOptions options, HttpClient httpClient)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (httpClient == null)
            {
                throw new ArgumentNullException(nameof(httpClient));
            }
            options.Validate();
            this.options = options;

            httpClient.BaseAddress = new Uri(options.BaseUrl, UriKind.Absolute);
            this.httpClient        = httpClient;
        }
 /// <summary>
 /// 주어진 옵션으로 인스턴스를 초기화합니다.
 /// </summary>
 /// <param name="options">아임포트 클라이언트의 옵션.</param>
 public IamportHttpClient(IamportHttpClientOptions options)
     : this(options, GetDefaultHttpClient())
 {
 }