Иконка ресурса

[TC] bdPaygate: Free-Kassa [НЕ ПОДДЕРЖИВАЕТСЯ] 1.3

Нет прав для скачивания
zladey1986, а правила не читал
 
Что то никак не получается догнать в проблем, плагин установил, ключи и id указал, при создании повышения у меня нет валюты руб создаю в usd но там перекидывает на палку, может кто подскажет.
Тему всю перечитал)
И вот тут у вас всё так же?
1583273448539.png
 
7.1. Загружать файлы и изображения необходимо только на сервер нашего проекта (используя кнопку "Загрузить файл", находящуюся в редакторе или просто перетащив нужный элемент со своего компьютера в окно редактора).
 
Может кто под новую форму подогнать этот плагин для xenForo 1.5.x ?
 
Там вроде чисто ссылки другие. Апи точно такое же, но могу врать, ибо давно кому-то подгонял для другой цмски поддержку Фрикассы, и уже не помню всех деталей.

А вообще, уходите с 1.х. Мёртвая ветка уже.
 
Там вроде чисто ссылки другие. Апи точно такое же, но могу врать, ибо давно кому-то подгонял для другой цмски поддержку Фрикассы, и уже не помню всех деталей.

А вообще, уходите с 1.х. Мёртвая ветка уже.
да я смотрел(менял ссылку на обработчик нового сайта) не проходит сигнатура (Ошибка подписи
), что то там изменилось значит, а переходить на 2.х не хочу т.к. на 1.х. много модулей используется

Код:
<?php

class bdPaygateFreeKassa_Processor extends bdPaygate_Processor_Abstract
{
    const CURRENCY_RUB = 'rub';

    public function getSupportedCurrencies()
    {
        $currencies = array();
        $currencies[] = self::CURRENCY_RUB;

        return $currencies;
    }

    public function isAvailable()
    {
        $options = XenForo_Application::getOptions();
        // FreeKassa не поддерживает тестовый режим,
        // поэтому на всякий случай отключаем её, если включён "Sandbox"
        if (empty($options->bdPaygateFreeKassa_ID) || empty($options->bdPaygateFreeKassa_SecretKey) || empty($options->bdPaygateFreeKassa_SecretKey_2) || $this->_sandboxMode()) {
            return false;
        }

        return true;
    }

    public function isRecurringSupported()
    {
        return false;
    }

    public function validateCallback(
        Zend_Controller_Request_Http $request,
        &$transactionId,
        &$paymentStatus,
        &$transactionDetails,
        &$itemId
    )
    {
        $amount = false;
        $currency = false;

        return $this->validateCallback2($request, $transactionId, $paymentStatus, $transactionDetails, $itemId, $amount,
            $currency);
    }

    public function validateCallback2(
        Zend_Controller_Request_Http $request,
        &$transactionId,
        &$paymentStatus,
        &$transactionDetails,
        &$itemId,
        &$amount,
        &$currency
    )
    {
        // TODO: Пофиксить алгоритм
        $input = new XenForo_Input($request);
        $transactionDetails = $input->getInput();

        if(empty($transactionDetails['SIGN'])) {
            $this->_setError("Transaction signature is empty");
            return false;
        }
        $signature = $transactionDetails['SIGN'];

        $transactionId = (!empty($transactionDetails['intid']) ? ('freekassa_' . $transactionDetails['intid']) : '');
        $paymentStatus = bdPaygate_Processor_Abstract::PAYMENT_STATUS_OTHER;

        $amount = number_format($transactionDetails['AMOUNT'], 2);
        $currency = self::CURRENCY_RUB;

        $processorModel = $this->getModelFromCache('bdPaygate_Model_Processor');
        $options = XenForo_Application::get('options');
        $freekassa_key = $options->bdPaygateFreeKassa_SecretKey_2;

        // Проверяем, не была ли уже проведена такая операция
        $log = $processorModel->getLogByTransactionId($transactionId);
        if (!empty($log)) {
            $this->_setError("Transaction {$transactionId} has already been processed");
            return false;
        }

        // Генерация MD5 подписи
        $crc = md5($transactionDetails['MERCHANT_ID'].':'.$transactionDetails['AMOUNT'].':'.$freekassa_key.':'.$transactionDetails['MERCHANT_ORDER_ID']);

        // Сверяем нашу подпись с той, которую мы получили
        if ($crc != $signature) {
            $this->_setError("{$transactionId} Request not validated + " . $crc . ' + ' . $signature);
            return false;
        }

        // https://www.free-kassa.ru/docs/api.php#step3
        // Платеж успешно проведен
        $itemId = $transactionDetails['MERCHANT_ORDER_ID'];
        $paymentStatus = bdPaygate_Processor_Abstract::PAYMENT_STATUS_ACCEPTED;
        echo "YES";

        return true;
    }

    public function generateFormData($amount, $currency, $itemName, $itemId, $recurringInterval = false, $recurringUnit = false, array $extraData = array())
    {
        $this->_assertAmount($amount);
        $this->_assertCurrency($currency);
        $this->_assertItem($itemName, $itemId);
        $this->_assertRecurring($recurringInterval, $recurringUnit);

        $formAction = 'https://pay.freekassa.ru';
        $callToAction = new XenForo_Phrase('bdpaygate_freekassa_call_to_action');

        $options = XenForo_Application::get('options');

        $payment = array(
            'm'     => $options->bdPaygateFreeKassa_ID,
            'oa'    => $amount,
            'o'     => $itemId,
            's'     => $options->bdPaygateFreeKassa_SecretKey,
            'currency'    => $currency,
           
        );

        //
        // Кодирование MD5 хэша в BASE64
        $payment['s'] = md5(implode(':', $payment));

        // Генерация формы
        $form = "<form action=\"{$formAction}\" method=\"GET\" accept-charset=\"utf-8\">";
        foreach ($payment as $item => $value){
            $form .= "<input type=\"hidden\" name=\"$item\" value=\"$value\" />";
        }
        $form .= "<input type=\"submit\" value=\"{$callToAction}\" class=\"button\"/></form>";

        return $form;
    }
}
 
Последнее редактирование:
Нашел проблему надо убрать из подписи суммы(100.00) копейки, кто подскажет как их убрать?

$amount = number_format($transactionDetails['AMOUNT'], 2);
 
Попробуйте просто $transactionDetails['AMOUNT'] или (float)$transactionDetails['AMOUNT'] оставить
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу