Файлы платежных системы (пс) находятся в каталоге /engine/modules/billing/payments/:
- ../payments/name/ - каталог, содержащий файлы каждой отдельной пс
- info.ini - файл конфигурации
- adm.settings.php - основной файл интеграции
INI:
[info]
version=1.0
title=Название
desc=Краткое описание платежной системы
Данный файл содержит класс Payment со следующими обязательными методами:
PHP:
Class Payment
Settings( ... )
возвращает массив настроек для редактирования в админ.панели
PHP:
/*
$config - массив с текущими настройками ПС
*/
function Settings( $config )
{
$Form = array();
$Form[] = array("Параметр #1:", "Описание параметра #1", "<input name='save_con[param1]' type='text' value='" . $config['param1'] ."'>" );
$Form[] = array("Параметр #2:", "Описание параметра #2", "<input name='save_con[param2]' type='text' value='" . $config['param2'] ."'>" );
return $Form;
}
Form( ... )
возвращает форму с данными платежа для отправки на сайт ПС
PHP:
/*
$id - id квитанции, уникален для каждой операции
$config- настройки ПС из админ.панели
$invoice - массив с квитанцией на оплату (таблица бд dle_billing_invoice)
$currency - валюта платежа (после склонения)
$desc - описание платежа
*/
function form( $id, $config, $invoice, $currency, $desc )
{
return '
"<form method="post" id="paysys_form" action="https://merchant.webmoney.ru/lmi/payment.asp">
"<input name="lmi_payment_desc" value="'.$desc.'" type="hidden">
"<input name="lmi_payment_no" value="'.$id.'" type="hidden">
"<input name="lmi_payment_amount" value="'.$invoice['invoice_pay'].'" type="hidden">
"<input name="lmi_sim_mode" value="0" type="hidden">
"<input name="lmi_payee_purse" value="'.$config['wm'].'" type="hidden">
"<input type="submit" class="bs_button" value="Оплатить">
"</form>';
}
Check_id( ... )
метод должен выбрать ID квитанции из данных, полученных от сервера ПС
PHP:
/*
$data - массив с данными, полученными от сервера ПС
*/
function check_id( $data )
{
return $DATA['m_orderid'];
}
Check_ok( ... )
метод выводит сообщения на запрос ПС о статусе сайта в случаи успешной оплаты
PHP:
/*
$data - массив с данными, полученными от сервера ПС
*/
function check_ok( $data )
{
header( $_SERVER['SERVER_PROTOCOL'] . ' HTTP 200 OK', true, 200 );
echo $DATA['m_orderid'] . '|success';
return true;
}
Check_out( ... )
метод проверяет принятые от ПС данные. В случае успешной проверки - возвращает 200, в ином случае - сообщение об ошибке
PHP:
/*
$data - массив с данными, полученными от сервера ПС
$config - настройки ПС из админпанели
$invoice - массив с квитанцией на оплату (таблица бд dle_billing_invoice)
*/
function check_out( $data, $config, $invoice )
{
if (isset($data['m_operation_id']) && isset($data['m_sign']))
{
$arHash = array($data['m_operation_id'],
$data['m_operation_ps'],
$data['m_operation_date'],
$data['m_operation_pay_date'],
$data['m_shop'],
$data['m_orderid'],
$data['m_amount'],
$data['m_curr'],
$data['m_desc'],
$data['m_status'],
$config['secret_key']);
$sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
if ($data['m_sign'] == $sign_hash && $data['m_status'] == 'success')
{
return 200;
}
return $data['m_orderid'].'|error';
}
return 'Data|error';
}
Check_payer_requisites( ... )
метод выбирает реквизиты покупателя из массива данных от ПС
PHP:
/*
$data - массив с данными, полученными от сервера ПС
*/
function check_payer_requisites( $data )
{
return 'WMID' . $data["LMI_PAYER_WM"];
}