Добавление нового платежный шлюз
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){
// Проверка платежей здесь
}
}
?>