protected function process($item)
    {
        $output = print_r($item, true) . PHP_EOL;

        $this->adyen->processNotification(array(
            'merchantReference' => $item->merchantReference,
            'pspReference'      => $item->pspReference,
            'paymentMethod'     => $item->paymentMethod,
            'reason'            => $item->reason,
            'success'           => $item->success,
            'eventCode'         => $item->eventCode
        ));

        file_put_contents($this->logDirectory . '/adyen.log', $output, FILE_APPEND);
    }
Example #2
0
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        /**
         * @var \Sparkling\AdyenBundle\Entity\SubscriptionRepositoryInterface $repository
         */
        $repository = $this->em->getRepository($this->container->getParameter('adyen.subscription_entity'));

        if ($input->getArgument('subscription') !== null) {
            if ($subscription = $repository->find($input->getArgument('subscription'))) {
                $expired = array($subscription);
            } else return $output->writeln('<error>Subscription not found</error>');
        } else {
            $expired = $repository->getSubscriptionsThatNeedToBeCharged();
        }

        if ($expired) {
            $output->writeln("Charging " . (count($expired) == 1 ? "1 subscription" : count($expired) . " subscriptions"));
            $output->writeLn('');

            foreach ($expired AS $subscription) {
                if ($subscription->getRecurringReference() === null) {
                    if ($this->adyen->loadContract($subscription) !== true) {
                        $output->writeln(sprintf('Subscription %d <error>%s</error>', $subscription->getId(), 'Recurring contract not found'));
                        continue;
                    }
                }

                $transaction = $this->adyen->charge($subscription);

                if($transaction === FALSE)
                    $output->writeln(sprintf('Subscription %d <error>%s</error>', $subscription->getId(), $this->adyen->getError()));
                else {
                    $output->writeln(sprintf(
                        'Subscription %d -> Transaction %d [<info>OK</info>]',
                        $subscription->getId(),
                        $transaction->getId()
                    ));
                }
            }

            $this->em->flush();
        } else $output->writeln('There are subscriptions that need to be charged.');
    }