2017-09-04 8 views
0

스페인어 Redsys 게이트웨이를 통해 지불을 받으려면 symfony를 PayumBundlepayum-redsys과 함께 사용하고 있습니다.Payum을 사용하여 게이트웨이 알림에 대한 사용자 지정 작업 수행

결제가 완료되면 (성공했는지 여부) Redsys가 URL에 알림을 보냅니다. 이 알림을 받고 페이로드 (결제 성공 여부, 주문 번호 등)에 따라 조치를 취하고 싶습니다. 예를 들어, 지불이 성공하면 해당 주문을 데이터베이스에서 지불하도록 표시하고 그렇지 않으면 오류를 기록하려고합니다. 뭔가 같은 : 나는 Payum은 기본 NotifyController와 알림 요청을 처리 할 경우, 완벽 자동 토큰 검증, 매개 변수의 디코딩 등을 수행

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']); 
} 

하지만 내가 수행하는 방법을 볼 수 없습니다 내 (위의 코드를 참조하십시오.) 따라서이 질문의 제목.

답변

0

Payum은 PayumEvents에서 볼 수있는 것처럼 게이트웨이의 이벤트 수신 대기를 지원하는 것으로 보입니다. 전달되는 이벤트에는 기본적으로 필요한 정보를 수집해야하는 Context 만 포함됩니다. 이 컨텍스트 내의 작업, 특히 CapturePaymentActionRequest을보고 싶습니까? 이 모든 관계가 어떻게 나에게 명확하지 않은지는 기본적으로 소스 코드에서 이것을 해독하는 것입니다.

모든 이벤트 항목을 파악하고 싶지 않으면 적절한 이벤트를 수신하는 수신기를 만든 다음 xdebug 또는 var_dump를 사용하여 이벤트의 데이터를 읽고 거기에서 계속하십시오. 기본적으로 이벤트 리스너는 올바른 작업을 수행했는지 확인하고 Ds_OrderDs_Date (아마도 요청에 따라)을 얻은 다음 위에서 게시 한 스 니펫에 추가 할 수 있습니다.

당신은 내가 문서에 최대 읽어 보시기 바랍니다 심포니의 이벤트 시스템에 익숙하지 않은 경우 :

이 편집 : 또한 Payum이 이벤트를 다루는 방법을 몇 가지 문서를 제공 뿐만 아니라 : https://github.com/Payum/Payum/blob/master/docs/event-dispatcher.md