Egyedi fizetési átjáró készítése
Saját fizetési átjáró beépítése a Tutor LMS natív e-kereskedelmébe: mintabővítmény, konfigurációs és fizetési osztályok, inicializálás, composer.json.
Ez az útmutató végigvezet azon, hogyan építhetsz be saját fizetési átjárót a Tutor LMS natív e-kereskedelmébe. A példában az átjáró neve CustomPayment: ez csak helyőrző, a saját átjáród nevére kell cserélned.
Mielőtt belekezdesz
Szekció neve “Mielőtt belekezdesz”Ismerd meg a beépíteni kívánt átjáró API-ját és dokumentációját. Figyelj ezekre:
- Szükséges mezők: például
secret_key,public_key,client_idés az átjáró egyedi mezői. - Támogatott funkciók: támogatja-e az ismétlődő fizetést, van-e éles és teszt (sandbox) mód, van-e webhook.
- API-végpontok: fizetés létrehozása, visszahívások és webhookok kezelése, tranzakciók ellenőrzése.
- Hitelesítés: milyen típusú (API-kulcsok, tokenek, OAuth).
1. lépés: a mintabővítmény
Szekció neve “1. lépés: a mintabővítmény”Töltsd le a CustomPayment mintabővítményt, amely referenciaszerkezetként szolgál, és alakítsd át a saját átjárődhoz. A custompayment mappa fájljait fogod módosítani. A mintában a következő fájlok vannak:
| Fájl | Szerepe |
|---|---|
CustomPaymentConfig.php |
Az átjáró konfigurációja (kulcsok, környezet). |
CustomPaymentGateway.php |
A fizetések feldolgozásának belépési osztálya. |
Init.php |
Az átjáró regisztrálása a Tutor LMS-ben. |
Custompayment.php |
A fizetés logikája. |
custompayment.php |
A bővítmény főfájlja. |
composer.json |
Az automatikus osztálybetöltés beállítása. |
2. lépés: CustomPaymentConfig.php
Szekció neve “2. lépés: CustomPaymentConfig.php”Ez a fájl az átjáró konfigurációját kezeli. Az osztály a CustomPayment névtérben van, a BaseConfig osztályból származik, és megvalósítja a ConfigContract felületet.
namespace CustomPayment;use Tutor\Ecommerce\Settings;use Ollyo\PaymentHub\Core\Payment\BaseConfig;use Tutor\PaymentGateways\Configs\PaymentUrlsTrait;use Ollyo\PaymentHub\Contracts\Payment\ConfigContract;- A
BaseConfigaz alapvető konfigurációs funkciókat kezelő osztály. - A
ConfigContractfelület biztosítja, hogy az osztály megvalósítsa a szükséges metódusokat.
A konfigurációs adatok privát tulajdonságok. Itt add meg az átjáród szükséges mezőit. Ezeket az értékeket a felhasználó a WordPress admin felületén tölti ki (a Tutor LMS fizetési beállításain át).
private $environment;private $public_key;private $secret_key;private $client_id;protected $name = 'custompayment';Mit kell módosítanod:
-
Az osztály neve és névtere: igazítsd az új átjáróhoz.
-
A konfigurációs mezők: ha az átjáródnak más mezők kellenek (például kereskedői azonosító vagy pénznem), vedd fel őket privát tulajdonságként:
private $merchant_id;private $currency_type;Majd frissítsd a
get_custompayment_config_keys()metódust az új mezőkkel:private function get_custompayment_config_keys() {return array('environment' => 'environment','secret_key' => 'secret_key','public_key' => 'secret_key','client_id' => 'secret_key','merchant_id' => 'secret_key', // új mező);} -
Lekérdező (getter) metódusok minden új beállításhoz:
private function getMerchantID(): string {return $this->merchant_id;} -
A konfiguráció ellenőrzése: az
is_configured()metódus azt vizsgálja, hogy minden szükséges mező ki van-e töltve. Az új mezőket is vedd bele. Előtte gondoskodj róla, hogy amerchant_id(és minden új mező) inicializálva legyen acreateConfig()metódusban:public function createConfig(): void {parent::createConfig();$config = array( 'merchant_id' => $this->getMerchantID() );$this->updateConfig( $config );}public function is_configured() {return $this->secret_key && $this->public_key && $this->merchant_id;}
Összefoglalva: nevezd át az osztályt és a névteret, vedd fel az új mezőket, gondoskodj arról, hogy a konstruktor betöltse őket, add hozzá a lekérdező metódusokat, és vedd bele őket az is_configured ellenőrzésbe.
3. lépés: CustomPaymentGateway.php
Szekció neve “3. lépés: CustomPaymentGateway.php”Ez a fájl a fizetések feldolgozását végzi a beállított átjárón át: kapcsolatot tart a fizetésfeldolgozóval, kezeli a fizetési kéréseket és a válaszokat. Az osztály a GatewayBase osztályból származik, amely az általános átjáró-funkciókat tartalmazza, így csak az átjáród sajátosságaival kell foglalkoznod.
Fő tulajdonságok:
$dir_name: az átjáró fájljait tartalmazó gyökérmappa neve.$config_class: a konfigurációs osztály (itt aCustomPaymentConfig::class).$payment_class: a tranzakciókat feldolgozó osztály (itt aCustompayment::class).
Metódusok:
get_root_dir_name(): a gyökérmappa neve.get_payment_class(): a fizetést feldolgozó osztály.get_config_class(): a konfigurációs osztály.get_autoload_file(): az automatikus betöltő fájl útvonala, amely az átjáró függőségeit tölti be.
Mit kell módosítanod:
-
A
$payment_classés a$config_classaz átjárót és a konfigurációt kezelő osztályokra mutasson. -
A
$dir_namealapértéke'Custompayment'. Ha átnevezed a mappát, ezt is írd át. -
Ha az átjáródhoz Composer-függőségek tartoznak, a
get_autoload_file()adja vissza a megfelelő útvonalat. Ha nincs szükség automatikus betöltőre, hagyd az alapértéken (üres szöveg):public static function get_autoload_file() {return '/path/to/vendor/autoload.php';}
4. lépés: Init.php
Szekció neve “4. lépés: Init.php”Az Init.php az átjárót inicializálja a Tutor LMS-ben: regisztrálja a hookokat, amelyek révén a rendszer felismeri az egyedi fizetési módot és a konfigurációját.
Mit kell módosítanod:
-
Az átjáró neve: a kódban
'custompayment'szerepel, cseréld a sajátodra. -
Az átjáró osztályai: a
payment_gateways_with_refés afilter_payment_gatewaysfüggvényekben aCustomPaymentGateway::classés aCustomPaymentConfig::classaz új osztályaidra mutasson. -
Címke: a
$custom_payment_methodtömbben a'Custom Payment'felirat az átjáród megjelenő neve. -
Mezők: a
fieldstömb tartalmazza az admin beállításoknál megjelenő mezőket. Új mezőt azonos formátumban vehetsz fel, például:array('name' => 'merchant_id','type' => 'secret_key','label' => 'Merchant ID','value' => '',), -
Ikon: az
'icon'mezőben megadhatod az átjáró ikonjának URL-jét (egy általad tárolt képre mutathat). -
Előfizetés-támogatás: a
'support_subscription' => falseérték azt jelzi, hogy az átjáró nem támogatja az előfizetést. Ha támogatja, állítsdtrue-ra.
5. lépés: Custompayment.php (a fizetés logikája)
Szekció neve “5. lépés: Custompayment.php (a fizetés logikája)”Ez a fájl a fizetés feldolgozásának magja. A BasePayment osztályból származik, és az átjáródra jellemző műveleteket felülírja.
- Névtér: igazítsd a bővítményed nevéhez (a
Payments\Customhelyett a saját névteredet használd). check()metódus: itt adod meg az átjáró konfigurációs kulcsait, példáulsecret_key,public_keyésmode. Ha az átjárónak más értékek is kellenek (API-hitelesítő adatok, környezeti beállítások), vedd fel őket a$configKeystömbbe.setup()metódus: az API-hívásokhoz szükséges beállításokat végzi, például az API-fejléceket, amelyeket a további kérések használnak.createPayment()metódus: a Tutor LMS fizetési adatait elküldi az átjárónak. Fizetési kérést generál: az átjáró integrációs módjától függően átirányítja a felhasználót egy megadott URL-re, vagy iframe-et használ. A minta egy helyőrző címre irányít, ezt cseréld az átjáród tényleges tranzakciós URL-jére, és igazítsd a logikát az átjáró API-jához (fizetési adatok küldése, válaszok kezelése). A szükséges értékeket (példáulsecret_key,public_key,mode) a$this->config->get('tulajdonsag_neve')hívással kapod meg a beállítások közül.verifyAndCreateOrderData()metódus: az átjáróból a Tutor LMS felé érkező adatot fogadja. Ellenőrzi a webhook aláírását, és feldolgozza a rendelési adatot. A$get_data,$post_data,$server_variablesés$streamértékeket az átjáród webhookjának formátumához igazítsd. A rendelési adatban apayment_status,transaction_idésfeesmezőket az átjáró válasza alapján töltsd ki, és az eredményt a$returnDataváltozóban add vissza.- Adatok a Tutor LMS-től: a Tutor LMS által küldött fizetési adatokat a
getData()metódussal olvashatod ki, amely asetData($data)híváskor átadott adatokat adja vissza. AsetData($data)egy objektumot kap (object $data), ésThrowablekivételt dob, ha hiba történik az adat beállításakor. - További metódusok: ha az átjárónak visszatérítés, lemondás vagy fizetési állapot lekérdezés is kell, vedd fel őket ebbe az osztályba a meglévő metódusok mintájára.
6. lépés: custompayment.php (a bővítmény főfájlja)
Szekció neve “6. lépés: custompayment.php (a bővítmény főfájlja)”Ez a bővítmény belépési pontja: regisztrálja a bővítményt, betölti a szükséges fájlokat és elindítja az integrációt.
-
A bővítmény adatai: írd át a nevet, az URI-t, a leírást, a szerzőt és a verziót.
-
Útvonalak és mappák: ellenőrizd, hogy a konstansok megfelelnek-e a bővítményed szerkezetének:
define( 'CUSTOM_PAYMENT_VERSION', '1.0.0' );define( 'CUSTOM_PAYMENT_URL', plugin_dir_url( __FILE__ ) );define( 'CUSTOM_PAYMENT_PATH', plugin_dir_path( __FILE__ ) );define( 'CUSTOM_PAYMENT_PAYMENTS_DIR', trailingslashit( CUSTOM_PAYMENT_PATH . 'src/Payments' ) ); -
Automatikus betöltő: a fájl beilleszti a Composer betöltőjét, így a Composerrel telepített függőségek automatikusan betöltődnek. Győződj meg arról, hogy a
vendormappa létezik és tartalmazza a függőségeket. -
Inicializálás: a
CustomPayment\Initosztály példányosodik, ha a feltételek teljesülnek, és regisztrálja a szükséges hookokat és szűrőket. Ha további beállítás kell, itt módosíthatod.
7. lépés: composer.json
Szekció neve “7. lépés: composer.json”name: a csomag nevethemeum/csomag-neveformátumban.description: rövid leírás a bővítményről (például hogy egyedi fizetési átjárót integrál a Tutor LMS-be).autoload: a névterek és a mappaszerkezet megfeleltetése:
"autoload": { "psr-4": { "Ollyo\\PaymentHub\\": "../tutor/ecommerce/PaymentGateways/Paypal/src", "Payments\\Custom\\": "payments", "CustomPayment\\": "integration" }}Az Ollyo\\PaymentHub\\ névtér rögzített, nem változtatható. A másik két névteret és mappát a saját szerkezetedhez igazíthatod.
Készült: