SimplePay-en keresztül lehetőség van kétlépcsős fizetési megoldás alkalmazására is, amit már bővítményünk is támogat.
Egylépcsős fizetés esetében, a kártyaadatok megadása után, a SimplePay azonnal levonja a kártyáról az összeget. A legtöbb esetben ez az eljárás tökéletesen elég.
Azonban lehetnek esetek, amikor a rendelés végleges összege csak később derül ki, tehát a rendelés leadása és a fizetés után. Ebben az esetben lehetőségünk van kétlépcsős tranzakciókat indítani, amely a kártyaadatok megadása után, nem levonja, hanem csak befoglalja (előfoglalja) az adott összeget, majd második lépésként, amikor a kereskedő pontosan tudja a rendelés összegét, egy API kérés (manuálisan küldve a WooCommerce rendelések oldaláról) segítségével levonhatja a lefoglalt összeget.
A dokumentációban leírtak szerint háromféle összeg adható meg a második lépésben:
- A teljes befoglalt összeg: ekkor az eredetileg befoglalt összeg terhelődik,
- A teljes összegnél kisebb, de nullánál nagyobb összeg: ekkor az itt megadott összeg terhelődik, a fennmaradó pedig felszabadul a vásárló kártyáján,
- Nulla érték: ekkor a teljes befoglalt összeg felszabadul a vásárló kártyáján.
A 2.5.0 verziótól támogatjuk a kétlépcsős fizetést.
Tehát a második lépésben többet nem lehet levonni mint az eredetileg befoglalt összeg.
A következő két lépés szükséges a kétlépcsős fizetés bekapcsolásához:
- A SimplePay munkatársainak manuálisan kell engedélyezni a sandbox rendszerben.
- A bővítmény beállításoknál (WooCommerce / Beállítások / Fizetési módok) / SimplePay) kapcsolhatjuk be a kétlépcsős fizetést.
Figyelem: ennek bekapcsolásakor minden SimplePay tranzakció kétlépcsőssé válik.
Csak bizonyos rendeléseknél szeretném be- vagy kikapcsolni a kétlépcsős fizetést. Hogyan tehetem meg?
Mivel előfordulhat, hogy csupán bizonyos termékeknél szeretnénk bekapcsolni ezt a funkciót, ezért implementáltunk egy WordPress filtert, amivel pontosan, feltételhez kötve kezelhetjük (hogy mikor akarunk kétlépcsős fizetést):
add_filter('otp-simplepay-woocommerce_enable_two_step_payment', function (bool $value, WC_Order $order): bool {
return $order->get_total() > 10000;
}, 10, 2);
A feltételben (if
) határozzuk meg a nekünk megfelelő terméket, termék kategóriát, vagy bármi mást a (natív WP segéd függvényekkel).
A második lépcső, azaz a befoglalt összeg teljes- vagy valamekkora részének terhelése, csak manuálisan indítható a rendelés admin felületén.
Amennyiben az újraszámolt rendelés összege nagyobb mint a befoglalt összeg, hogy ne fusson hibára a kérés, a befoglalt összeg kerül átadásra.
A "Rendelés műveletek" doboz alatt elérhető egy új opció, amelynek lefuttatásával indíthatjuk az API kérés a SimplePay felé. Ezt követően a SimplePay, IPN-t küld a webáruház részére, hasonlóan az egylépcsős megoldáshoz.
A "Rendelés műveletek" doboz alatt elérhető egy új opció, amellyel megszakíthatjuk a kétlépcsős tranzakciót. Ez a művelet egy API kérést küld a SimplePay felé, amely feloldja a befoglalt összeget, majd ennek megfelelően küld IPN kérést.