Exemple #1
0
 /**
  * @test
  */
 public function shouldAllowCreateGatewayConfig()
 {
     $factory = new GatewayFactory();
     $config = $factory->createConfig();
     $this->assertInternalType('array', $config);
     $this->assertNotEmpty($config);
 }
 /**
  * @test
  */
 public function shouldAllowPrependExtensions()
 {
     $firstExtension = $this->getMock('Payum\\Core\\Extension\\ExtensionInterface');
     $secondExtension = $this->getMock('Payum\\Core\\Extension\\ExtensionInterface');
     $factory = new GatewayFactory();
     $gateway = $factory->create(array('payum.extension.foo' => $firstExtension, 'payum.extension.bar' => $secondExtension));
     $extensions = $this->readAttribute($this->readAttribute($gateway, 'extensions'), 'extensions');
     $this->assertSame($firstExtension, $extensions[0]);
     $this->assertSame($secondExtension, $extensions[1]);
     $gateway = $factory->create(array('payum.extension.foo' => $firstExtension, 'payum.extension.bar' => $secondExtension, 'payum.prepend_extensions' => array('payum.extension.bar')));
     $extensions = $this->readAttribute($this->readAttribute($gateway, 'extensions'), 'extensions');
     $this->assertSame($secondExtension, $extensions[0]);
     $this->assertSame($firstExtension, $extensions[1]);
 }
 /**
  * {@inheritDoc}
  *
  * @param string $omnipayGatewayTypeOrClass
  * @param OmnipayOmnipayGatewayFactory|null $omnipayGatewayFactory
  */
 public function __construct($omnipayGatewayTypeOrClass = null, OmnipayOmnipayGatewayFactory $omnipayGatewayFactory = null, array $defaultConfig = array(), GatewayFactoryInterface $coreGatewayFactory = null)
 {
     parent::__construct($defaultConfig, $coreGatewayFactory);
     $this->omnipayGatewayTypeOrClass = $omnipayGatewayTypeOrClass;
     $this->omnipayGatewayFactory = $omnipayGatewayFactory ?: Omnipay::getFactory();
 }
 /**
  * {@inheritDoc}
  */
 public function createConfig(array $config = array())
 {
     $config = ArrayObject::ensureArrayObject($config);
     $config->defaults(parent::createConfig((array) $config));
     $prependActions = array();
     foreach ($this->actionsTags as $id => $tagAttributes) {
         foreach ($tagAttributes as $attributes) {
             $name = isset($attributes['alias']) ? $attributes['alias'] : $id;
             if (isset($attributes['all']) && $attributes['all']) {
                 $config["payum.action.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) {
                 $config["payum.action.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) {
                 $config["payum.action.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['prepend'])) {
                 $prependActions[] = "payum.action.{$name}";
             }
         }
     }
     $config['payum.prepend_actions'] = $prependActions;
     $prependExtensions = array();
     foreach ($this->extensionsTags as $id => $tagAttributes) {
         foreach ($tagAttributes as $attributes) {
             $name = isset($attributes['alias']) ? $attributes['alias'] : $id;
             if (isset($attributes['all']) && $attributes['all']) {
                 $config["payum.extension.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) {
                 $config["payum.extension.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) {
                 $config["payum.extension.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['prepend'])) {
                 $prependExtensions[] = "payum.extension.{$name}";
             }
         }
     }
     $config['payum.prepend_extensions'] = $prependExtensions;
     $prependApis = array();
     foreach ($this->apisTags as $id => $tagAttributes) {
         foreach ($tagAttributes as $attributes) {
             $name = isset($attributes['alias']) ? $attributes['alias'] : $id;
             if (isset($attributes['all']) && $attributes['all']) {
                 $config["payum.api.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) {
                 $config["payum.api.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) {
                 $config["payum.api.{$name}"] = $this->container->get($id);
             }
             if (isset($attributes['prepend'])) {
                 $prependApis[] = "payum.api.{$name}";
             }
         }
     }
     $config['payum.prepend_apis'] = $prependApis;
     return (array) $config;
 }