Payum - 当用户关闭浏览器在paypal端时,如何重复Paypal支付。

时间:2013-11-17 04:32:28

标签: symfony payum

我已启动并运行ExpressCheckout。现在我想让用户有机会在以后付款。例如,他关闭了我保存数据的paypal过程。

我想这一定非常简单,但不知怎的,它不会再将我重定向到PayPal。到目前为止,我唯一做的就是使用标识符来查找现有模型而不是创建新模型。这部分工作,所以它会找到PaypalExpressPaymentDetails表的具体记录。但正如我所说,它不会重定向到贝宝。这是代码:

$paymentName = 'demo_paypal';
    $storage = $this->get('payum')->getStorageForClass(
        'Demo\UserBundle\Entity\PaypalExpressPaymentDetails',
        $paymentName
    );

    /** @var $paymentDetails PaymentDetails */
    $paymentDetails = $storage->createModel();
    $paymentDetails->setPaymentrequestCurrencycode(0, $currency);
    $paymentDetails->setPaymentrequestAmt(0, $amount);
    $storage->updateModel($paymentDetails);


    $captureToken = $this->getTokenFactory()->createCaptureToken(
        $paymentName,
        $paymentDetails,
        'payments_transaction_success'
    );

    $paymentDetails->setReturnurl($captureToken->getTargetUrl());
    $paymentDetails->setCancelurl($captureToken->getTargetUrl());
    $paymentDetails->setInvnum($paymentDetails->getId());
    $storage->updateModel($paymentDetails);

执行控制器:

...
$identificator = new Identificator($entity->getId(), 'Demo\UserBundle\Entity\PaypalExpressPaymentDetails');
$captureToken = $this->payLateByPaypal($entity->getAmount(), "USD", $entity->getId(), $identificator);
return $this->redirect($captureToken->getTargetUrl());

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我在沙盒中重现它。不幸的是,这是一个已知问题。如果用户登录并第二次访问该页面付款considered as canceled。这样做是为了避免您的网站和PayPal之间的无限重定向。我没有看到解决它的简单方法。

更新

在版本1.0中,正确处理取消问题。