JoomBri, по умолчанию поставляется с шлюзы как Authorize.net, MoneyBookers, PayPal, и т.д. Но наша система может поддерживать интеграцию с любой шлюзы без изменения основных файлов. Следуйте трем простым шагам ниже тщательно, чтобы интегрировать ваш желаемый платежный шлюз.

Примечания
  1. Мы предполагаем, что вы используете JoomBri Freelance v1.1 Stable и выше.
  2. Внизу документ объясняется для межсетевого Pagseguro.

Шаг 1: Добавление SQL в базу данных

Первый шаг, вы должны решить имя шлюза (например, PagSeguro) будет показана в интерфейсе пользователей и уникальный код шлюза (например, pagseguro). Скачайте zip-файл, с образцом запроса SQL.

PagSeguro SQL

Распакуйте файл zip выше (SQL), перейдите в Конфигурация : Шлюзы оплаты и запустите файл SQL. Пожалуйста, обратите внимание, что "Выполнить SQL" видим только для Super Admin.

Шаг 2 : Создание Формы XML

Второй шаг, создайте XML-файл, который хранит параметры специфичные для каждого платежный шлюз как учетной, комерческий ID, и т.д. Имя файла должно быть [gatewaycode] .xml (например, pagseguro.xml). Шлюз код предполагается в шаге 1.

PagSeguro XML

Извлеките zip файл (XML) в  <корень>/components/com jblance/gateways/forms

Шаг 3: Создание файла PHP

Этот шаг очень важен, он создает форму оплаты, процесс оплаты и т.д. Создайте файл PHP с именем class.[gatewaycode].php (например, class.pagseguro.php).

PagSeguro PHP Class

Извлеките 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){
		// Проверка платежей здесь
	}
}
?>