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 应该如何配置?

PayPal c# REST API 要求未记录的配置部分

我遇到了同样的错误。 我尝试了 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>

其中xxxyyyzzz您是从主沙盒测试帐户的"帐户详细信息"中获取的值。

如果您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>