gpt4 book ai didi

c# - 在 Sandbox 中一切正常,但我使用 PayPal Live 得到 IdentityException

转载 作者:太空狗 更新时间:2023-10-30 00:48:25 25 4
gpt4 key购买 nike

我正在使用 .NET SDK ( https://www.nuget.org/packages/PayPal) 使用 PayPal REST API 将 PayPal 支付集成到我的网站中。我的网站在 Microsoft Azure 中作为应用服务运行。我有一个配置为使用 PayPal 沙盒的测试槽,以及一个使用 Live 凭据的生产槽(配置设置位于应用程序设置中,并且是特定于槽的)。

在 Sandbox 中一切正常,我能够使用实时配置进行身份验证并获取访问 token ,但是当我尝试处理任何内容时,我得到一个 PayPal.IdentityException(我尝试将 Payments 作为以及计费计划和协议(protocol))。如果我查看 IdentityException Response(或 Details),我会得到:

{"error":"invalid_token","error_description":"The token passed in was not found in the system"}

进一步挖掘,似乎创建的 ApiContext 设置了 AccessToken,但 Config 属性为 null。如果我查看 API 请求(来自 PayPalResource.LastRequestDetails.Value),我发现即使它使用实时配置,它也会将请求发送到 api.sandbox.paypal.com,而不是实时 API .这似乎是我的 ApiContext 的问题,我按如下方式建立:

public static APIContext Authenticate()
{
string clientId = ConfigurationManager.AppSettings["PayPalClientId"];
string clientSecret = ConfigurationManager.AppSettings["PayPalSecret"];
string mode = ConfigurationManager.AppSettings["PayPalMode"];

var config = new Dictionary<string, string>();
config.Add("mode", mode);
config.Add("clientId", clientId);
config.Add("clientSecret", clientSecret);

accessToken = new OAuthTokenCredential(config).GetAccessToken();
return new APIContext(accessToken); // <--- problem here
}

除了手动构建 Config 字典而不是使用 ConfigManager 从自定义配置部分自动创建它之外,这非常接近 .NET SDK 文档。我做错了什么?

最佳答案

这里的问题是所有传递给 APIContext 构造函数的都是 accessToken。如果没有 Web.configApp.config 的自定义配置部分中的设置,APIContext 默认使用沙箱 API。

解决方案是使用 Object Initializer 显式设置 Config 属性:

return new APIContext(accessToken) { Config = config };    // <---- fixed

关于c# - 在 Sandbox 中一切正常,但我使用 PayPal Live 得到 IdentityException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46878842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com