Подключение нового платежного агрегатора в DLE-Billing

Файлы платежных системы (пс) находятся в каталоге /engine/modules/billing/payments/:
  • ../payments/name/ - каталог, содержащий файлы каждой отдельной пс
  • info.ini - файл конфигурации
  • adm.settings.php - основной файл интеграции
По желанию можно установить свою иконку - /engine/skins/billing/payments/name.png
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"];
}
 
Назад
Верх