2013-10-28 47 views
0

我開始使用開箱即用的PayumBundle。 不,我伸出我的PaypalExpressPaymentDetails實體與我的用戶對象:Payum - 哪裏是修改付款細節的最佳地點?

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

現在我有一個問題。什麼是以前修改付款明細實體的最佳地點,也是 - 更重要的是我認爲 - 之後的PayPal交互?

我有一個看沙盒代碼,我想這一定是PayPal交易之前設置數據的正確位置:

 $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); 

以下是我在控制器做一旦我付出後重定向從貝寶(也參考沙箱代碼):

$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. 完成 - 您在哪裏獲得付款並檢查其狀態。在這裏,你可以自由地做任何你想做的事情。假設你銷售電子書。因此,在成功的情況下,您可以生成PDF並將其發送給買家電子郵件。在失敗\取消等你顯示用戶。

據我所見,你得到這個權利。關於事件:如果這是您與付款相關的所有代碼,請保持簡單。如果事情變得更加複雜,你可以引入一個事件,並將其轉移給聽衆:

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

我想我會離開它,因爲它是暫時的。謝謝 –

相關問題