运行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,WebAppSettings.PaypalClientId},WebAppSettings.PaypalClientSecret},"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; } }
我觉得我在这里错过了一些东西或者失去了理智.
解决方法
The URL to the API service
这些相同的URL可以在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/";
文档中也提到了.
In order to use the PayPal .NET SDK with your application,you will need to first configure your application. By default,the SDK will attempt to look for PayPal-specific settings in your application’s web.config or app.config file.
The following is a sample config file containing the configuration sections that are required in order for the settings to be used with this 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: Determines which PayPal endpoint URL will be used with your application. Possible values are
live
orsandBox
.
因此,看起来设置中的模式将确定在向API发出请求时SDK调用哪个端点URL.
回答你的问题.
Do I need to worry that the URI is embedded in the dll somewhere?
没有.
Would there be any reason to change it?
它们允许工具在设置中更改代码运行的模式,以便在执行时使用适当的enpoint URL.这意味着如果要对沙箱运行测试,则只需更改应用程序的模式设置即可.