【发布时间】:2017-10-30 16:34:59
【问题描述】:
我在这里问了一个非常具体的问题:Laravel 5 catching PayPal PHP API 400 errors on localhost:8000
由于没有人能帮上忙,我想提出一个关于从 PayPal API 捕获 400 错误的更开放的问题。
我正在向 PayPal 发出请求,当请求成功后,一切正常,我得到一个可爱的响应对象,我可以使用它并采取相应的行动。
例如,当输入了错误的卡详细信息时,Laravel 会抛出 400 错误,并且无法捕捉到错误让我采取相应的行动。
片段:
try {
// ### Create Payment
// Create a payment by posting to the APIService
// using a valid ApiContext
// The return object contains the status;
$payment->create($this->_apiContext);
//will not catch here :( throws Laravel 400 error! want to redirect with message!
} catch (\PPConnectionException $ex) {
return Redirect::back()->withErrors([$ex->getMessage() . PHP_EOL]);
}
//if we get an approved payment ! This fires perfectly when succesful!!! woo!!
if($payment->state == 'approved') {
//if success we hit here fine!!!
} else {
//won't get here, dies before catch.
}
这是 Laravel 调试模式下的错误:
当我查看 PayPal API 沙箱日志时,我应该会得到一个不错的对象,以便我可以采取相应的行动。
{
"status": 400,
"duration_time": 60,
"body": {
"message": "Invalid request. See details.",
"information_link": "https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR",
"details": [
{
"field": "payer.funding_instruments[0].credit_card.number",
"issue": "Value is invalid."
}
],
"name": "VALIDATION_ERROR",
"debug_id": "XXXXXXXXXXXXXX"
},
"additional_properties": {},
"header": {
"Date": "Thu, 25 May 2017 14:44:43 GMT",
"paypal-debug-id": "2f88f18d519c3",
"APPLICATION_ID": "APP-XXXXXXXXXXXX",
"Content-Language": "*",
"CALLER_ACCT_NUM": "XXXXXXXXXXXXX"
}
}
如果有任何 Laravel 向导可以帮助你,那我就是我的英雄。
尼克。
【问题讨论】:
-
感谢@rchatburn 的回复!我遇到了那个链接,我相信它会帮助很多人,但在我的情况下,它无法再次捕获:(如果状态为 400,我的应用程序似乎会失败,因为它会发出这个调用:
$payment->create($this->_apiContext);。没有什么能超越它如果 PayPal 抛出任何形式的错误,则行。
标签: php laravel laravel-5 paypal paypal-sandbox