Jump to content

Bankkártyás fizetés fejlesztése


wilbury

Recommended Posts

Megrendelő aszongya, fejlesszem le a bankkártyás fizetést. Meg is állapodott már az Unicredittel. Van specifikáció meg minden.

Ami nekem gondot okoz az az, hogy hogyan kell egy olyan modult csinálnom, aminek hatására lesz egy új fizetési mód, ami megjelenik az adminon és a frontenden is megfelelően hozzárendelve a szállítási módokhoz.

El sem tudok indulni igazából (presta doksikat csak az esetleges jó tanácsok után tervezem elolvasni - elnézést a lustaságért).

 

Természetesen nem azt várom, hogy magát a konkrét protokollt segítsen valaki implementálni, hanem a prestás modulok mikéntjébe kéne valami gyors, okos guideline...

Link to comment
Share on other sites

  • 2 weeks later...

Biztos van valami okos leírás (reagálván az első írásodra) de én nem néztem még utána.

 

Amikor én foglalkoztam ilyesmivel, akkor fogtam egy hozzá leginkább hasonló modult, klónoztam és azt írtam át igényeim szerint.

 

Nagyon jó ilyesmire a csekkes fizetési modul, vagy a COD modul. Klónozod, majd a mappát, a php-t, a tpl-t átírod az új névnek megfelelően (a php-ben is átírod az új fájlneveket és elérési útvonalakat). Felteszed, és ha sikerül külön (az eredetitől függetlenül) telepíteni akkor már meg is vagy a modulírással.

 

Utána belemászol és átírod azt a részt amivel az elérni kívánt célt meg tudod valósítani.

 

Amikor Nekem kellett valami azonosító (reagálván a másodikra) akkor azt az ügyfél cookie-jába töltöttem be illetve olvastam ki.

 

Remélem tudtam valamit segíteni.

Link to comment
Share on other sites

Köszi.

A payment modul vázát megírtam már. Installkor létrejönnek a megfelelő új táblák, illetve fizetésnél feljön a választás. Most jön a lényeg: redirekt a bankba, meg a visszatérés onnan a hétvégén... mármint nem banki visszatérés lesz hétvégén, hanem a fejlesztés :)

  • Like 1
Link to comment
Share on other sites

Újabb "porbléma" merült fel: a tranzakció után a banktól visszatérő oldalhoz hogy tudnék valami szép URL-t rendelni?

 

Ugyanis, ha van egy "Bravosi Vasbank" modulom, nyilván abban lenne benne a banki visszatérő php,  akkor a

 

westeros.hu/modules/vasbank/back.php

 

-re érkezik, ami nem szép.

 

A paymentReturn hook meg mintha nem erre lenne kitalálva... vagy ha igen, akkor nem értem, hogyan kéne belőni.

 

A "Beállítások > SEO & URL-ek" menüben csak modul-controllerekhez lehet állítani szép URL-t, de ezt direktben meghívni nem igazán lehet, nem tudom, hogy jutna el a controller modul "initContent" függvényéhez.

Edited by wilbury (see edit history)
Link to comment
Share on other sites

Szerintem ha a kívülről érkező szepURL-t akarom átirányítani a csunya.php-ra, akkor nem a modul könyvtárba kell tenni a rewrite rule-t, hanem a gyökérbe, hisz ott "érvényesül" a rule. Egyelőre nem tudtam megcsinálni persze. És persze úgy kéne átírnia (proxyznia?), hogy az URL szép maradjon.

 

Végre találtam egy szót, amiben szerepel egymás után a "xyz"!!!

Link to comment
Share on other sites

A következőkben a tapasztalataimat írom le payment gateway ügyben, hátha segít valakinek a fejlesztésben (vak vezet világtalant szindróma). Valójában nem igazán látom át a rendszert, se annak fizetéssel foglalkozó részét, és szívesen veszem, ha valaki rávilágít tévedéseimre, hiánosságaimra ebben a posztban.

 

Amennyire látom a bankwire modul alapján, a következőképpen zajlik egy klasszikus rendelés (express chekout, 1.5+):

 

1. A fizetés oldalon megjelennek a lehetséges fizetési modulok. Az ő hookPayment() függvényük hívódik meg, amiből a megfelelő template, általában views/templates/hook/payment.tpl alapján kiíródnak a szövegek, illetve ez mondja meg, melyik FrontControllert kell meghívni, ha ráklikkelünk a kiválasztott fizetési módra - általában a controllers/front/payment.php-ben implementált ModuleFrontController, és annak initContent() függvénye.

2. a fizetési módot kiválasztva jutunk el a következő oldalra, amit az előbb említett controller indukál, általában views/templates/front/payment_execution.tpl, ami egy összefoglaló oldal, ami majd a megerősítés/megrendelés gombra meghívja a

3. controllers/front/validation.php controller postProcess() függvényét (nem direktben, de a hatására "valahogy" meghívódik), ami többek között létrehozza a rendelés objektumot, státuszt állít neki, akár levelet is küld. Mindezt a $this->module->validateOrder() függvénnyel. Ezek után egy redirect a index.php?controller=order-confirmation oldalra, aminek hatására meghívódik

4. a modulunk hookPaymentReturn() függvénye, ahol behívjuk a views/templates/hook/payment_return.tpl-t, melyben szépen megköszönjük a vásárlást, kiírhatjuk a rendelés-azonosítót, bármi.

 

Amit én szeretnék a bankkártyás fizetésnél, az az, hogy valamikor "útközben" átdobjam a usert a bank oldalára, majd onnan vissza. Valószínűleg a legszerencsésebb, ha addig nem készül rendelés, amíg a bankból nem tér vissza a user pozitív válasszal (ugye ki akar újból összerakni egy kosarat N db termékkel egy fals tranzakciót követően), így 2. és 3. pont között kell machinálni.

 

Ezért a 2. pont payment_execution.tpl-ből először egy redirect.php controllert hívok, ami összeszedi a rendelésadatokat, és a megfelelő POST-ot elküldi a banknak. A user a bank oldalán kitölti a szükséges dolgokat, majd a bank visszahív egy CSÚNYA return.php-re, ami gyorsan elvégzi a szükséges db módosításokat a tranzakcióval kapcsolatban, majd redirektál a fent említett validation.php controllerre, így visszatérünk a SZÉP URL-re, és a normál kerékvágásba a 3. pontban.

  • Like 1
Link to comment
Share on other sites

Sziasztok,

 

Én éppen most illesztettem be a Payu bankkártyás fizetést. Ugyan kapott modul -t használtam, ami pesze nem működött. :)

Jelenleg 1.5.6.2 alatt OK, nyelvi függetlenítés után a modul használatra kész.

 

András

Link to comment
Share on other sites

Kedves Wilbury,

 

A termikus technikus letölthető innen. Ez a payu doc amit a fejlesztőknek adnak folyamatábrával. Korábban már fejleszettem egy modult az Inter Európa banknak, ami később a CIB - be olvadt , ahhoz képest változás, hogy a payu IPN -t küld ami alapján távolról megváltoztatja a rendelés státuszát attól függően hogy az összeg valóban kufutott -e banktól. Korábban nem volt ilyen. Hogy más banknál mi van az sajnos nem tudom.

 

Szerencsére payu ad elég jó supportot, és segít a fejlesztésben ha elakad a fejlesztő. Én oscommerc -ról térek át a prestashop -ra, inkább ebbe ölök energiát mint egy régi webshop moduljába.

 

Üdv.

 

András

Edited by bandyvp (see edit history)
Link to comment
Share on other sites

Kedves Wilbury,

 

Egy valamit azért szeretnék még elmondani. A 8 -as pontban vázoltad, hogy hogyan is gondoltad a folyamatot.

 

Én is sokat tanakodtam a payu supporttal, hogy jobb lenne csak akkor a kosarat üríteni és a rendelést létrehozni, amikor már van információnk, a bakkártya fizetés kimenetelével kapcsolatban. De ez a megoldást el kellett vetnünk, ugyanis ha sikeres a fizetés és a bank nem tudja visszairányítani a webáruházba a vásárlót (internet hiba, fagyás, áram kiamradás stb.) akkor az ügyfélnek a kosarába marad minden, valamint a bank sem tud IPN -t külldeni, mert nem lesz semmilyen orders_id aminek frissteni tudná a státuszát messzőről (lást korábban).

 

Ezért csak akkor irányítsd az ügyfelet a fizető oldalra miután a rendelés elkészült a kosár kiürült. Ha a vásárló TIME_OUT -tal, vagy BACK_REF_URL -el tér vissza, akkor én tettem egy gombot ami a vásárlót az order_historyba küldi, ahol van egy újrarendelés gomb. Igy nem kell ismét a termékeket bepakolnia kosárba, hanem folytatható a megrendelési folyamat akár más fizetési mód is választásával is.

Én látom mint webáruház admin, hogy a rendelés nincs kifizetve, így visszáruzni tudm a termékeket.

 

Sajnos minden eshetőségre fel kell készülni, ami a fizetési folyamat során elő jöhet, és azt megfelelően kezelni tudni kell.

 

Üdv.

 

András

Link to comment
Share on other sites

Nem véletlenül írom ide a kérdésemet: hogyan lehet elkérni egy adott session IP-címét? Vagy a php $_SERVER['REMOTE_ADDR']-jét érdemes használni?

Tadammmm!

 

/**

*  Get the server variable REMOTE_ADDR, or the first ip of HTTP_X_FORWARDED_FOR (when using proxy)

*/

Tools::getRemoteAddr()

Link to comment
Share on other sites

Igen a payu modul hamarosan elérhető lesz a hivatalos prestashop modulok közül is ingyen, hiszen payu szerződés néllkül úgy sem jó semmire.:)

A payu a csatlakozási díjba építette be a modul díját, ami kb 40.000 +Áfa.

Link to comment
Share on other sites

  • 1 month later...

Sziasztok!

 

Történt valami bankkártyás fizetés ügyében? A megrendelőm szintén szeretné, hogy lehessen fizetni bankkártyával. Nem tudom, hogy mennyit számít, ő az FHB banknál van. Tisztában van vele, hogy kb. 40ezer Ft+Áfa lesz az ára, de akkor is szeretné. :)

Link to comment
Share on other sites

Igen, azt olvastam. Én nem vagyok programozó, így én nem tudok mit kezdeni azzal, hogy fejlesszem le, gondolom van vagy esetleg lesz olyan modul, ami alkalmas lesz erre. Próbálok keresni, de ha van valakinek tippe arra, hogy ezt hogy lehetne egyszerűen megoldani, az szóljon! :)

A megrendelőm azt mondja, hogy állítólag kell valami a banktól, majd utána néz. Most itt tartunk.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...