Версия модуля:

Документация Инструкции по установке, разработке и использованию модуля и плагинов DLE-Billing

Подключение новых биллингов

Структура платежной системы

Платежные системы (далее ПС) в модуле DLE-Billing находятся в каталоге /engine/modules/billing/payments/ и имеют следующую структуру:

Файл / каталог Описание
/BillingName/Каталог, содержащий файлы каждой отдельной ПС
adm.settings.php Главный файл ПС
info.ini Файл с информацией о ПС
/icon/icon.png Каталог, содержащий иконку ПС для отображения в админпанели

Файл adm.settings.php

Данный файл содержит класс платежной системы со следующими обязательными методами:

от 16 мая 2017 20:26

Settings( ... )

содержит массив настроек для редактирования в админпанели

  • 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;
}

Параметр name полей должен быть в формате save_con[параметр]


от 16 мая 2017 20:26

Form( ... )

выводит форму платежа для отправки на сервер ПС

  • id - № квитанции, уникален для каждой операции;
  • config - настройки ПС из админ.панели;
  • invoice - массив данных квитанции:
    • invoice['invoice_paysys'] - название ПС лат. (/BillingName/);
    • invoice['invoice_user_name'] - логин пользователя;
    • invoice['invoice_get'] - сумма к получению в валюте сайта;
    • invoice['invoice_pay'] - сумма к оплате в валюте ПС;
    • invoice['invoice_date_creat'] - дата и время создания квитанции (unixtime);
    • invoice['invoice_date_pay'] - дата и время оплаты (unixtime). Пока квитанция не оплачена = 0.
  • 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" value="Оплатить">
	 	     </form>';
}


от 17 мая 2017 20:39

check_payer_requisites( ... )

необязательный метод, возвращает реквизиты плательщика

  • data - массив с данными, полученными от сервера ПС.

function check_payer_requisites( $data )
{
	return 'WMID' . $data["LMI_PAYER_WM"];
}


от 24 апреля 2017 19:10

check_id( ... )

метод должен выбрать ID квитанции из данных, полученных от сервера ПС

  • data - массив с данными, полученными от сервера ПС.

function check_id( $DATA ) 
{
	return $DATA['m_orderid'];
}


от 24 апреля 2017 19:10

check_ok( ... )

метод выводит сообщения на запрос ПС о статусе сайта в случаи успешной оплаты

  • data - массив с данными, полученными от сервера ПС.

function check_ok( $DATA )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' HTTP 200 OK', true, 200 );
	
	echo $DATA['m_orderid'] . '|success';
		
	return true;
}


от 24 апреля 2017 19:10

check_out( ... )

метод проверяет принятые от ПС данные.
В случае успешной проверки - возвращает 200, в ином случае - сообщение об ошибке

  • data - массив с данными, полученными от сервера ПС;
  • config - настройки ПС из админ.панели;
  • invoice - массив данных квитанции:
    • invoice['invoice_paysys'] - название ПС лат. (/BillingName/);
    • invoice['invoice_user_name'] - логин пользователя;
    • invoice['invoice_get'] - сумма к получению в валюте сайта;
    • invoice['invoice_pay'] - сумма к оплате в валюте ПС;
    • invoice['invoice_date_creat'] - дата и время создания квитанции (unixtime);
    • invoice['invoice_date_pay'] - дата и время оплаты (unixtime). Пока квитанция не оплачена = 0.

function check_out( $data, $config, $invoice )
{
	if( ! $data['LMI_PAYMENT_AMOUNT'] or $data['LMI_PAYMENT_AMOUNT'] != $invoice['invoice_pay'] )
	{
		return "Error: PAYMENT_AMOUNT";
	}

	if( ! $data['LMI_PAYEE_PURSE'] or $data['LMI_PAYEE_PURSE'] != $config['wm'] )
	{
		return "Error: LMI_PAYEE_PURSE";
	}

	IF( $data['LMI_PREREQUEST'] == 1 )
	{
		return "YES";
	}

	$sign = strtoupper( hash("sha256", $data['LMI_PAYEE_PURSE'].$data['LMI_PAYMENT_AMOUNT'].$data['LMI_PAYMENT_NO'].$data['LMI_MODE'].$data['LMI_SYS_INVS_NO'].$data['LMI_SYS_TRANS_NO'].$data['LMI_SYS_TRANS_DATE'].$config['key'].$data['LMI_PAYER_PURSE'].$data['LMI_PAYER_WM'] ) );

	if( $data['LMI_HASH'] == $sign )
	{
		return 200;
	}

	return "Error: bad sign";
}


от 17 мая 2017 22:19

null_info( ... )

необязательный метод, обёртка сообщения для платежной системы

  • text - текстовое сообщение.

function null_info( $text )
{
	return $this->getResponseError( $text );
}

private function getResponseError( $message )
{
	$sj = '{"error": { "message": "'.$message.'" }}';
	$ej = json_decode($sj, true);
	
	return json_encode($ej);
}


При желании можете указать ссылку на документацию:

Class Payment
{
	var $doc = "http://forum.dle-billing.ru/topic13.html";
...

После описания класса - следует его объявить в переменную $Paysys:

...
}

$Paysys = new Payment;


info.ini

Файл должен содержать версию дополнения, название и описание

[info]
version=1.3
title=WebMoney
desc=WebMoney Transfer — международная система расчетов и среда для ведения бизнеса в сети, основана в 1998 году


icon.png

Иконка для отображения в админ.панели. Рекомендуемый размер - 64x64px. Формат изображения - png