diff --git a/docs/get-it-started.md b/docs/get-it-started.md index 1dc0142..11e36e5 100644 --- a/docs/get-it-started.md +++ b/docs/get-it-started.md @@ -21,6 +21,14 @@ First add PayumProvider to your application: ```php register(new \Silex\Provider\UrlGeneratorServiceProvider()); +$app->register(new \Silex\Provider\FormServiceProvider()); +$app->register(new \Silex\Provider\TranslationServiceProvider()); +$app->register(new \Silex\Provider\TwigServiceProvider()); +$app->register(new \Silex\Provider\ValidatorServiceProvider()); +$app->register(new \Silex\Provider\ServiceControllerServiceProvider()); + $app->register(new \Payum\Silex\PayumProvider()); ``` diff --git a/src/Payum/Silex/PayumProvider.php b/src/Payum/Silex/PayumProvider.php index df8aa60..a2cfd24 100644 --- a/src/Payum/Silex/PayumProvider.php +++ b/src/Payum/Silex/PayumProvider.php @@ -1,9 +1,15 @@ share($app->extend('twig.loader.filesystem', function($loader, $app) { + /** @var \Twig_Loader_Filesystem $loader */ + + $loader->addPath(TwigFactory::guessViewsPath('Payum\Core\Payment'), 'PayumCore'); + $loader->addPath(TwigFactory::guessViewsPath('Payum\Stripe\PaymentFactory'), 'PayumStripe'); + $loader->addPath(TwigFactory::guessViewsPath('Payum\Klarna\Checkout\PaymentFactory'), 'PayumKlarnaCheckout'); + $loader->addPath(TwigFactory::guessViewsPath('Payum\Core\Bridge\Symfony\ReplyToSymfonyResponseConverter'), 'PayumSymfonyBridge'); + + return $loader; + })); + + $app['payum.action.render_template'] = $app->share(function($app) { + return new RenderTemplateAction($app['twig'], $app['payum.template.layout']); + }); + + $app['payum.action.obtain_credit_card'] = $app->share(function($app) { + $action = new ObtainCreditCardAction($app['form.factory'], $app['payum.template.obtain_credit_card']); + $action->setRequest($app['request']); + + return $action; + }); + $app['payum.security.token_storage'] = $app->share(function() { throw new \LogicException('This service has to be overwritten. Check the example in the doc at payum.org'); }); @@ -60,6 +91,13 @@ protected function registerService(Application $app) ); }); + $app['form.types'] = $app->share($app->extend('form.types', function ($types) use ($app) { + $types[] = new CreditCardType(); + $types[] = new CreditCardExpirationDateType(); + + return $types; + })); + $app['payum.payments'] = $app->share(function () { return [ // name => instance of PaymentInterface @@ -73,6 +111,11 @@ protected function registerService(Application $app) }); $app['payum'] = $app->share(function($app) { + foreach ($app['payum.payments'] as $payment) { + $payment->addAction($app['payum.action.render_template']); + $payment->addAction($app['payum.action.obtain_credit_card']); + } + return new SimpleRegistry($app['payum.payments'], $app['payum.storages'], null, null); }); }