我在沙盒中工作,并使用 PayPal REST .net SDK 方法 Payment.Create 和 CreditCard 对象。当所有参数都有效并使用来自 https://developer.paypal.com/webapps/developer/docs/integration/direct/accept-credit-cards/ 的测试 CC 编号时,从该方法返回 Payment 对象,一切正常。
但是,当参数无效时,例如过期日期或沙箱无法识别的 CC 编号,则不会返回付款对象。相反,该方法抛出一个异常:“HttpConnection Execute 中的异常:无效的 HTTP 响应远程服务器返回了一个错误:(400) 错误的请求”,但没有进一步的解释。
当我在 cURL 中执行相同的请求时,除了“400 Bad Request”之外,我还收到了 JSON 响应。这包括更多有用的消息,例如“VALIDATION_ERROR”和“无效到期(不能是过去)”。
我的问题:有没有办法从 SDK 取回这些消息?
我尝试过的:
- Paypal 文档:https://developer.paypal.com/webapps/developer/docs/api/#errors 该文档提到,如果出现错误,他们会在响应正文中返回详细信息。不幸的是,它没有提供有关 SDK 是否可以访问这些内容的线索。
- 各种 Google 和 SO 搜索。
- 随 SDK 提供的 PizzaApp 示例代码没有任何异常处理方式或对此问题的进一步洞察。
- 我在 SDK 中看到一个 PayPalException 对象,但没有找到任何指示应该如何使用它或者它是否与此问题相关的信息。
非常感谢所有帮助。
最佳答案
我今天才开始弄乱 SDK 和 API,马上就遇到了这个问题。我的意思是,如果我要创建自己的表单来处理付款,我想在出现任何问题时向我的用户提供反馈。
无论如何,我确实在内部异常中发现了一些隐藏信息。也许这会有所帮助。
catch (PayPal.Exception.PayPalException ex)
{
if (ex.InnerException is PayPal.Exception.ConnectionException)
{
context.Response.Write(((PayPal.Exception.ConnectionException)ex.InnerException).Response);
}
else
{
context.Response.Write(ex.Message);
}
}
结果响应:
{"name":"VALIDATION_ERROR","details":[{"field":"payer.funding_instruments[0].credit_card.number","issue":"Must be numeric"}],"message":"Invalid request - see details","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR","debug_id":"0548e52ef9d95"}
关于.net - Paypal REST API .net SDK - 400 个错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581314/