Есть ли разумный способ использовать два разных значения 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.





По собственному документация можно.
Отрывок:
с помощью 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, но это действительно помогло мне добраться туда.
У paypay тоже нет конфигурации на основе конструктора?