Utánvétes Fizetés
Modul
Bővített Cash on Delivery (COD) fizetési modul OpenCart 3.0.5-höz. Az alap funkcionalitáson túl lehetővé teszi a minimális és maximális rendelési összeg beállítását, valamint azt, hogy az utánvét csak meghatározott szállítási módokkal legyen elérhető. PHP 8.x kompatibilis.
✨ Funkciók
Minimális rendelési összeg
Az utánvét csak egy minimális kosárérték felett érhető el. 0 esetén nincs alsó határ.
Maximális rendelési összeg ÚJ
Az utánvét meghatározott összeg felett automatikusan eltűnik a pénztárból. 0 esetén nincs felső határ.
Szállítási mód szűrés ÚJ
Megadható, hogy az utánvét csak meghatározott szállítási módokkal legyen elérhető. Üresen hagyva minden módnál megjelenik.
Geo zóna korlátozás
Az utánvét csak meghatározott földrajzi zónákra korlátozható (ország, megye szinten).
Szállítást igénylő kosár
Automatikusan elrejtésre kerül, ha a kosárban csak digitális termék van (nincs szállítás).
PHP 8.x kompatibilis
Teljes PHP 8.x kompatibilitás: null coalescing operátor, typed property, biztonságos tömb kezelés.
📋 Követelmények
⚙️ Hogyan működik
A pénztár folyamat fizetési mód kiválasztása lépésénél az OpenCart meghívja minden
aktív fizetési modul getMethod() függvényét. A COD modul ebben az ellenőrzési
láncban dönti el, hogy megjelenjen-e a vásárlónak.
Ellenőrzési lánc
Szállítási mód kód formátum
Az OpenCart a session-ben a szállítási módot modul.metódus formátumban tárolja
(pl. flat.flat, free.free, pickup.pickup).
A COD modul a kód első részét (a modul nevét) hasonlítja össze az admin beállításokban kiválasztott módokkal.
| Session kód | Modul neve | Admin kiválasztható neve |
|---|---|---|
flat.flat | flat | Flat Rate Shipping |
free.free | free | Free Shipping |
pickup.pickup | pickup | Store Pickup |
weight.weight | weight | Weight Based Shipping |
Konfiguráció tárolása
Minden beállítás az OpenCart beépített oc_setting táblájában tárolódik,
payment_cod_* kulcs előtaggal. A szállítási módok tömbjét az OC JSON formátumban
szerializálja.
1 Fájlok feltöltése
Töltsd fel az összes fájlt FTP/SFTP-vel a webshop gyökérkönyvtárába. A csomag struktúrája megfelel a szerver struktúrájának (1:1 másolás).
├── admin/
│ ├── controller/extension/payment/
│ │ └── cod.php
│ ├── language/en-gb/extension/payment/
│ │ └── cod.php
│ ├── language/hu-hu/extension/payment/
│ │ └── cod.php
│ └── view/template/extension/payment/
│ └── cod.twig
└── catalog/
├── controller/extension/payment/
│ └── cod.php
├── language/en-gb/extension/payment/
│ └── cod.php
├── language/hu-hu/extension/payment/
│ └── cod.php
├── model/extension/payment/
│ └── cod.php ← szállítási mód + max összeg logika
└── view/theme/default/template/extension/payment/
└── cod.twig
default témát használja (pl. Journal3),
a catalog/view/theme/default/template/ mappát
cseréld a saját témád nevére, vagy hozd létre mindkettőben a fájlt.
2 Telepítés az OpenCart adminban
-
1Lépj be az admin felületre
-
2Navigálj: Extensions → Extensions → szűrő: Payments
-
3Keresd meg: Cash On Delivery a listában
-
4Kattints az Install gombra (zöld + ikon), ha még nincs telepítve
-
5Kattints az Edit gombra (ceruza ikon) a beállítások megnyitásához
3 Beállítások az admin felületen
| Mező | Leírás | Alapértelmezett |
|---|---|---|
| Minimális összeg |
Az a rendelési összeg, amelyet el kell érni, hogy az utánvét megjelenjen.
0 = nincs alsó határ |
0 |
| Maximális összeg ÚJ |
Az a rendelési összeg, amely felett az utánvét eltűnik a pénztárból.
0 = nincs felső határ |
0 |
| Rendelés állapot | A rendelés ezt az állapotot kapja a vásárlás befejezésekor. Javasolt: Pending vagy Processing. | – |
| Geo zóna | Ha ki van választva, az utánvét csak az adott geo zónában érhető el. Üresen hagyva (All Zones) minden szállítási cím esetén megjelenik. | Minden zóna |
| Engedélyezett szállítási módok ÚJ | Checkboxok a telepített szállítási modulokhoz. Ha egyik sem bejelölve, az utánvét minden szállítási módnál megjelenik. Ha legalább egy be van jelölve, csak a kijelölt módokkal érhető el az utánvét. | Mind engedélyezett |
| Állapot | A modul engedélyezése / letiltása. | Letiltva |
| Sorrend | A fizetési módok sorrendje a pénztárban (kisebb szám = előrébb). | 0 |
Beállítási példák
Minimális összeg:
5000 ·
Maximális összeg: 150000 ·
Engedélyezett szállítás: ✅ GLS ✅ DPD
(a többi, pl. csomagpont vagy személyes átvétel, nincs bejelölve)
Minimális összeg:
0 ·
Maximális összeg: 50000 ·
Engedélyezett szállítás: (egyik sem bejelölve)
getMethod() hívásnál átad. Ellenőrizd, hogy ez tartalmazza-e
a szállítási díjat, ÁFA-t stb. az OpenCart verziódban.
🚀 Frissítés az online szerveren
Ha a modul már telepítve van és csak a funkcionális változtatásokat töltöd fel, az alábbi fájlokat kell felülírni a szerveren:
| Fájl útvonala (webshop gyökértől) | Mit tartalmaz | Miért kell frissíteni |
|---|---|---|
| catalog/model/extension/payment/cod.php | Katalógus – modell logika | Maximális összeg + szállítási mód szűrő bekerült |
| admin/controller/extension/payment/cod.php | Admin – vezérlő | Új mezők kezelése, szállítási módok betöltése |
| admin/language/en-gb/extension/payment/cod.php | Admin – angol szövegek | Új language stringek az új mezőkhöz |
| admin/language/hu-hu/extension/payment/cod.php | Admin – magyar szövegek | Új language stringek az új mezőkhöz |
| admin/view/template/extension/payment/cod.twig | Admin – sablon (form) | Maximális összeg mező + szállítási módok checkboxok megjelennek |
cod.twig)
nem változtak – azokat nem kell feltölteni, kivéve ha frissen telepítesz.
Adatbázis módosítás szükséges-e?
Nem. Az új beállítások (payment_cod_max_total,
payment_cod_shipping_methods) az OpenCart meglévő
oc_setting táblájában tárolódnak. Sem tábla létrehozása, sem
séma módosítás nem szükséges.
Cache törlése feltöltés után
-
1Admin → Dashboard → jobb felső sarokban a fogaskerék ikon → Refresh
-
2Vagy töröld manuálisan:
system/cache/éssystem/storage/cache/mappák tartalmát (a mappát ne töröld, csak a tartalmát)
🗑️ Eltávolítás
- Admin → Extensions → Extensions → Payments → Cash On Delivery → Uninstall (piros – gomb)
- Fájlok manuális törlése a szerverről (a feltöltött 10 fájl eltávolítása)
payment_cod_* beállítást az oc_setting
táblából. Új telepítésnél az összes mezőt újra be kell állítani.
🔧 Hibaelhárítás
Ellenőrizd sorban: 1) A modul Státusza Enabled?
2) A kosárban van fizikai szállítást igénylő termék?
3) A kosár értéke az összeg korlátok között van?
4) A kiválasztott szállítási mód szerepel az engedélyezettekben?
5) A szállítási cím a beállított geo zónában van?
Ha még nincs szállítási mód kiválasztva: ez normális – az utánvét ilyenkor is
látszódnia kell (a szállítási mód szűrő csak akkor lép életbe, ha már van aktív választás a
sessionben). Ha még szállítás nélkül sem jelenik meg, a többi feltétel (összeg, geo zóna, státusz)
valamelyike nem teljesül.
Ellenőrizd, hogy az összes 5 admin fájlt sikeresen feltöltötted-e. Utána töröld az OpenCart template cache-t: Admin → Dashboard → fogaskerék → Refresh.
Az admin felület csak a telepített szállítási modulokat listázza. Navigálj Extensions → Extensions → Shipping → és telepíts legalább egy szállítási modult (Install gomb), ezután a COD admin oldalon megjelennek.
Ha egyetlen checkbox sincs bejelölve a form beküldésekor, az a „minden szállítás engedélyezett" állapotot jelenti – ez helyes viselkedés. A beállítás nem vész el, hanem szándékosan nincs tárolva.
Győződj meg róla, hogy a catalog/model/extension/payment/cod.php fájl
a frissített verziója van a szerveren – a régi verzióban hiányoznak a ??
null coalescing és az (string) cast biztonsági ellenőrzések.
Admin → System → Users → User Groups → adjunk hozzá
extension/payment/cod jogosultságot (Access + Modify).