Payum\Paypal\ExpressCheckout\Nvp\Action\PurchaseAction::execute PHP Method

execute() public method

{@inheritDoc}
public execute ( $request )
    public function execute($request)
    {
        /** @var $request Capture */
        RequestNotSupportedException::assertSupports($this, $request);
        $details = ArrayObject::ensureArrayObject($request->getModel());
        $details->validateNotEmpty('PAYMENTREQUEST_0_PAYMENTACTION');
        $details->defaults(array('AUTHORIZE_TOKEN_USERACTION' => Api::USERACTION_COMMIT));
        $this->gateway->execute($httpRequest = new GetHttpRequest());
        if (isset($httpRequest->query['cancelled'])) {
            $details['CANCELLED'] = true;
            return;
        }
        if (false == $details['TOKEN']) {
            if (false == $details['RETURNURL'] && $request->getToken()) {
                $details['RETURNURL'] = $request->getToken()->getTargetUrl();
            }
            if (false == $details['CANCELURL'] && $request->getToken()) {
                $details['CANCELURL'] = $request->getToken()->getTargetUrl();
            }
            if (empty($details['PAYMENTREQUEST_0_NOTIFYURL']) && $request->getToken() && $this->tokenFactory) {
                $notifyToken = $this->tokenFactory->createNotifyToken($request->getToken()->getGatewayName(), $request->getToken()->getDetails());
                $details['PAYMENTREQUEST_0_NOTIFYURL'] = $notifyToken->getTargetUrl();
            }
            if ($details['CANCELURL']) {
                $cancelUri = HttpUri::createFromString($details['CANCELURL']);
                $modifier = new MergeQuery('cancelled=1');
                $cancelUri = $modifier($cancelUri);
                $details['CANCELURL'] = (string) $cancelUri;
            }
            $this->gateway->execute(new SetExpressCheckout($details));
            if ($details['L_ERRORCODE0']) {
                return;
            }
        }
        $this->gateway->execute(new Sync($details));
        if ($details['PAYERID'] && Api::CHECKOUTSTATUS_PAYMENT_ACTION_NOT_INITIATED == $details['CHECKOUTSTATUS'] && $details['PAYMENTREQUEST_0_AMT'] > 0) {
            if (Api::USERACTION_COMMIT !== $details['AUTHORIZE_TOKEN_USERACTION']) {
                $confirmOrder = new ConfirmOrder($request->getFirstModel());
                $confirmOrder->setModel($request->getModel());
                $this->gateway->execute($confirmOrder);
            }
            $this->gateway->execute(new DoExpressCheckoutPayment($details));
        }
        if (false == $details['PAYERID']) {
            $this->gateway->execute(new AuthorizeToken($details));
        }
        $this->gateway->execute(new Sync($details));
    }

Usage Example

 /**
  * {@inheritDoc}
  */
 public function execute($request)
 {
     /** @var $request Capture */
     RequestNotSupportedException::assertSupports($this, $request);
     $details = ArrayObject::ensureArrayObject($request->getModel());
     $details['PAYMENTREQUEST_0_PAYMENTACTION'] = Api::PAYMENTACTION_AUTHORIZATION;
     parent::execute($request);
 }
All Usage Examples Of Payum\Paypal\ExpressCheckout\Nvp\Action\PurchaseAction::execute
PurchaseAction