2017-09-04 8 views
0

symfonyをPayumBundlepayum-redsysで使用しています。スペイン語のRedsysゲートウェイ経由で支払いを受け入れるためです。Payumでゲートウェイ通知のカスタム操作を実行

すべての支払いを試みると(成功したかどうかにかかわらず)、RedsysはURLに通知を送信します。私はこの通知をキャッチし、そのペイロード(支払いが成功したか、注文番号など)に従って行動したいと思います。例えば、そうでない場合、私はエラーを記録したい、の支払いが成功した場合、私は、データベースに支払ったとして、対応する順序をマークしたいとしましょう。など

if ($paymentSuccessful) { 
    $order = $orderRep->find($notif['Ds_Order']); 
    $order->setDatePaid($notif['Ds_Date']); 
    $em->flush(); 
} else { 
    $logger->error('Failed payment for order ' . $notif['Ds_Order']); 
} 

私はPayumがデフォルトNotifyControllerとの通知要求を処理させる場合は、自動トークンの検証を行い、パラメータのデコード、完璧しかしである私は私を実行する方法を見ることができない。何かのように独自のカスタム操作(上記のコードを参照)、したがってこの質問のタイトル。

答えて

0

Payumは、PayumEventsに示すように、ゲートウェイ上のイベントのリッスンをサポートしているようです。このイベントには、基本的にはContextが含まれており、そこから必要な情報を収集する必要があります。おそらく、特にCapturePaymentActionRequest、このコンテキスト内のアクションを見てみたいですか?私は基本的にこれをソースコードから解読しているので、このすべての関係はどうやって分かりませんか。

すべてのイベントの内容を把握したくない場合は、適切なイベントをリッスンするリスナーを作成してから、xdebugまたはvar_dumpを使用してイベントからデータを読み出し、そこから続行することができます。基本的に、イベントリスナーはあなたが正しい行動を取っていることを確認し、Ds_OrderDs_Date(おそらくリクエストから)を取得し、上記のようなスニペットを追加することができます。

あなたはsymfonyのイベントシステムに慣れていない場合、私はドキュメント上に読んでお勧めします。

編集:またPayumはそれがイベントを扱う方法をいくつかのドキュメントを提供します同様に:https://github.com/Payum/Payum/blob/master/docs/event-dispatcher.md

関連する問題