0

ExpressCheckout を稼働させています。ここで、後で支払いを行う機会をユーザーに与えたいと考えています。たとえば、彼は私がデータを保存したままにしているペイパルプロセスを閉じます。

これはかなり簡単だと思いますが、なぜかペイパルにリダイレクトされなくなりました。これまでに行ったことは、新しいモデルを作成する代わりに、識別子を使用して既存のモデルを検索することだけです。この部分は機能するので、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());

何か案は?

4

1 に答える 1

2

サンドボックスで再現しました。残念ながら、これは既知の問題です。ユーザーがログインしてページに 2 回アクセスした場合、支払いはキャンセルされたと見なされます。これは、あなたのサイトとペイパルのサイト間の無限のリダイレクトを避けるために、この方法で行われます. それを解決する簡単な方法がわかりません。

アップデート

バージョン 1.0 では、キャンセルの問題が正しく処理されます。

于 2013-11-18T14:33:08.817 に答える