2013-10-28 41 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

我想我会离开它,因为它是暂时的。谢谢 –

相关问题