Могу ли я использовать два разных значения clientId и clientSecret в файле app.config с API PayPal в C#?

Есть ли разумный способ использовать два разных значения clientId и clientSecret в одном приложении C# Winforms?

Вот почему я хочу это сделать: у меня есть внутреннее приложение компании, которое выполняет возврат средств PayPal для клиентов - некоторые из них поступают из нашей учетной записи PayPal в США, а некоторые - из нашей учетной записи PayPal в Великобритании. Поскольку они из разных учетных записей, мне нужно будет создать два приложения PayPal и получить два разных набора безопасных значений clientId и clientSecret. Мне бы очень хотелось, чтобы приложение Winforms могло возмещать любую учетную запись, но на данный момент мне удалось выполнить возврат только с помощью API PayPal в сочетании со следующим кодом в файле app.config.

  <!-- PayPal SDK settings -->
  <paypal>
    <settings>
      <add name = "mode" value = "live" />
      <add name = "clientId" value = "AZxxxxxxxxxxxxxxxxx" />
      <add name = "clientSecret" value = "ELxxxxxxxxxxxxxxxxxxxxxxxxxx" />
    </settings>
  </paypal>

Если придется, я создам отдельное заявление на возмещение для нашей учетной записи в Великобритании, но похоже, что должен быть разумный способ сделать это в рамках одного приложения.

Насколько я могу судить, хотя могут быть некоторые способы изменить файл app.config, все, кажется, говорят, что это ужасная идея, и даже если вам удалось это сделать, ваше приложение перезапустится.

Итак, я предполагаю, что я спрашиваю, есть ли способ изменить значение clientId и clientSecret во время выполнения, не вызывая фактического перезапуска программы? Или, в качестве альтернативы, существует ли другой метод получения доступа к API PayPal, который позволит мне указать clientId и clientSecret во время выполнения?


Обновление - прочитав ответ Эрика Филипа ниже, я попытался закомментировать clientId и clientSecret в моем файле app.config, а затем вместо этого кода авторизоваться:

    var config = ConfigManager.Instance.GetProperties();
    var accessToken = new OAuthTokenCredential(config).GetAccessToken();
    var apiContext = new APIContext(accessToken);

Вместо этого я добавил это:

    var config = ConfigManager.Instance.GetProperties();
    config.Add("clientId", "AZxxxxxxxxxxxxxxxxxxxxxxxxx");
    config.Add("clientSecret", "ELxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    var accessToken = new OAuthTokenCredential(config).GetAccessToken();
    var apiContext = new APIContext(accessToken);

Это отлично сработало, позже я добавил туда оператор if (), чтобы проверить, является ли это заказ в Великобритании или нет, и соответственно изменил clientId и clientSecret.

У paypay тоже нет конфигурации на основе конструктора?

Sebastian 506563 10.03.2018 00:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
217
1

Ответы 1

По собственному документация можно.

Отрывок:

с помощью PayPal.Api;

// Get a reference to the config
var config = ConfigManager.Instance.GetProperties();

// Use OAuthTokenCredential to request an access token from PayPal
var accessToken = new OAuthTokenCredential(config).GetAccessToken();

Поскольку ConfigManager создает экземпляр, вы можете либо создать свой собственный экземпляр, либо взять этот экземпляр и соответствующим образом изменить его.

Спасибо! Думаю, это наставило меня на правильный путь! Я новичок в C# и до сих пор плохо разбираюсь в таких вещах, как файлы app.config, но это действительно помогло мне добраться туда.

Alan Denke 10.03.2018 02:18

Другие вопросы по теме