PayPal c# REST API 要求未记录的配置部分
本文关键字:记录 配置部 REST API PayPal | 更新日期: 2023-09-27 18:35:02
我在Battle Hack London上努力破解,我偶然遇到了一个烦人的问题。适用于 c# 的 PayPal SDK 似乎不太正确。
我正在尝试进行我的第一笔交易,这是我的代码(我将其放在一起修复损坏的在线文档:
var tokenCredential = new OAuthTokenCredential(something, someother);
var accessToken = tokenCredential.GetAccessToken();
Payment createdPayment = new Payment
{
intent = "sale",
transactions = new List<Transaction>
{
new Transaction
{
amount = new Amount
{
total = value.ToString("R"),
currency = "GBP"
},
description = forWhat
}
}
}.Create(accessToken);
这导致
无法解析 *。配置文件。确保您已正确配置"PayPal"部分。
我已经追溯到这行代码,但我不知道如何正确配置该部分,也找不到正确的文档。
csharp REST SDK 应该如何配置?
我遇到了同样的错误。 我尝试了 Skliwz 的解决方案,但它对我不起作用。
相反,我能够通过在调用中传递字典对象来获得结果。
Dictionary<string, string> payPalConfig = new Dictionary<string, string>();
payPalConfig.Add("mode", "sandbox");
OAuthTokenCredential tokenCredential = new AuthTokenCredential("myCliedId", "myClientSecret", payPalConfig);
string accessToken = tokenCredential.GetAccessToken();
仍在努力让我的登录工作...
PayPal开发人员的支持下解决了这个问题。需要补充:
<configSections>
<section name="paypal" type="PayPal.Manager.SDKConfigHandler, PayPalCoreSDK"/>
</configSections>
<paypal>
<accounts>
<account apiUsername="xxx"
apiPassword="yyy"
applicationId="APP-80W284485P519543T"
apiSignature="zzz"
/>
</accounts>
<settings>
<add name="mode" value="sandbox"/>
</settings>
</paypal>
其中xxx
、yyy
、zzz
您是从主沙盒测试帐户的"帐户详细信息"中获取的值。
如果您PayPal使用的是 .Net SDK(我的版本是 1.3.0(,您只需要以下内容:
<configSections>
<section name="paypal" type="PayPal.SDKConfigHandler, PayPal" />
</configSections>
<paypal>
<settings>
<add name="mode" value="sandbox" />
</settings>
</paypal>
如果你像我一样,不想将客户端信息存储在 *.config 文件(web.config、app.config(中,我发现你可以在字典中指定它,你必须传递给 OAuthTokenCredential 并分配给 APIContext.Config(工作键(:
var clientId = "___REPLACE_WITH_CLIENTID___";
var clientSecret = "___REPLACE_WITH_CLIENTSECRET___";
var sdkConfig = new Dictionary<string, string> {
{ "mode", "sandbox" },
{ "clientId", clientId },
{ "clientSecret", clientSecret }
};
var accessToken = new OAuthTokenCredential(clientId, clientSecret, sdkConfig).GetAccessToken();
var apiContext = new APIContext(accessToken);
apiContext.Config = sdkConfig;
必须将其传递到OAuthTokenCredential并将其设置为apiContext.Config似乎有点多余,但这对我有用。
仅供将来参考,PayPal .NET SDK 的可用配置设置现在在 SDK 的 GitHub wiki 上提供。 这包括有关所有受支持的PayPal配置设置及其默认值的信息。
Wiki 还包括有关如何(可选(在配置中设置 log4net 的信息,如果您想使用应用程序启用日志记录。
如果缺少任何信息或需要澄清,或者如果您想请求对更多配置设置的支持,请随时在此处或 GitHub 上告诉我。
var config = ConfigManager.Instance.GetProperties();
// Use OAuthTokenCredential to request an access token from PayPal
var accessToken = new OAuthTokenCredential(config).GetAccessToken();
网页配置:
<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>