Добавление нового платежный шлюз
JoomBri, по умолчанию поставляется с шлюзы как Authorize.net, MoneyBookers, PayPal, и т.д. Но наша система может поддерживать интеграцию с любой шлюзы без изменения основных файлов. Следуйте трем простым шагам ниже тщательно, чтобы интегрировать ваш желаемый платежный шлюз.
- Мы предполагаем, что вы используете JoomBri Freelance v1.1 Stable и выше.
- Внизу документ объясняется для межсетевого Pagseguro.
Шаг 1: Добавление SQL в базу данных
Первый шаг, вы должны решить имя шлюза (например, PagSeguro) будет показана в интерфейсе пользователей и уникальный код шлюза (например, pagseguro). Скачайте zip-файл, с образцом запроса SQL.
Распакуйте файл zip выше (SQL), перейдите в Конфигурация : Шлюзы оплаты и запустите файл SQL. Пожалуйста, обратите внимание, что "Выполнить SQL" видим только для Super Admin.
Шаг 2 : Создание Формы XML
Второй шаг, создайте XML-файл, который хранит параметры специфичные для каждого платежный шлюз как учетной, комерческий ID, и т.д. Имя файла должно быть [gatewaycode] .xml (например, pagseguro.xml). Шлюз код предполагается в шаге 1.
Извлеките zip файл (XML) в <корень>/components/com jblance/gateways/forms
Шаг 3: Создание файла PHP
Этот шаг очень важен, он создает форму оплаты, процесс оплаты и т.д. Создайте файл PHP с именем class.[gatewaycode].php (например, class.pagseguro.php).
Извлеките zip файл (Php) в <корень>/components/com jblance/gateways
Объяснение PHP-файла
Объяснение файла дается выше каждого функционального имени. Вам нужно присвоить руководство интеграции шлюза оплаты, чтобы найти, как форма оплаты представлена и оплата проверена достоверность.
<?php /** * @company : BriTech Solutions * @created by : JoomBri Team * @contact : www.joombri.in, support@joombri.in * @created on : 22 March 2012 * @file name : gateways/class.gatewaycode.php * @copyright : Copyright (C) 2012. All rights reserved. * @license : GNU General Public License version 2 or later * @author : Faisel * @description : Entry point for the component (jblance) */ defined('_JEXEC') or die('Restricted access'); class gatewaycode_class { var $fields = array(); var $payconfig = array(); var $details = array(); /** * Функции конструктора, который инициирует определенной переменной. */ function gatewaycode_class($payconfig, $details){ $this->gatewaycode_url = 'https://www.paypal.com/cgi-bin/webscr'; $this->payconfig = $payconfig; $this->details = $details; } /** * Эта функция вызывается до совершения оплаты. * Она создает форму оплаты, которая представляется платежный шлюз. * * Примечание: Представление формы оплаты могут изменяться от одного шлюза на другой. */ function gatewaycodePayment(){ // Следующие переменные будут варьироваться в зависимости от переменных, используемой в gatewaycode.xml. $payconfig = $this->payconfig; $pptestmode = $payconfig->ppTestmode; $paypalEmail = $payconfig->paypalEmail; $ppCurrency = $payconfig->ppCurrency; $details = $this->details; $amount = $details['amount']; $taxrate = $details['taxrate']; $orderid = $details['orderid']; $itemname = $details['itemname']; $item_num = $details['item_num']; $invoiceNo = $details['invoiceNo']; $link_status = JURI::base().'index.php?option=com_jblance&task=membership.returnafterpayment&gateway=gatewaycode'; $link_cancel = JRoute::_(JURI::base().'index.php?option=com_jblance&view=membership&layout=thankpayment&type=cancel'); $this->gatewaycode_url = ($pptestmode) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr'; // Следующие переменные специфические в PayPal $this->add_field('business', $paypalEmail); $this->add_field('return', $link_status); $this->add_field('cancel_return', $link_cancel); $this->add_field('notify_url', $link_status); $this->add_field('item_name', $itemname); $this->add_field('item_number', $item_num); $this->add_field('amount', $amount); $this->add_field('invoice', $invoiceNo); $this->add_field('no_note', "1"); $this->add_field('no_shipping', "1"); $this->add_field('currency_code', $ppCurrency); $this->add_field('tax_rate', $taxrate); $this->submit_gatewaycode_post(); // Автомат передачи полей для paypal ?> <script> document.gatewaycode_form.submit(); </script> <?php } function add_field($field, $value){ $this->fields["$field"] = $value; } /** * Эта функция фактически создает форму оплаты */ function submit_gatewaycode_post(){ echo '<form method="post" name="gatewaycode_form" action="'.$this->gatewaycode_url.'">'; foreach ($this->fields as $name => $value){ echo '<input type="hidden" name="'.$name.'" value="'.$value.'"/>'; } echo JText::sprintf('COM_JBLANCE_PAYMENT_REDIRECTION_PAGE', 'Gateway Name'); echo '<br><br><input type="submit" value="'.JText::_('COM_JBLANCE_PROCEED_FOR_PAYMENT').'">'; echo '</form>'; } /** * Эта функция вызывается после оплаты от шлюза. * Она возвращает true и номер счета, в случае успешного платежа */ function gatewaycodeReturn($data){ $return = array(); if($this->validate_ipn($data)){ // получение номер счет-фактуры от переменной POST. Получение накладной будет различаться для шлюзов. $invoice_num = array_key_exists('invoice', $data) ? $data['invoice'] : ''; $return['success'] = true; $return['invoice_num'] = $invoice_num; } else $return['success'] = false; return $return; } /** * Эта функция проверяет достоверность оплаты. * Она возвращает значение true при успешной проверке оплаты * В противном случае возвращает значение false */ function validate_ipn($data){ // Проверка платежей здесь } } ?>