代码之家  ›  专栏  ›  技术社区  ›  MC9000

PayPal REST API dotNETSDK 1.91- URI端点在哪里?

  •  8
  • MC9000  · 技术社区  · 6 年前

    我把Paypal DoNETREST SDK 1.91安装到一个测试应用程序中,使所有的工作都很好(根本没有问题)。但是注意到端点没有指定(我也不需要指定它),所以我假定它存储在某个地方( 贝宝.dll ?).

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

    我需要担心URI是否嵌入到 动态链接库 在什么地方?

    有什么理由改变它吗?

    *****编辑******* 这是我用来获取apicontext的代码——有人看到这个代码有问题吗?无论我为端点(或模式,或您有什么)输入什么,SDK总是使用沙盒端点。这里真正的疯狂之处在于它接受了实时的clientid和secret(因此它确实连接到了实时端点),但是任何进一步的请求总是指向沙盒端点。注意:这个函数只被调用一次,上下文只被传递给其他函数/调用/你拥有什么。我甚至把它设置成毫无乐趣地通过参考。

    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 回复  |  直到 6 年前
        1
  •  6
  •   Nkosi    6 年前

    根据 API reference documentation

    API服务的URL

    • 沙盒。 https://api.sandbox.paypal.com
    • 现场直播。 https://api.paypal.com

    GitHub Repository of the SDK BaseConstants 类,这意味着它们实际上是嵌入/硬编码在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.NETSDK,您需要首先配置应用程序。默认情况下,SDK将尝试在应用程序中查找PayPal特定设置。 web.config文件 应用程序配置 文件。

    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。可能的值是 live sandbox .

    所以看起来像 mode 在设置中,将确定当向API发出请求时,SDK调用哪个端点URL。

    回答你的问题。

    我是否需要担心URI是否嵌入到dll中的某个位置?

    不。

    有什么理由改变它吗?

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