Example #1
0
 /**
  * @param Api\OrderApi $orderApi
  * @param Api\AgreementApi $agreementApi
  * @param Api\RecurringApi $recurringApi
  * 
  * @return \Payum\Core\Payment
  */
 public static function create(OrderApi $orderApi, AgreementApi $agreementApi = null, RecurringApi $recurringApi = null)
 {
     $payment = new Payment();
     if ($agreementApi) {
         $payment->addApi($agreementApi);
         $payment->addAction(new AgreementDetailsStatusAction());
         $payment->addAction(new CreateAgreementAction());
         $payment->addAction(new DeleteAgreementAction());
         $payment->addAction(new CheckAgreementAction());
         $payment->addAction(new AutoPayAgreementAction());
     }
     if ($recurringApi) {
         $payment->addApi($recurringApi);
         $payment->addAction(new StartRecurringPaymentAction());
         $payment->addAction(new StopRecurringPaymentAction());
         $payment->addAction(new CheckRecurringPaymentAction());
     }
     $payment->addApi($orderApi);
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new InitializeOrderAction());
     $payment->addAction(new CompleteOrderAction());
     $payment->addAction(new CheckOrderAction());
     $payment->addAction(new PaymentDetailsCaptureAction());
     $payment->addAction(new PaymentDetailsStatusAction());
     $payment->addAction(new PaymentDetailsSyncAction());
     $payment->addAction(new AutoPayPaymentDetailsCaptureAction());
     $payment->addAction(new AutoPayPaymentDetailsStatusAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     return $payment;
 }
Example #2
0
 /**
  * @return \Payum\Core\Payment
  */
 public static function create()
 {
     $payment = new Payment();
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new CaptureAction());
     $payment->addAction(new StatusAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     return $payment;
 }
Example #3
0
 /**
  * @param \Omnipay\Common\GatewayInterface $gateway
  *
  * @return Payment
  */
 public static function create(GatewayInterface $gateway)
 {
     $payment = new Payment();
     $payment->addApi($gateway);
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new OnsiteCaptureAction());
     $payment->addAction(new StatusAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     return $payment;
 }
 /**
  * @test
  * 
  * @expectedException \Payum\Core\Exception\LogicException
  * @expectedExceptionMessage Possible endless cycle detected. ::onPreExecute was called 10 times before reach the limit.
  */
 public function throwCycleRequestIfActionCallsMoreThenLimitAllows()
 {
     $cycledRequest = new \stdClass();
     $action = new RequireOtherRequestAction();
     $action->setSupportedRequest($cycledRequest);
     $action->setRequiredRequest($cycledRequest);
     $payment = new Payment();
     $payment->addExtension(new EndlessCycleDetectorExtension($limit = 10));
     $payment->addAction($action);
     $payment->execute($cycledRequest);
 }
 /**
  * @param Api $api
  *
  * @return \Payum\Core\Payment
  */
 public static function create(Api $api)
 {
     $payment = new Payment();
     $payment->addApi($api);
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new SetExpressCheckoutAction());
     $payment->addAction(new GetTransactionDetailsAction());
     $payment->addAction(new CaptureOnsiteAction());
     $payment->addAction(new FillOrderDetailsAction());
     $payment->addAction(new StatusAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     $payment->addAction(new GetHttpRequestAction());
     return $payment;
 }
Example #6
0
 /**
  * @param Keys $keys
  *
  * @return PaymentInterface
  */
 public static function createCheckout(Keys $keys, ActionInterface $renderTemplateAction = null, $layoutTemplate = null, $obtainTokenTemplate = null)
 {
     $layoutTemplate = $layoutTemplate ?: '@PayumCore/layout.html.twig';
     $obtainTokenTemplate = $obtainTokenTemplate ?: '@PayumStripe/Action/obtain_checkout_token.html.twig';
     $renderTemplateAction = $renderTemplateAction ?: new RenderTemplateAction(TwigFactory::createGeneric(), $layoutTemplate);
     $payment = new Payment();
     $payment->addApi($keys);
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new CaptureAction());
     $payment->addAction(new StatusAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     $payment->addAction($renderTemplateAction);
     $payment->addAction(new ObtainTokenAction($obtainTokenTemplate));
     $payment->addAction(new CreateChargeAction());
     return $payment;
 }
Example #7
0
 /**
  * @param Api $api
  *
  * @return \Payum\Core\Payment
  */
 public static function create(Api $api)
 {
     $payment = new Payment();
     $payment->addApi($api);
     $payment->addExtension(new EndlessCycleDetectorExtension());
     $payment->addAction(new SetExpressCheckoutAction());
     $payment->addAction(new GetExpressCheckoutDetailsAction());
     $payment->addAction(new GetTransactionDetailsAction());
     $payment->addAction(new DoExpressCheckoutPaymentAction());
     $payment->addAction(new CreateRecurringPaymentProfileAction());
     $payment->addAction(new GetRecurringPaymentsProfileDetailsAction());
     $payment->addAction(new CaptureAction());
     $payment->addAction(new NotifyAction());
     $payment->addAction(new PaymentDetailsStatusAction());
     $payment->addAction(new PaymentDetailsSyncAction());
     $payment->addAction(new RecurringPaymentDetailsStatusAction());
     $payment->addAction(new RecurringPaymentDetailsSyncAction());
     $payment->addAction(new ManageRecurringPaymentsProfileStatusAction());
     $payment->addAction(new CreateBillingAgreementAction());
     $payment->addAction(new DoReferenceTransactionAction());
     $payment->addAction(new AuthorizeTokenAction());
     $payment->addAction(new ExecuteSameRequestWithModelDetailsAction());
     return $payment;
 }
 /**
  * @test
  *
  * @expectedException \Payum\Core\Exception\RequestNotSupportedException
  */
 public function shouldCallExtensionOnExceptionWhenExceptionThrown()
 {
     $notSupportedRequest = new \stdClass();
     $extensionMock = $this->createExtensionMock();
     $extensionMock->expects($this->once())->method('onException')->with($this->isInstanceOf('Payum\\Core\\Exception\\RequestNotSupportedException'), $this->identicalTo($notSupportedRequest));
     $payment = new Payment();
     $payment->addExtension($extensionMock);
     $payment->execute($notSupportedRequest);
 }
    /**
     * @param Payment     $payment
     * @param ArrayObject $config
     */
    protected function buildExtensions(Payment $payment, ArrayObject $config)
    {
        foreach ($config as $name => $value) {
            if (0 === strpos($name, 'payum.extension')) {
                $prepend = in_array($name, $config['payum.prepend_extensions']);

                if (is_callable($value)) {
                    $payment->addExtension(call_user_func_array($value, array($config)), $prepend);
                } else {
                    $payment->addExtension($value, $prepend);
                }
            }
        }
    }