Przejdź do głównej zawartości

Nieopłacone zamówienia z przelewem

Wbudowane w WooCommerce ustawienie Wstrzymaj zapasy (minuty) anuluje tylko zamówienia pozostawione w statusie Oczekujące na płatność. Przelew tradycyjny (BACS) ustawia zamówienie na Wstrzymane, więc ten licznik go nie obejmuje, a nieopłacony przelew potrafi bezterminowo blokować ostatnią sztukę towaru. Ten moduł zamyka tę lukę.

Zgłoszone przez 5trid3rr w wppoland/polski#74.

Przejdź do Polski > Moduły i włącz Nieopłacone zamówienia z przelewem (klucz modułu unpaid_orders), w grupie „Checkout and Orders”.

Ustawienie Opis Domyślnie
Metody płatności, których to dotyczy Identyfikatory bramek po przecinku bacs
Wyślij przypomnienie o płatności Czy etap przypomnienia w ogóle działa Tak
Przypomnij po, godzin od daty zamówienia Pierwszy licznik 24
Anuluj zamówienie, jeśli pozostaje nieopłacone Czy etap anulowania w ogóle działa Tak
Anuluj po, godzin od daty zamówienia Drugi licznik 48

Oba liczniki liczą się od daty zamówienia, a nie od chwili wejścia w status Wstrzymane. Zamówienie może wejść w ten status więcej niż raz, a termin dla klienta nie powinien się wtedy zaczynać od nowa.

  1. Klient składa zamówienie i wybiera przelew. WooCommerce ustawia je na Wstrzymane i zdejmuje towar ze stanu.
  2. Po upływie okna przypomnienia, jeśli zamówienie nadal jest nieopłacone, klient dostaje przypomnienie o płatności, a notatka do zamówienia to odnotowuje. Wysyłane jednorazowo.
  3. Po upływie okna anulowania, jeśli zamówienie nadal jest nieopłacone, klient dostaje informację o anulowaniu, a status zmienia się na Anulowane, co zwalnia stan magazynowy.
  4. Jeśli płatność wpłynie wcześniej, żaden z tych kroków się nie wykona.

Zamówienie, które w chwili pierwszego włączenia modułu jest już po oknie anulowania, zostaje anulowane od razu. Nie dostaje wezwania do zapłaty, po którym w tym samym przebiegu przychodzi informacja o anulowaniu.

Każde zamówienie jest wczytywane ponownie i sprawdzane tuż przed akcją, bo między zapytaniem a działaniem sklep mógł przyjąć płatność. Moduł zostawia zamówienie w spokoju, gdy zachodzi którykolwiek z warunków:

  • status nie jest już Wstrzymane
  • metoda płatności nie jest już jedną ze skonfigurowanych
  • WooCommerce uznaje je za opłacone albo ma ono datę płatności
  • wystawiono do niego fakturę
  • złożono do niego oświadczenie o odstąpieniu
  • istnieje do niego zgłoszenie zwrotu

Trzy ostatnie istnieją dlatego, że anulowanie zamówienia pod dokumentem albo pod roszczeniem konsumenta zostawia papiery wskazujące na zamówienie, którego już nie ma.

Oba e-maile to standardowe wiadomości WooCommerce. Temat, nagłówek, treść dodatkową i przełącznik edytujesz w WooCommerce > Ustawienia > E-maile:

  • Unpaid order reminder (przypomnienie o płatności)
  • Unpaid order cancelled (anulowanie zamówienia)

Szablony można nadpisać w motywie jak każdy e-mail WooCommerce, z katalogu polski-pro/templates/emails/.

Moduł działa co godzinę na WP-Cron (polski_unpaid_orders_cron) i przetwarza do 50 zamówień na przebieg, więc duże zaległości są nadrabiane w kilku przebiegach, zamiast kończyć się timeoutem. Wyłączenie modułu usuwa zaplanowane zdarzenie.

Hook Typ Opis
polski/unpaid_order/reminder akcja Uruchamiana z id zamówienia przy wysyłce przypomnienia
polski/unpaid_order/cancelled akcja Uruchamiana z id zamówienia tuż przed zmianą statusu
polski/unpaid_order/actionable filtr Zwróć false, aby ochronić pojedyncze zamówienie
// Nigdy nie anuluj automatycznie zamówień powyżej 1000 zł, te pilnuj ręcznie.
add_filter('polski/unpaid_order/actionable', function (bool $ok, WC_Order $order): bool {
return $order->get_total() > 1000 ? false : $ok;
}, 10, 2);