Printable Version of Topic

Click here to view this topic in its original format

Web Design Seo Forum _ Джумла добавки _ Как да направя нов плъгин за Payments For Joomla

Posted by: Web Design Seo Oct 11 2012, 11:15 AM

Как да си направя сам нов плъгин за компонента за разплащания Payments for Joomla?

В тази тема е публикувана информацията за разработчици за компонента за онлайн разплащания за Джумла http://3dwebdesign.org/mosets-tree-payments и код за примерен плъгин за компонента.

Payment type плъгин (наречен в темата "ПТП" или "action plugin")

I. Типична файлова структура на един ПТП е следната ([] - директория):

Код
[plg_pfj_ПТП]
        [languages]
            en-GB.plg_content_pfj_ПТП.ini
            en-GB.plg_content_pfj_ПТП.sys.ini
        pfj_ПТП.php
        pfj_ПТП.xml
        pfj_ПТП_params.xml
        script.pfj_ПТП.php
        install.sql
        uninstall.sql


Това е файловата структура на обикновен content плъгин, с изключение на файлът pfj_ПТП_params.xml (не е задължително да присъства), който съдържа дефинициите на параметрите за конкретния вид payment type, ако има такива. Тук приложен е примерен темплейт за ПТП, наречен template. В този инсталационен архив са маркирани задължителните и незадължителните елементи, които са характерни за ПТП. В съответните файлове има коментари, описващи по-подробно специфичните моменти.

II. Payment type плъгина (ПТП) трябва да може да изпълнява следните задачи:

а) Комуникация с компонента Payments For Joomla (PFJ)
- (опционално) Подава информация за параметрите, които са му необходими, за да работи (ако има такива, файлът 'pfj_ПТП_params.xml' и функция onPFJGetDetails() в pfj_ПТП.php);
- (опционално) Валидира тези параметри, преди да бъдат подадени за запис в БД (JavaScript - функция onJSParamsValidate() в pfj_ПТП.php) и при подаването им (PHP - функция onPFJParamsValidate() в pfj_ПТП.php);
- (ЗАДЪЛЖИТЕЛНО) Получава информация за постъпили успешни плащания и я отразява по подходящ начин (функция onPFJPayment() в pfj_ПТП.php);
- (опционално) Код за изпълнение от Cron скрипта на PFJ, ако е необходимо (функция onPFJCron() в pfj_ПТП.php).

б) Превенция на поведението по подразбиране, което искаме вече да се плаща, освен ако потребителят не е вече платил. Това обикновено става чрез функция с уникално име, намираща се в pfj_ПТП.php. В случая с template плъгина това е pfj_template_redirect(), която редиректва потребителя към статията с формата за плащане, ако е необходимо.

в) Уведомяване на потребителите, които не са платили, че търсената от тях услуга е вече платена и осигуряване на достъп до формата за плащане, генерирана на база PFJ. Това обикновено става с използването на onContentAfterDisplay(), отново намираща се в pfj_ПТП.php.

III. Типичният начин, по който следват събитията при активиран ПТП, е следният:

1. Потребител, който не е платил, се опитва да отвори страница със съдържание с ограничен достъп.
2. ПТП засича този опит и редиректва потребителя към предварително създадена статия, в която се описва какво и при какви условия се продава. За тази цел в началото на страницата с ограничен достъп се вика функцията с уникално име от т. II(б), в случая с template:

Код
#PFJ Template BOM
        if (JPluginHelper::importPlugin('content','pfj_template',TRUE))
            JDispatcher::getInstance()->trigger('pfj_template_redirect');
        #PFJ Template EOM


3. ПТП генерира форма за плащане на база на записите в PFJ за конкретния тип плащане и език на сайта. Ако няма дефинирани записи в PFJ - издава съобщение за грешка, иначе вмъква формата на указаното чрез специален таг място (или в края на статията, ако няма указан таг или той не бъде намерен). Тагът се задава в настройките на плъгина.
4. Потребителят кликва върху елемент от формата и отива да плаща, да речем чрез PayPal.
5. Завършвайки плащането, PayPal вика нотификационният адрес, който представлява входната точка на PFJ с ID-то на конкретното плащане. PFJ зарежда съответният payment method плъгин (PayPal), който валидира плащането. Ако всичко е наред, PFJ вика функцията onPFJPayment() от ПТП, подавайки й като параметри параметрите на плащането и ID-то на потребителя, извършил плащането. ПТП отразява полученото плащане, давайки достъп на потребителя до съдържанието с ограничен достъп.

Примерният темплейт на action plugin-а е прикачен в този пост. Файла се вижда и може да се свали само от регистрирани потребители!

 plg_pfj_template.zip ( 7.71K ) : 1
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)