Otázka 15 / 15
Dvojnásobná radost z kávovaru
Paní Veselá zaplatila kávovar kartou jednou, ale dostala dva e-maily „Děkujeme za platbu“, sklad odepsal dva kusy a účetní systém jí vystavil dvě faktury. Banka i platební brána potvrzují jedinou platbu a paní Veselá se zdvořile ptá, jestli jí druhý kávovar přijde taky. Podle podpory se to děje hlavně v pondělí dopoledne, kdy účetní systém odpovídá pomalu. Tady je část modulu, která přijímá oznámení od platební brány. Co se děje a co bys udělal?
Ctrl/Cmd+klik na metodu, třídu nebo konstantu otevře její deklaraci, Alt+← vrátí zpět.
app › Services › Payment › PaymentWebhookHandler.php
<?php declare(strict_types=1);
namespace App\Services\Payment;
use App\Mail\PaymentReceivedMail;
use App\Repositories\OrderRepository;
use App\Services\Erp\ErpClient;
use App\Services\Stock\StockWriteOffService;
use Illuminate\Contracts\Mail\Mailer;
final class PaymentWebhookHandler
{
public function __construct(
private readonly OrderRepository $orderRepository,
private readonly StockWriteOffService $stockWriteOffService,
private readonly ErpClient $erpClient,
private readonly Mailer $mailer,
)
{}
public function handle(PaymentNotification $notification): void
{
if (!$notification->isPaid()) {
return;
}
$order = $this->orderRepository->getByNumber($notification->orderNumber);
$order->markAsPaid($notification->transactionId);
$this->stockWriteOffService->writeOffItems($order);
$this->erpClient->createInvoice($order);
$this->mailer->to($order->email)->send(new PaymentReceivedMail($order));
}
}