gpt4 book ai didi

c# - setExpressCheckout 和 SSL/TLS 错误

转载 作者:可可西里 更新时间:2023-11-01 08:34:18 24 4
gpt4 key购买 nike

我正在尝试开发一个简单的应用程序,使用户能够通过 Paypal API 从网站购买服务。此应用程序使用 C# 在 ASP.NET 上运行。

我在尝试让 Paypal API 合作时运气不佳。我调用的方法是带有所有适当变量的 SetExpressCheckout。

我做了研究,发现由于我在 Localhost 中进行测试,它可能会影响 Paypal 与应用程序通信的能力。因此,接下来我尝试通过开放端口和可公开访问的 IP 地址访问我的应用程序,但在调用 SetExpressCheckout 时出现了同样的错误。

这里是错误:

Exception Details: System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.

Source Error:


Line 1790: [return: System.Xml.Serialization.XmlElementAttribute("SetExpressCheckoutResponse", Namespace="urn:ebay:api:PayPalAPI")]
Line 1791: public SetExpressCheckoutResponseType SetExpressCheckout([System.Xml.Serialization.XmlElementAttribute(Namespace="urn:ebay:api:PayPalAPI")] SetExpressCheckoutReq SetExpressCheckoutReq) {
Line 1792: object[] results = this.Invoke("SetExpressCheckout", new object[] {
Line 1793: SetExpressCheckoutReq});
Line 1794: return ((SetExpressCheckoutResponseType)(results[0]));

Source File: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\anan_p2\730602d6\31a8d74e\App_WebReferences.c8vgyrf8.2.cs Line: 1792

我也试过使用 OpenSSL 生成证书并将它们上传到 Paypal 帐户的加密卖家选项,但仍然没有效果。

非常感谢您阅读我的问题!

更新:根据要求,这里是正在使用的代码。

        String hostingOn = ConfigurationManager.AppSettings["default_site_url"];
reqDetails.ReturnURL = hostingOn + "marketplace_confirm.aspx";
reqDetails.CancelURL = hostingOn + "marketplace.aspx";
reqDetails.NoShipping = "1";
reqDetails.ReqConfirmShipping = "0";

reqDetails.OrderTotal = new BasicAmountType()
{
currencyID = CurrencyCodeType.CAD,
Value = payment_amt.Value,
};

SetExpressCheckoutReq req = new SetExpressCheckoutReq()
{
SetExpressCheckoutRequest = new SetExpressCheckoutRequestType()
{
Version = UtilPayPalAPI.Version,
SetExpressCheckoutRequestDetails = reqDetails
}

};

PayPalAPIAASoapBinding paypal = new PayPalAPIAASoapBinding();

paypal.SetExpressCheckout(req);

我也在使用 https://api-aa-3t.paypal.com/2.0/ API访问地址

最佳答案

自 2016 年初以来,Paypal 开始要求在沙盒中使用 TLS 1.2 协议(protocol)进行通信,并将于 6 月 17 日开始在实时环境中强制执行该协议(protocol)。参见 here供引用。

在大多数 .NET 应用程序中,TLS 1.2 将默认禁用,因此您需要启用它。

您需要添加以下行,例如,在您的 Application_Start 方法的开头:

public class Site : HttpApplication
{
protected void Application_Start()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// other configuration
}
}

关于c# - setExpressCheckout 和 SSL/TLS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12681135/

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