3

Symfony フレームワークでStripe APIを使用して支払いを行うことをテストしています。

現在、正当な電話をかけると支払いが行われ、Stripe はstatus 200.

問題は、テスト カードの 1 つ(または作成したもの) を使用して 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 を使用しています。

4

1 に答える 1

2

それはパジが言ったことです。Stripe エラー クラスは現在の名前空間に登録されていないため、create メソッドが呼び出されたときのように、その前にスラッシュが必要でした。見逃したなんて信じられないけど、カット&ペーストで得られるもの!ありがとうパジ。

于 2013-09-12T20:08:35.677 に答える