我正在测试使用Symfony 框架中的Stripe api进行支付。
目前,当我拨打合法电话付款时,Stripe 返回一个status 200
.
当我使用其中一张测试卡(或只是一张合成的卡)强制 Stripe 返回错误时,问题就开始了,例如卡已过期,并引发异常 ( Stripe_CardError
)。来自 api 的响应代码是,402
但即使我为该异常添加了一个 catch 块,Symfony 也会抛出一个500 internal server error
.
以下是部分代码:
require_once('../vendor/stripe/stripe-php/lib/Stripe/Stripe.php');
try{
\Stripe::setApiKey($this->container->getParameter('stripe_api_key'));
$charge = \Stripe_Charge::create(array(
"amount" => 1599,
"currency" => "usd",
"description" => "This is a test payment from post data",
"card" => array(
"number" => $data['cardNumber'],
"exp_month" => $data['expMonth'],
"exp_year" => $data['expYear']
)));
} catch(Stripe_CardError $e) {
Do error checking stuff here...
}catch (Exception $e) {
print_r($e->getMessage());
} catch (ErrorException $e) {
print_r($e->getMessage());
}
就像我说的那样,这段代码可以正常工作,直到抛出异常,但是当出现异常时,我似乎无法捕捉到它并对其采取行动。
在 Symfony 调试屏幕中显示从 api 返回正确的错误消息,但它没有正确的代码(应该是402
):
Your card was declined.
500 Internal Server Error - Stripe_CardError
我觉得这是一个 Symfony 配置问题,但许多搜索都没有为我提供任何解决方案。有任何想法吗?
Ps 我也在使用 FOSUserBundle。