/** * @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; }
/** * @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; }
/** * @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; }
/** * @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; }
/** * @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); } } } }