src/EventListener/StripeTransferListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Services\Functions;
  4. use Pimcore\Event\Model\ElementEventInterface;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Log\ApplicationLogger;
  7. use Symfony\Component\Messenger\MessageBusInterface;
  8. use Carbon\Carbon;
  9. use Exception;
  10. use Pimcore\Model\DataObject;
  11. use Pimcore\Model\DataObject\StripeTransfer;
  12. use Stripe;
  13. class StripeTransferListener
  14. {
  15.     private $logger;
  16.     public function __construct(ApplicationLogger $logger)
  17.     {
  18.         $this->logger $logger;
  19.     }
  20.     public function onPreUpdate(ElementEventInterface $e)
  21.     {
  22.         if ($e instanceof DataObjectEvent) {
  23.             $object $e->getObject();
  24.             if ($object instanceof StripeTransfer) {
  25.                 if ($object->getPublished() && empty($object->getTransferId()) && $object->getAmount() > 0) {
  26.                     $stripe = new \Stripe\StripeClient($_ENV["STRIPE_SECRET"]);
  27.                     try {
  28.                         $result $stripe->transfers->create([
  29.                             'amount' => $object->getAmount() * 100,
  30.                             'currency' => 'eur',
  31.                             'destination' => $object->getAccount()
  32.                         ]);
  33.                         $object->setKey($result->id);
  34.                         $object->setTransferId($result->id);
  35.                         $object->setTransferDate(Carbon::createFromTimestamp($result->created));
  36.                     } catch (Exception $e) {
  37.                         $this->logger->info($e->getMessage());
  38.                     }
  39.                 }
  40.             }
  41.         }
  42.     }
  43. }