尝试在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,因此它不是防火墙问题。
任何其他线索?
答案 0 :(得分:3)
任何有同样问题的人,或者想知道哪个paypal sdk用于一个dotnet核心应用程序,这就是诀窍:
<PackageReference Include="PayPal.SDK.NETCore" Version="1.9.1.2" />