PayPal sdk调用Payment.Create时出现服务器不可用错误

10
我下载了C#的Paypal SDK并试图在我的asp.net mvc应用程序中创建基本付款。我正在运行Paypal开发网站中提到的确切代码,https://developer.paypal.com/webapps/developer/docs/api/#create-a-payment,但是出现了一个错误(以下是堆栈跟踪)。我能够获取访问令牌,因此我认为该应用程序能够与端点通信,但不确定为什么会在Payment.create方法中出现问题。这是我第一次使用asp.net mvc,所以有点困惑我可能做错了什么,真的很感谢任何帮助:)
我的Web.config文件有这个部分:
  <paypal>
    <settings>
      <add name="endpoint" value="https://api.sandbox.paypal.com" />
      <add name="connectionTimeout" value="360000" />
      <add name="requestRetries" value="1" />
      <add name="ClientID" value="xyz" />
      <add name="ClientSecret" value="abc" />
    </settings>
  </paypal>

堆栈跟踪:

PayPal.Exception.PayPalException was unhandled by user code   HResult=-2146233088   Message=Exception in HttpConnection Execute: Invalid HTTP response The remote server returned an error: (503) Server Unavailable.   Source=PayPalCoreSDK   StackTrace:
       at PayPal.PayPalResource.ConfigureAndExecute[T](Dictionary`2 config, IAPICallPreHandler apiCallPreHandler, HttpMethod httpMethod, String resourcePath)
       at PayPal.PayPalResource.ConfigureAndExecute[T](APIContext apiContext, HttpMethod httpMethod, String resource, String payload)
       at PayPal.Api.Payments.Payment.Create(APIContext apiContext)
       at PayPal.Api.Payments.Payment.Create(String accessToken)
       at Requext.Controllers.EventController.CreatePayment() in c:\Users\Ishan\Source\Repos\requext.com\Requext\Controllers\EventController.cs:line 169
       at Requext.Controllers.EventController.Test() in c:\Users\Ishan\Source\Repos\requext.com\Requext\Controllers\EventController.cs:line 95
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeSynchronousActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult
_)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.Async.AsyncResultWrapper.End[TResult](IAsyncResult asyncResult, Object tag)
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() InnerException: PayPal.Exception.ConnectionException
       HResult=-2146233088
       Message=Invalid HTTP response The remote server returned an error: (503) Server Unavailable.
       Source=PayPalCoreSDK
       Response=""
       StackTrace:
            at PayPal.HttpConnection.Execute(String payLoad, HttpWebRequest httpRequest)
       InnerException:

我遇到了同样的问题。我开始认为这是他们提供的 .Net 库的问题。这段代码看起来不像是生产质量的代码。我可以毫无问题地进行 curl 调用。我可能会 Fork 自己的副本以便进行调试。 - Agile Jedi
我曾经在几年前将PayPal直接支付集成到我们的c# MVC3应用程序中时遇到了不太好的体验,因为他们缺乏文档和过时的c# SDK。最终,我成功地手动创建了一个HttpWebRequest,它POST了一个带有适当表单值的HTML表单内容。如果您感兴趣,我很乐意发布详细信息。但是,卸载nuget包(RestApiSDK和PayPalCoreSDK),重新启动Visual Studio并重新安装nuget包似乎解决了这个错误(来自此答案)。 - HOCA
感谢敏捷和HOCA。我放弃了,使用了一个解决方法,因为SDK代码似乎有缺陷。 - iman453
1个回答

1
我曾经与PayPal密切合作,通过艰苦的实践发现只使用他们的“REST” API(注意引号)是最佳的方式。 由于“保密协议”,我无法公开我所做的解决方案,但请相信我,只需将SDK移到垃圾箱并开始使用他们的POST API和“back POST” API即可。它更加简单。

同意,REST API 是最好使用的。 - delatbabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接