inf*_*oop 11 c# asp.net paypal paypal-sandbox
我正在尝试开发一个简单的应用程序,使用户能够通过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
Run Code Online (Sandbox Code Playgroud)
我也尝试使用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);
Run Code Online (Sandbox Code Playgroud)
我也使用https://api-aa-3t.paypal.com/2.0/ url来访问API
Mar*_*oll 19
自2016年初以来,Paypal开始要求TLS 1.2协议用于Sandbox中的通信,并将从6月17日开始为实时环境强制执行.请参阅此处以供参考.
在大多数.NET应用程序中,默认情况下 TLS 1.2将被禁用,因此您需要启用它.
您需要添加以下行,例如,在Application_Start
方法的开头:
public class Site : HttpApplication
{
protected void Application_Start()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// other configuration
}
}
Run Code Online (Sandbox Code Playgroud)
您可能正在连接到api.paypal.com或api.sandbox.paypal.com,而不是发送您的API证书.API证书是用于完成SSL链的客户端SSL证书.
如果您没有或未使用API证书,则应分别连接到api-3t.paypal.com或api-3t.sandbox.paypal.com以获取Live或Sandbox.