Számlázási fizetési rendszer kapcsolat dokumentációja instantcms
A számlázási rendszer moduláris rendszert használ a fizetési rendszerekkel való integráció érdekében. Új rendszer csatlakoztatásához meg kell adnia egy modulot.
Válasszon rendszernevet
Minden számlázási fizetési rendszer rendelkezik egy rendszernévvel, amely egy latin szóból és számjegyből állhat. A rendszer nevét fájl- és osztálynevekben használják.
Példaként azt feltételezzük, hogy az új fizetési rendszerünket "Új fizetési rendszer" -nek nevezzük, és a rendszer neve új fizetés. Itt és tovább, az újdonságot ki kell cserélni a fizetési rendszer rendszernévével.
Fájlok és mappák
A fizetési rendszerek moduljai a rendszer / vezérlők / számlázási / rendszerkonfigurációban tárolódnak. A mappában belül létre kell hoznia egy mappát az új fizetési rendszer számára. A mappa neve megegyezik a rendszer nevével.
A rendszer mappában két PHP-fájlt kell létrehozni:
A fizetési rendszer beállításainak formáját tartalmazó fájl.
A fizetési űrlap mezőinek listája
Általában bármely rendszer fizetése a fizetési űrlapnak egy speciális URL-hez történő küldésével kezdődik. a rendszer által biztosított. Ezt az URL-t a rendszerbeállítások a számlázási admin panelben adják meg. Az űrlap dinamikusan generálódik.
Amikor a felhasználó feltölti az egyensúlyt, először kiválasztja a megvásárolni kívánt valuta mennyiségét, és megnyomja a "Folytatás" gombot. Ezután az oldalra "Ellenőrizze a megrendelés helyességét". Valójában ez az oldal azért szükséges, mert megjeleníti a fizetési űrlapot. A "Tovább a fizetés" gombra kattintva elküldi a fizetési űrlapot a kívánt URL-címre.
A getPaymentFormFields () metódus egy mezőkészletet ad vissza, amelyet a fizetési űrlaphoz csatolnak. Ez a készlet egyedülálló minden rendszer számára. A készletet tömbként adja vissza, amelyben a kulcsok a mezők nevei, és az elemek az értékek.
Például, ha fizetési rendszerünk a shop_id és summ mezők létezését igényli. akkor a módszer így néz ki:
Emellett interaktív mezőket is felvehet a fizetési űrlapra, amelyek értékeit a felhasználónak be kell töltenie. Ebben az esetben a visszatért tömbben lévő mező értéke a mezőosztály egy példánya. Például:
Az adatok további feldolgozása a fizetési űrlap után
Egyes fizetési rendszerek kifinomultabb mechanizmusokat használnak a fizetés megkezdéséhez, mint egy egyszerű űrlap benyújtás. Ezért lehetséges, hogy a fizetési rendszer modul teljes ellenőrzést biztosítson fizetési kérelem elküldésére.
A program három szakaszban valósul meg:
A rendszerbeállítások fizetési URL-címeként meg kell adnia a következőket: számlázás / felkészítés / újfizetés;
A fizetési űrlap még mindig létrejön, de a rendszer már nem a rendszerhez, hanem a belső URL-hez továbbítja. fent említettek;
Ezt az URL-t az osztályunkban lévő preparePayment () módszer indítja el, és ez a módszer függetlenül kommunikál a tényleges fizetési rendszerrel (például a CURL használatával) és átirányítja, ha szükséges.
Ezt a rendszert akkor alkalmazzák, ha:
Példák a leírt megközelítés végrehajtására a Test és Qiwi rendszerek kódmoduljaiban a szabványos számlázási kézbesítéssel kapcsolatban.
A fizetési URL újradefiniálása
Egyes fizetési rendszerek dinamikus URL-címet használnak a fizetés elküldéséhez. Akkor nem lehet csak megadni a beállításokban, mert minden egyes kifizetésnél más lesz.
Pontosabban ebben az esetben a getPaymentURL () metódus leírható az osztályban. amely visszaküldi a fizetési űrlap elküldésének URL-címét. Ha ez a módszer nem érhető el, használja az URL-t a fizetési rendszer beállításaitól.
Példa egy módszerre az OnPay rendszer moduljából:
Fizetési értesítést kap
A legtöbb fizetési rendszer képes jelenteni a megrendelés kifizetését, ha egy adott URL-t hív az áruház webhelyén. Leggyakrabban a kereskedők beállításaiban az Eredmény URL-je vagy az Állapot URL-címe. Az URL-hez tartozó hívás a háttérben jelenik meg, láthatatlanul a felhasználóhoz és a böngésző használata nélkül.
Amikor ezt az URL-t a rendszermodul osztályban hívják, elindul a processPayment () eljárás.
A módszeren belül a következő algoritmus kerül végrehajtásra:
A fizetési rendszer által átvitt adatokat (megrendelés számát, összegét, fizetési státusát stb.) Kapjuk;
A rendelési szám alapján a megrendelésről információt kapunk az adatbázisból;
Ellenőrizzük az adatok helyességét (a megbízás összege nem változik, a digitális aláírás megegyezik stb.);
Ha minden helyes - jelölje meg a megrendelést mint fizetett (a felhasználó belső pénzneme a megvásárolt belső pénznemhez kerül jóváírásra);
A választ a fizetési rendszer által megkövetelt formátumban adjuk vissza.
Az egyes fizetési rendszernek az Eredmény URL-hez küldött adatai egyediek. A leírásuk megtalálható a fizetési rendszer API-jában található dokumentációban. A kérés (GET / POST) adatainak fogadása az $ request object használatával történik. például:
Az ismert azonosítóhoz tartozó rendelés beszerzése a modell használatával történik:
A megbízás "fizetett" állapotának megváltoztatása a modell használatával történik:
Példa a Robokassa rendszer bevezetésének módjára:
Kapjon sikeres fizetési értesítést
Ezért a hibák elkerülése érdekében a siker URL-címén meg kell győződnünk arról, hogy a megrendelés kifizetése és a felhasználó egyenlege feltöltött. Ha nem, akkor kényszerítse a felhasználót arra, hogy várjon, amíg a webhely értesítést kap a fizetésről.
Mivel a rendelési szám a sikeres URL-hez a felhasználóhoz tartozik, a módszert a fizetési rendszer moduljában kell meghatározni:
Ennek a módszernek a $ request objektumtól kell megkapnia a fizetési rendszer által a siker URL-hez átvezetett rendelésazonosító értékét. és visszaadja. A fogadott azonosító számlázás használatával meg fogja találni a rendelést és ellenőrizni tudja annak állapotát. Ha a megrendelés még mindig nem fizetett, a számlázás pillanatnyilag másodpercenként ellenőrizni fogja annak állapotát, amíg be nem érkezik a fizetési értesítés. A felhasználó meg fogja jeleníteni a várakozási kérelmet.
Fizetési hiba értesítést kap
A kifizetési rendszer moduljaira nem szükséges további műveletek végrehajtása a sikertelen kifizetések feldolgozásához.
Csatlakozási példák
Példák a több fizetési rendszer modul megvalósítására: a számlázási csomagban található rendszer / vezérlők / számlázási / rendszert tartalmazó mappák.