<?php
namespace App\EventListener;
use App\Services\Functions;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Log\ApplicationLogger;
use Symfony\Component\Messenger\MessageBusInterface;
use Carbon\Carbon;
use Exception;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\StripeTransfer;
use Stripe;
class StripeTransferListener
{
private $logger;
public function __construct(ApplicationLogger $logger)
{
$this->logger = $logger;
}
public function onPreUpdate(ElementEventInterface $e)
{
if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if ($object instanceof StripeTransfer) {
if ($object->getPublished() && empty($object->getTransferId()) && $object->getAmount() > 0) {
$stripe = new \Stripe\StripeClient($_ENV["STRIPE_SECRET"]);
try {
$result = $stripe->transfers->create([
'amount' => $object->getAmount() * 100,
'currency' => 'eur',
'destination' => $object->getAccount()
]);
$object->setKey($result->id);
$object->setTransferId($result->id);
$object->setTransferDate(Carbon::createFromTimestamp($result->created));
} catch (Exception $e) {
$this->logger->info($e->getMessage());
}
}
}
}
}
}