UnknownSec Bypass
403
:
/
mnt
/
lmsestudio-instance-vol002
/
lms_53a6eaa395e9
/
app
/
Handlers
/
Events
/ [
drwxr-xr-x
]
Menu
Upload
Mass depes
Mass delete
Terminal
Info server
About
name :
SendMailPagarMeTransaction.php
<?php namespace EstudioLMS\Handlers\Events; use EstudioLMS\Events\PagarMeDone; use EstudioLMS\Exceptions\Handler; use EstudioLMS\Helpers\ConfigurationsHelper; use Illuminate\Contracts\Mail\Mailer; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Log; /** * Class SendMailPagarMeTransaction * @package EstudioLMS\Handlers\Events */ class SendMailPagarMeTransaction { /** * @var Mailer */ private $mailer; /** * @var ConfigurationsHelper */ private $configurationsHelper; /** * Create the event handler. * * @param Mailer $mailer * @param ConfigurationsHelper $configurationsHelper */ public function __construct( Mailer $mailer, ConfigurationsHelper $configurationsHelper ) { $this->mailer = $mailer; $this->configurationsHelper = $configurationsHelper; } /** * Handle the event. * * @param PagarMeDone $event * @return void */ public function handle(PagarMeDone $event) { try { $this->configurationsHelper->overridesMailConfiguration(); $data = $event->grabData(); $typeEmail = $event->typeMail(); // Validar dados essenciais if (!$this->validateEventData($data, $typeEmail)) { Log::warning('Dados insuficientes para envio de email PagarMe', [ 'type' => $typeEmail, 'data_keys' => array_keys($data ?? []) ]); return; } $receiver = $this->configurationsHelper->grabReceiverMailData(); $sender = $this->configurationsHelper->grabSenderMailData(); $subject = $this->getSubjectByType($typeEmail); // Enviar email para o cliente $this->sendCustomerEmail($data, $typeEmail, $subject, $sender); // Enviar email para o admin apenas para transações bem-sucedidas if (in_array($typeEmail, ['credit_card', 'boleto'])) { $this->sendAdminEmail($data, $typeEmail, $subject, $sender, $receiver); } Log::info('Emails PagarMe enviados com sucesso', [ 'type' => $typeEmail, 'customer_email' => $data['user']['email'] ?? 'N/A', 'payment_code' => $data['payment_code'] ?? 'N/A' ]); } catch (\Exception $e) { Log::error('Erro geral no envio de emails PagarMe', [ 'error' => $e->getMessage(), 'type' => $event->typeMail() ?? 'unknown', 'trace' => $e->getTraceAsString() ]); app(Handler::class)->report($e); } } /** * Validar se os dados essenciais estão presentes * * @param array|null $data * @param string $typeEmail * @return bool */ private function validateEventData($data, $typeEmail) { if (!is_array($data)) { return false; } // Validar dados do usuário if (!isset($data['user']) || !is_array($data['user'])) { return false; } if (empty($data['user']['email']) || empty($data['user']['name'])) { return false; } // Para tipos de sucesso, validar dados do curso if (in_array($typeEmail, ['credit_card', 'boleto'])) { if (!isset($data['course']) || !is_array($data['course']) || empty($data['course']['name'])) { return false; } } return true; } /** * Obter assunto do email baseado no tipo * * @param string $typeEmail * @return string */ private function getSubjectByType($typeEmail) { switch ($typeEmail) { case 'credit_card': case 'boleto': return 'Curso contratado com sucesso!'; case 'credit_card_refused': case 'boleto_refused': return 'Problema na contratação do curso!'; default: return 'Notificação sobre sua compra'; } } /** * Enviar email para o cliente * * @param array $data * @param string $typeEmail * @param string $subject * @param array $sender */ private function sendCustomerEmail($data, $typeEmail, $subject, $sender) { try { $this->mailer->send( 'emails.cart.pagarme_email', ['data' => $data, 'typeEmail' => $typeEmail], function ($msg) use ($sender, $data, $subject) { $msg->subject($subject); $msg->to($data['user']['email'], $data['user']['name']); $msg->from($sender['sender_email'], $sender['sender_name']); } ); Log::info('Email do cliente PagarMe enviado', [ 'type' => $typeEmail, 'to' => $data['user']['email'] ]); } catch (\Exception $e) { Log::error('Erro no envio de email do cliente PagarMe', [ 'error' => $e->getMessage(), 'type' => $typeEmail, 'customer_email' => $data['user']['email'] ?? 'N/A' ]); throw $e; } } /** * Enviar email para o admin * * @param array $data * @param string $typeEmail * @param string $subject * @param array $sender * @param array $receiver */ private function sendAdminEmail($data, $typeEmail, $subject, $sender, $receiver) { try { $this->mailer->send( 'emails.cart.pagarme_admin_email', ['data' => $data, 'typeEmail' => $typeEmail], function ($message) use ($sender, $receiver, $subject) { $message->subject($subject); $message->to($receiver['receiver_email'], $receiver['site_name']); $message->from($sender['sender_email'], $sender['sender_name']); $message->replyTo($receiver['sender_email'], $receiver['sender_name']); } ); Log::info('Email do admin PagarMe enviado', [ 'type' => $typeEmail, 'to' => $receiver['receiver_email'] ]); } catch (\Exception $e) { Log::error('Erro no envio de email do admin PagarMe', [ 'error' => $e->getMessage(), 'type' => $typeEmail, 'admin_email' => $receiver['receiver_email'] ?? 'N/A' ]); // Não propagar o erro do admin - email do cliente já foi enviado } } }
Copyright © 2026 - UnknownSec