Sklep przestał przyjmować płatności kartą w nocy z soboty na niedzielę. Monitoring nie wykrył problemu bo strona działała – tylko checkout był zepsuty. Klienci dostawali ogólny błąd „Nie można przetworzyć płatności”. Stracono kilkanaście godzin sprzedaży zanim zgłoszenie dotarło w poniedziałek rano. Czas naprawy: 45 minut po zgłoszeniu.
Objawy
- Checkout kończy się błędem przy każdej próbie płatności kartą
- Przelew bankowy i płatność przy odbiorze działają normalnie
- W
var/log/payment_vendor.log:401 Unauthorized - API key expired - Problem zaczął się dokładnie o północy
Przyczyna
Klucz API do bramki płatności miał datę ważności ustawioną w panelu operatora. Wygasł dokładnie o 00:00. Nikt nie wiedział że klucze API w tej bramce mają termin ważności – standardowo są bezterminowe.
Rozwiązanie
# Natychmiastowe: wygeneruj nowy klucz w panelu bramki
# Zaktualizuj w konfiguracji Magento
bin/magento config:set payment/vendor_payment/api_key "nowy_klucz_api"
bin/magento cache:flush
# Weryfikacja
curl -X POST https://api.bramka.pl/v1/test \
-H "Authorization: Bearer nowy_klucz_api" \
-H "Content-Type: application/json"
# Oczekiwane: {"status": "ok"}
<?php
// Prewencja: monitoring wygasania kluczy API
class ApiKeyExpiryCheck implements \Magento\Cron\Model\JobInterface
{
public function execute(): void
{
$apiKey = $this->config->getValue('payment/vendor_payment/api_key');
$expiryDate= $this->config->getValue('payment/vendor_payment/api_key_expiry');
if (!$expiryDate) return;
$daysLeft = (strtotime($expiryDate) - time()) / 86400;
if ($daysLeft <= 14) {
$this->notifier->addNotice(
'API key expiring soon',
"Payment gateway API key expires in {$daysLeft} days. Renew at: https://panel.bramka.pl"
);
$this->emailNotifier->send('admin@sklep.pl',
"UWAGA: Klucz API bramki wygasa za {$daysLeft} dni"
);
}
}
}
Wnioski
Monitoring który sprawdza tylko dostępność strony nie wystarczy. Potrzebujesz monitoringu który testuje kluczowe ścieżki biznesowe: dodanie do koszyka, checkout, płatność. Synthetic monitoring (np. Checkly, DataDog Synthetics) symuluje pełny flow co 5 minut i alarmuje natychmiast. Klucze API zewnętrznych serwisów powinny być monitorowane pod kątem daty ważności – dodaj to do kalendarza lub crona.
