1. Идем в \bff\modules\bills\base.php
Добовляем
    const PS_PRIVAT24= 32; # PRIVAT24
Тут же
        self::PS_PRIVAT24 => array('id' => self::PS_PRIVAT24,'title' => 'Приват24', 'key' => 'privat24', 'desc' => ''),
2. Идем в \bff\modules\bills\frontend.php
Добвляем
    protected function privat24_request()
    {
        $this->log('privat24: ѕроверка платежа');
        $payment   = ( ! empty($_POST['payment'])   ? $_POST['payment']   : '');
        $signature = ( ! empty($_POST['signature']) ? $_POST['signature'] : '');
        $pass = config::sys('bills.privat24.password');
        $crc = sha1(md5($payment.$pass));
        if ($crc != $signature) {
            $this->log('privat24: неверна€ контрольна€ сумма "'.$crc.'" !== "'.$signature);
            return $this->payError('crc_error');
        }
        $this->log('privat24: проверка контрольной суммы пройдена "'.$crc.'" == "'.$signature);
        parse_str($payment, $aPayment);
        $InvId=0;
        $OutSum=0;
        if (empty($aPayment['amt']) || empty($aPayment['order'])) {
            $this->log('privat24: Ќекорректный номер счета, (#'.$aPayment['order'].') amt='.$aPayment['amt']);
            $this->payError('wrong_bill_id');
        } else {
            $InvId=$aPayment['order'];
            $OutSum=$aPayment['amt'];
        }
        $mResult = $this->processBill($InvId, $OutSum, self::PS_PRIVAT24);
        if ($mResult === true) {
            $this->log('privat24: ѕлатежка зачислена');
            $this->redirect( static::url('success') );
        } else {
            $this->log('privat24: ќшибка платежки');
            return $mResult;
        }
        $this->redirect( static::url('fail') );
        exit;
    }
  
3. Идем в \bff\modules\bills\tpl\def\pay.request.form.php
Добавляем
    # Privat24 (https://api.privatbank.ua/article/4/)
    case Bills::PS_PRIVAT24:
    {
        echo '<form action="https://api.privatbank.ua/p24api/ishop" method="POST">
                <input type="hidden" name="amt" value="'.$amount.'"/>
                <input type="hidden" name="ccy" value="UAH" />
                <input type="hidden" name="merchant" value="'.$privat24_merchantid.'" />
                <input type="hidden" name="order" value="'.$bill_id.'" />
                <input type="hidden" name="details" value="'.$bill_description.'" />
                <input type="hidden" name="ext_details" value="" />
                <input type="hidden" name="pay_way" value="privat24" />
                <input type="hidden" name="return_url" value="'.Bills::url('my.history').'" />
                <input type="hidden" name="server_url" value="http://свой_сайт.ру/bill/process/privat24" />
        </form>';
    } break;
4. Идем в \config\sys.php
Добавляем
    'bills.privat24.merchantid' => 'тут ваш айди мерчанта',
    'bills.privat24.password' => 'тут пароль вашего мерчанта',
5. Идем в \modules\bills\bills.bl.class.php
Добавляем
            self::PS_PRIVAT24,
Тут же
                'privat24'     => array(
                'id'           => self::PS_PRIVAT24,
                'way'          => 'privat24',
                'logo_desktop' => $logoUrl . 'privat24.png',
                'logo_phone'   => $logoUrl . 'privat24.png',
                'title'        => _t('bills', 'ѕриват24'),
                'currency_id'  => 1, # тут айди валюты 1=грн, 2=рубли (айди смотрите в админке-валюта)
            ),
6. Идете в \img\ps
И добавляете в папку картинку privat24.png или меняете на свою.