PayPal REST API DotNet SDK 1.9.1 - где находится конечная точка URI? - PullRequest
0 голосов
/ 24 мая 2018

Я установил PayPal Dotnet REST SDK 1.9.1 в тестовое приложение и все заработало нормально (никаких проблем).Но заметил, что конечная точка не указана (и мне не нужно было ее указывать), поэтому я предполагаю, что она где-то хранится ( paypal.dll ?).

Запуск кода SDKПример (взятый с сайта разработчиков PayPal), по-видимому, генерирует 3 ссылки автоматически.

Нужно ли беспокоиться о том, что URI где-то встроен в dll ?

Будет лиесть ли причина изменить его?

***** РЕДАКТИРОВАТЬ ******* Вот код, который я использую для получения APIContext - Кто-нибудь видит проблему с этим кодом?Независимо от того, что я добавляю для конечной точки (или режима, или «что у тебя есть»), SDK всегда использует конечную точку песочницы.Настоящее безумие здесь в том, что он принимает LIVE ClientId и Secret (поэтому он точно подключается к конечной точке LIVE), но любые дальнейшие запросы ВСЕГДА направляются в конечную точку песочницы.ПРИМЕЧАНИЕ. Эта функция вызывается только один раз, а контекст просто передается другим функциям / вызовам / тому, что у вас есть.Я даже настроил его так, чтобы он передавался по ссылке без радости.

public static PayPal.Api.APIContext GetPaypalRestAPIContext()
{
    try
    {
        Dictionary<string, string> config = null;
        if (WebAppSettings.PaypalMode.ToLower != "live")
        {
            config = new Dictionary<string, string>()
            {
                {"mode", WebAppSettings.PaypalMode.ToLower},
                {"clientId", WebAppSettings.PaypalTestClientId},
                {"clientSecret", WebAppSettings.PaypalTestClientSecret},
                {"endpoint", "https://api.sandbox.paypal.com/"}
            };
        }
        else
        {
            config = new Dictionary<string, string>()
            {
                {"mode", WebAppSettings.PaypalMode.ToLower},
                {"clientId", WebAppSettings.PaypalClientId},
                {"clientSecret", WebAppSettings.PaypalClientSecret},
                {"endpoint", "https://api.paypal.com/"}
            };
        }

        string accessToken = (new PayPal.Api.OAuthTokenCredential(config)).GetAccessToken();
        PayPal.Api.APIContext apiContext = new PayPal.Api.APIContext(accessToken);

        return apiContext;
    }
    catch (Exception ex)
    {
        EventLog.LogEvent("Paypal APIContext", "PaypalRestAPIContext has failed.", EventLogSeverity.Warning);
        return null;
    }

}

Мне кажется, что я что-то здесь упускаю или схожу с ума.

1 Ответ

0 голосов
/ 02 июня 2018

Согласно справочной документации API

URL-адрес службы API

  • Песочница.https://api.sandbox.paypal.com
  • Live.https://api.paypal.com

Эти же URL-адреса находятся в GitHub Repository SDK в классе BaseConstants, что означает, что они фактически встроены / Hard-кодированный в SDK

/// <summary>
/// Sandbox REST API endpoint
/// </summary>
public const string RESTSandboxEndpoint = "https://api.sandbox.paypal.com/";

/// <summary>
/// Live REST API endpoint
/// </summary>
public const string RESTLiveEndpoint = "https://api.paypal.com/";

/// <summary>
/// Security Test Sandbox REST API endpoint
/// </summary>
public const string RESTSecurityTestSandoxEndpoint = "https://test-api.sandbox.paypal.com/";

, который подтвердил бы, что 3 ссылки "генерируются" с помощью SDK.

В документации также упоминается.

Чтобы использовать PayPal .NET SDK с вашим приложением, вам необходимо сначала настроить приложение.По умолчанию SDK пытается найти параметры, специфичные для PayPal, в файле web.config или app.config вашего приложения.

Параметры конфигурации PayPal

Ниже приведен пример файла конфигурации, содержащий разделы конфигурации, необходимые для использования параметров с этим SDK:

<configuration>
  <configSections>
    <section name="paypal" type="PayPal.SDKConfigHandler, PayPal" />
  </configSections>

  <!-- PayPal SDK settings -->
  <paypal>
    <settings>
      <add name="mode" value="sandbox"/>
      <add name="clientId" value="_client_Id_"/>
      <add name="clientSecret" value="_client_secret_"/>
    </settings>
  </paypal>
</configuration>

mode : определяет, какой URL-адрес конечной точки PayPal будет использоваться с вашим приложением.Возможные значения: live или sandbox.

Таким образом, похоже, что mode в настройках будет определять, какой URL-адрес конечной точки вызывается SDK при запросах к API.

Чтобы ответить на ваши вопросы.

Нужно ли беспокоиться, что URI где-то встроен в dll?

Нет.

Существуют ли какие-либо причины для его изменения?

Они позволяют объекту изменять режим, в котором работает кодв настройке, чтобы он использовал соответствующий URL-адрес enpoint при выполнении.Это означает, что если вы хотите запустить тест в песочнице, просто измените настройку режима приложения.

...