Я настраиваю 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()); }