vendor/payum/core/Payum/Core/Action/CapturePaymentAction.php line 40

Open in your IDE?
  1. <?php
  2. namespace Payum\Core\Action;
  3. use Payum\Core\Bridge\Spl\ArrayObject;
  4. use Payum\Core\Exception\RequestNotSupportedException;
  5. use Payum\Core\GatewayAwareInterface;
  6. use Payum\Core\GatewayAwareTrait;
  7. use Payum\Core\Model\PaymentInterface;
  8. use Payum\Core\Request\Capture;
  9. use Payum\Core\Request\Convert;
  10. use Payum\Core\Request\GetHumanStatus;
  11. class CapturePaymentAction implements ActionInterface, GatewayAwareInterface
  12. {
  13.     use GatewayAwareTrait;
  14.     /**
  15.      * {@inheritDoc}
  16.      *
  17.      * @param Capture $request
  18.      */
  19.     public function execute($request)
  20.     {
  21.         RequestNotSupportedException::assertSupports($this, $request);
  22.         /** @var $payment PaymentInterface */
  23.         $payment = $request->getModel();
  24.         $this->gateway->execute($status = new GetHumanStatus($payment));
  25.         if ($status->isNew()) {
  26.             $this->gateway->execute($convert = new Convert($payment, 'array', $request->getToken()));
  27.             $payment->setDetails($convert->getResult());
  28.         }
  29.         $details = ArrayObject::ensureArrayObject($payment->getDetails());
  30.         $request->setModel($details);
  31.         try {
  32.             $this->gateway->execute($request);
  33.         } finally {
  34.             $payment->setDetails($details);
  35.         }
  36.     }
  37.     /**
  38.      * {@inheritDoc}
  39.      */
  40.     public function supports($request)
  41.     {
  42.         return
  43.             $request instanceof Capture &&
  44.             $request->getModel() instanceof PaymentInterface
  45.         ;
  46.     }
  47. }