Payum Bundle отправляет пустой платеж - и PayPal принимает его :) :(

Я настраиваю Bundle из этого примера http://payum.forma-dev.com/documentation/0.8/PayumBundle/simple_purchase_examples/paypal_express_checkout

Когда я перехожу к /payment, меня перенаправляют на сайт PayPal, но у меня нет никакой информации об этом.

введите здесь описание изображения

Есть информация - вы можете увидеть детали - но это не так - я принимаю оплату (не зная цены и описания - и оплата прошла успешно!?

Этот комплект готов к использованию или находится в рабочем состоянии?

конфигурация:

payum:
    security:
        token_storage:
            ed\partnerBundle\Entity\PayumSecurityToken:
                doctrine:
                    driver: orm
    contexts:
        frei_payment:
            paypal_express_checkout_nvp:
              api:
                  options:
                      username:  'myusername'
                      password:  'mypass'
                      signature: 'mysing'
                      sandbox: false
            storages:
                ed\partnerBundle\Entity\PaymentDetails:
                    doctrine:
                        driver: orm

маршрутизация:

payment_start:
    pattern:  /payment
    defaults: { _controller: edpartnerBundle:Payment:preparePaypalExpressCheckoutPayment }

edpartner_payment_done:
    pattern:  /payment/done
    defaults: { _controller: edpartnerBundle:Payment:done }

действия в платежном контроллере:

  public function doneAction(){

        $request = $this->getRequest();

        $token = $this->get('payum.security.http_request_verifier')->verify($request);

        $payment = $this->get('payum')->getPayment($token->getPaymentName());

        $status = new BinaryMaskStatusRequest($token);
        $payment->execute($status);

        if ($status->isSuccess()) {
            $this->getUser()->addCredits(100);
            $this->getRequest()->getSession()->getFlashBag()->set(
                'notice',
                'Payment success. Credits were added'
            );
        } else if ($status->isPending()) {
            $this->getRequest()->getSession()->getFlashBag()->set(
                'notice',
                'Payment is still pending. Credits were not added'
            );
        } else {
            $this->getRequest()->getSession()->getFlashBag()->set('error', 'Payment failed');
        }

        return $this->redirect('homepage');



    }

    /**
     */
    public function preparePaypalExpressCheckoutPaymentAction(){

        $paymentName = 'my_payment';

        $storage = $this->get('payum')->getStorageForClass(
            'ed\partnerBundle\Entity\PaymentDetails',
            $paymentName
        );

        /** @var \ed\partnerBundle\Entity\PaymentDetails $paymentDetails */
        $paymentDetails = $storage->createModel();
        $paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD';
        $paymentDetails['PAYMENTREQUEST_0_AMT'] = 1.23;
        $storage->updateModel($paymentDetails);

        $captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
            $paymentName,
            $paymentDetails,
            'edpartner_payment_done' // the route to redirect after capture;
        );

        $paymentDetails['INVNUM'] = $paymentDetails->getId();
        $paymentDetails['RETURNURL'] = $captureToken->getTargetUrl();
        $paymentDetails['CANCELURL'] = $captureToken->getTargetUrl();
        $storage->updateModel($paymentDetails);


        return $this->redirect($captureToken->getTargetUrl());



    }

person Developer    schedule 22.01.2014    source источник
comment
не могли бы вы объяснить, как вам удалось отправить информацию в PayPal, потому что я застрял на том же месте и не могу понять ответ. Я буду очень признателен.   -  person Baig    schedule 27.01.2015


Ответы (1)


Описанное вами поведение возможно, тут какие-то проблемы. Для просмотра деталей платежа необходимо настроить дополнительные поля. Пример находится в песочнице

person Maksim Kotlyar    schedule 22.01.2014
comment
Хорошо, теперь это работает, но у меня есть PayPal. Это почти конец вашего платежа, который вы подтверждаете на сайте ... - но когда я нажимаю «ОК» - платеж выполняется, а не запрашивать подтверждение? - person Developer; 22.01.2014
comment
payum не абстрагирует платежные поля, поэтому вам все равно нужно знать спецификацию PayPal. Вот как они это делают. - person Maksim Kotlyar; 22.01.2014
comment
хорошо, я понимаю, но я думаю, что в примере интеграции с PayPal вы можете добавить рабочий пример, а не только частичный. Но спасибо за хорошую библиотеку. - person Developer; 22.01.2014
comment
Справедливости ради, эта проблема, похоже, больше связана с PayPal, который скорее пропускает такие данные. Достаточно честно, Payum мог (и, возможно, должен) обрабатывать вещи до этого, но PayPal должен ответить каким-то ответом о недопустимых полях до того, как транзакция будет создана. - person qooplmao; 25.01.2014
comment
может кто-нибудь, пожалуйста, объясните больше об ответе, поскольку я застрял в том же месте, не зная, что делать. Пожалуйста - person Baig; 27.01.2015