我正在使用条纹支付网关在我的项目。我试图显示异常错误时,用户输入过期的卡号。但不是显示我的异常错误,它显示我laravel错误。注意:它不工作与任何种类的例外,不仅是过期的卡号。
我使用的是Stripe提供的异常。
public function recharge(Request $request)
{
$this->validate($request, [
'amount' => 'required',
]);
$amount = $request->input('amount');
\Stripe\Stripe::setApiKey('key_here');
try {
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
'amount' => $amount * 100,
'currency' => 'usd',
'description' => 'Example charge',
'source' => $token,
]);
$user = User::find(Auth::user()->id);
$user->deposit($amount);
Session::flash('success', 'Your Wallet is recharged!');
return back();
} catch (\Stripe\Error\Card $e) {
// Since it's a decline, \Stripe\Error\Card will be caught
$body = $e->getJsonBody();
$err = $body['error'];
print('Status is:' . $e->getHttpStatus() . "\n");
print('Type is:' . $err['type'] . "\n");
print('Code is:' . $err['code'] . "\n");
// param is '' in this case
print('Param is:' . $err['param'] . "\n");
print('Message is:' . $err['message'] . "\n");
} catch (\Stripe\Error\InvalidRequest $e) {
return "error";
} catch (\Stripe\Error\Authentication $e) {
return "error";
} catch (\Stripe\Error\ApiConnection $e) {
// Network communication with Stripe failed
return "error";
} catch (\Stripe\Error\Base $e) {
return "error";
} catch (Exception $e) {
return "error";
}
}
我想显示我在catch块中定义的错误。
3条答案
按热度按时间kcwpcxri1#
errors上的条带API文档几乎包含了我们所能获得的一切。下面是您可以在使用条带库时放置的代码块。
u1ehiz5o2#
您没有捕获
Stripe\Exception\CardException
异常,也可能实际上没有捕获Exception
,除非您在文件顶部使用了别名Exception
。在顶部的类声明之前添加
use Exception;
,或者将catch中的Exception
调整为\Exception
。看起来
stripe-php
库的较新版本从Stripe\Exception
引发异常,并且不再具有命名空间Stripe\Error
FYI。Stripe API Reference - Handling Errors
nfzehxib3#
通过包含
use Exception;
修复了此问题