dotnet core paypal GetAccessToken返回401 for live,但适用于沙盒

时间:2018-06-07 16:10:44

标签: asp.net-core paypal

尝试在asp.net核心网站上使用paypal,但我无法获得访问令牌,我一直收到PayPal.HttpException:远程服务器返回错误:(401)未经授权。

这是有问题的代码部分:

        Dictionary<string, string> configurationMap = new Dictionary<string, string>();
        configurationMap.Add("clientId", _options.PayPalClientId);
        configurationMap.Add("clientSecret", _options.PayPalClientSecret);
        configurationMap.Add("mode", _options.PayPalMode);

        _logger.Info($"paypal data: mode={_options.PayPalMode}, client id={_options.PayPalClientId}");
        var accessToken = new OAuthTokenCredential(_options.PayPalClientId, _options.PayPalClientSecret, configurationMap).GetAccessToken();
        var apiContext = new APIContext(accessToken) { Config = configurationMap };

我使用的nuget包是:

<PackageReference Include="PayPal" Version="2.0.0-rc2"/>
<PackageReference Include="PayPalCore" Version="1.0.0"/>

查看日志以确保mode = live并且clientId是实时的(所以我确定秘密也正确加载了)。

此代码在我的工作站和我的开发服务器(运行IIS&amp; kestrel)上运行正常,使用沙箱clientId / secret。 但是,在AWS的生产服务器上,我收到此错误。 在AWS Windows服务器上运行postman以确保它可以与paypal的api工作通信,我可以获得accessstoken,因此它不是防火墙问题。

任何其他线索?

1 个答案:

答案 0 :(得分:3)

任何有同样问题的人,或者想知道哪个paypal sdk用于一个dotnet核心应用程序,这就是诀窍:

<PackageReference Include="PayPal.SDK.NETCore" Version="1.9.1.2" />