PayPal REST API DotNet SDK 1.9.1 - URI端点在哪里?

时间:2018-05-23 21:33:23

标签: asp.net paypal paypal-rest-sdk

我将PayPal Dotnet REST SDK 1.9.1安装到测试应用程序中并使一切工作正常(完全没有问题)。但是注意到端点没有被指定(我也不需要指定它),所以我认为它存储在某个地方( paypal.dll ?)。

运行SDK代码示例(取自PayPal的开发者网站)似乎会自动生成3个链接。

我是否需要担心URI嵌入在 dll 的某个地方?

有没有理由改变它?

*****编辑******* 这是我用来获取APIContext的代码 - 有没有人看到这段代码的问题?无论我为端点(或模式,或者你有什么)投入什么,SDK总是使用沙箱端点。这里真正的疯狂是它接受了LIVE ClientId和Secret(因此它肯定会连接到LIVE端点),但是任何进一步的请求都始终是沙箱端点。注意:此函数仅调用一次,Context仅传递给其他函数/调用/ what-have-you。我甚至把它设置为通过参考而没有快乐。

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 :(得分:6)

根据API reference documentation

  

API服务的URL

     
      
  • 沙箱。 https://api.sandbox.paypal.com
  •   
  • 现场。 https://api.paypal.com
  •   

这些相同的网址位于BaseConstants类的GitHub Repository of the SDK中,这意味着它们实际上是在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/";

这将证实SDK观察到3个链接“生成”

文档中也提到了。

  

要将PayPal .NET SDK与您的应用程序一起使用,您需要先配置您的应用程序。默认情况下,SDK将尝试在应用程序的 web.config app.config 文件中查找特定于PayPal的设置。

PayPal Config Settings

  

以下是一个示例配置文件,其中包含设置与此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>
  

模式:确定将与您的应用程序一起使用的PayPal端点URL。可能的值为livesandbox

因此看起来设置中的mode将确定在向API发出请求时SDK调用哪个端点URL。

回答你的问题。

  

我是否需要担心URI是否嵌入在某个地方的dll中?

没有

  

有没有理由改变它?

它们允许工具在设置中更改代码运行的模式,以便在执行时使用适当的enpoint URL。这意味着如果要对沙箱运行测试,则只需更改应用程序的模式设置。