2013-10-28 4 views
0

상자에서 잘 작동하는 PayumBundle을 사용하기 시작했습니다. 는 아니, 난 내 사용자 개체 내 PaypalExpressPaymentDetails 엔티티를 확장 : Payum - 결제 세부 정보를 수정하는 가장 좋은 곳은 어디입니까?

/** 
* @ORM\OneToOne(targetEntity="Bidder", inversedBy="paymentPaypal") 
* @ORM\JoinColumn(name="bidder_id", referencedColumnName="id") 
*/ 
protected $bidder; 

지금 내가 질문이 있습니다. 이전에 지불 세부 사항 엔티티를 수정하는 가장 좋은 장소는 무엇입니까 - 더 중요하다고 생각합니다 - 이후 페이팔 상호 작용 이후? 내가 지불 한 후 리디렉션있어 일단 내가 컨트롤러에 무슨 짓을했는지 여기

 $paymentDetails->setReturnurl($captureToken->getTargetUrl()); 
     $paymentDetails->setCancelurl($captureToken->getTargetUrl()); 
     $paymentDetails->setInvnum($paymentDetails->getId()); 
     $paymentDetails->setBidder($bidder); //i think this should be fine at this position 
     $storage->updateModel($paymentDetails); 

:

나는 샌드 박스의 코드를 살펴 가지고 있었고, 난이 페이팔 거래하기 전에 데이터를 설정하기위한 올바른 위치해야합니다 생각 Paypal (또한 샌드 박스 코드 참조) :

$status = new BinaryMaskStatusRequest($token); 
    $payment->execute($status); 
    if($status->isSuccess()){ 
     //mark bidder as paid <- right position? 
     $bidder = $status->getModel()->getBidder(); 
     $bidder->setIsPaid(true); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($bidder); 
     $em->flush(); 
    } 

나는 그대로있는 것이 좋을지 확신하지 못합니다. 페이팔 응답을위한 이벤트 리스너는 어떻습니까? 제안에 대해 감사 할 것입니다.

감사합니다, 마크

지금까지 내가 당신이이 권리를 얻을 볼 수

답변

2

.

일반적으로 세 가지 단계가 있습니다 (자세한 내용은 payum의 get it started에서 찾을 수 있습니다).

  1. 준비 - 지급 세부 정보를 작성하고 값을 설정합니다.
  2. 캡처 - payum이 단계를 처리합니다.
  3. done - 지불을 받고 상태를 확인하는 곳입니다. 여기서 당신은 당신이 원하는대로 자유롭게 할 수 있습니다. 전자 책을 판매한다고 가정 해 보겠습니다. 따라서 여기에서 성공하면 pdf를 생성하여 구매자 전자 메일로 보냅니다. fail \ cancel 등등에 관해서는 당신이 그것에 대해 사용자를 보여줍니다.

내가 알기로는이 권리를 얻을 수 있습니다. 이벤트 정보 : 지급과 관련된 모든 코드가 있으면 간단하게 유지하십시오. 일이 더 복잡해지면 이벤트를 소개하고 청취자에게이 이벤트를 전달할 수 있습니다.

$bidder = $status->getModel()->getBidder(); 
$bidder->setIsPaid(true); 
$em = $this->getDoctrine()->getManager(); 
$em->persist($bidder); 
$em->flush(); 
+1

잠시 그만 두겠습니다. 감사 –