asp.net-core - dotnet core paypal GetAccessToken 实时返回 401,但适用于沙盒
问题描述
尝试在 asp.net 核心网站上使用 paypal,但我无法获得访问令牌,我不断收到 PayPal.HttpException: The remote server returned an error: (401) Unauthorized.
这是有问题的代码部分:
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 是 live 的(所以我确信秘密也被正确加载)。
这段代码在我的工作站和我的开发服务器(运行 IIS 和 kestrel)上运行良好,使用沙盒 clientId/secret。但是,在 AWS 的生产服务器上,我收到此错误。在 AWS windows 服务器上运行 postman 以确保它可以与 paypal 的 api 进行通信,我可以获得 accesstoken,所以这不是防火墙问题。
还有其他线索吗?
解决方案
对于任何有同样问题的人,或者想知道将哪个 paypal sdk 用于 dotnet 核心应用程序,这就是诀窍:
<PackageReference Include="PayPal.SDK.NETCore" Version="1.9.1.2" />
推荐阅读
- scala - scala - 将序列号添加到 xml 元素
- php - PHP文本框替换为变量
- asterisk - Asterisk-Java 找不到 fastagi-mapping.properties
- python-3.x - 如何为 Lex 机器人运行时获取 PostText API 调用的授权用户
- angularjs - angularjs树视图不起作用,出现模块错误
- angular - 带有内部地图订阅的Angular2 rxjs switchMap发出多个可观察的
- mysql - MySQL MATCH AGAINST 搜索电子邮件地址时
- gemfire - Gemfire 日志中的客户端超时
- java - 我们可以覆盖静态方法吗?为什么输出是这样的?
- vb.net - 程序在 C:\ 但不是 E:\