src/Event/StripeEventSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use App\Entity\User;
  4. use App\Event\StripeEvent;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Stripe\Charge;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class StripeEventSubscriber implements EventSubscriberInterface
  9. {
  10.   private $em;
  11.   public function __construct(EntityManagerInterface $em)
  12.   {
  13.     $this->em $em;
  14.   }
  15.   public static function getSubscribedEvents()
  16.   {
  17.     return [
  18.       'charge.refunded' => ['onChargeRefunded'],
  19.     ];
  20.   }
  21.   public function onChargeRefunded(StripeEvent $event)
  22.   {
  23.     /** @var Charge $charge */
  24.     $charge $event->getResource();
  25.     if ($charge->refunded) {
  26.       /** @var User $user */
  27.       $user $this->em->getRepository(User::class)->findPremiumByChargeId($charge->id);
  28.       if ($user) {
  29.         $user->setPremium(false);
  30.         $this->em->flush();
  31.       }
  32.     }
  33.   }
  34. }