Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

stud_mai

  • *
  • 14
  • +0/-0
    • Просмотр профиля
Интеграция с Tinkoff
« : 20 Май 2016, 15:05:22 »
Добрый день!

Провожу интеграцию с эквайрингом от Tinkoff. Все вроде получается, но встал вопрос: хочу для отладки писать в файл данные, которыми обменивается umi с tinkoff. Все необходимые функции process(), poll() и validate() описаны в классе tinkoffPayment в файле, расположенном в classes\modules\emarket\classes\payment\systems\. Тамже я использую file_put_contents, чтобы записать необходимые данные в файл, но файл не создается. Почему не понимаю. Может кто-нибудь помочь в этом вопросе?

*

aghigay

  • *****
  • 599
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Интеграция с Tinkoff
« Ответ #1 : 20 Май 2016, 15:18:32 »
Проверьте для начала может ли скрипт писать в тот файл, который вы ему указали. Для этого просто запустите скрипт из командной строки браузера. Заодно так вы проверите что ваш скрипт вообще создает какой-то файл.

Ну а если из командной строки все запускается - проверяйте что в банке указаны правильные настройки и что банк отправляет информацию на ваш сервер.
Мой блог http://umicms.me

*

stud_mai

  • *
  • 14
  • +0/-0
    • Просмотр профиля
Re: Интеграция с Tinkoff
« Ответ #2 : 20 Май 2016, 15:54:12 »
Может немного не так описал проблему... Но у меня не отдельный файл со скриптом. Для ясности приведу пример функции process():
public function process($template = null) {
$this->order->order();

objectProxyHelper::includeClass('emarket/classes/payment/api/', 'TinkoffMerchantAPI');
$tinkoff = new TinkoffMerchantAPI($this->getValue('terminal_key'),$this->getValue('password'),$this->getValue('url'));

$amount = $this->order->getActualPrice() * 100;
$orderId = $this->order->getValue('number');

$customerId = $this->order->getCustomerId();
$customer = umiObjectsCollection::getInstance()->getObject($customerId);
$email = $customer->getValue('e-mail');

if(!$email) {
$email = $customer->getValue('email');
}

$params = array('OrderId' => $orderId, 'Amount' => $amount, 'DATA' => 'Email='.$email);
        $tinkoff->init($params);

$param = array();
$param['link'] = $tinkoff->paymentUrl;

// Вот этот кусок...
$file = 'log.txt';
$info = 'Параметры: ';
$info .= $params['OrderId'];
$info .= PHP_EOL;
$info .= 'Ссылка: ';
$info .= $param['link'];
$info .= PHP_EOL;
file_put_contents($file, $info);
        // ...кода не работает

$this->order->setPaymentStatus('initialized');
list($templateString) = def_module::loadTemplates("emarket/payment/tinkoff/".$template);
return def_module::parseTemplate($templateString, $param);
}

*

aghigay

  • *****
  • 599
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Интеграция с Tinkoff
« Ответ #3 : 20 Май 2016, 19:29:05 »
Пока не вижу что именно вас смутило.

Ваша функция описана в каком-то модуле. Например в модуле emarket

Если для неё указаны все разрешения на запуск, то её можно запустить через вызов: http://site.ru/udata/emarket/process

В этот момент на экране вы увидите результат её работы, а в файловой системе образуется файл. Если конечно до этого процесс дойдет.

Добавлено:
---------
Если речь идет о том, что эта функция срабатывает при обращении правильным образом к какому-то модулю с указанием номера заказа, то вы так же из браузера можете эмулировать это обращение и так же получить результат.
« Последнее редактирование: 20 Май 2016, 19:30:51 от aghigay »
Мой блог http://umicms.me

*

stud_mai

  • *
  • 14
  • +0/-0
    • Просмотр профиля
Re: Интеграция с Tinkoff
« Ответ #4 : 20 Май 2016, 19:49:32 »
Смущало то, что файл не создавался. Решил проблему, дописав путь к корню:
$file =  getServer('DOCUMENT_ROOT') . '/log.txt';
Еще как оказалось почему-то в Total Commander не сразу появлялся созданный файл. Только при сбросе и вновь восстановленном соединении с ftp файл отображался. Так что может быть и первоначальный код работал исправно...

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Интеграция с Tinkoff
« Ответ #5 : 21 Май 2016, 19:45:12 »
Смущало то, что файл не создавался. Решил проблему, дописав путь к корню:
$file =  getServer('DOCUMENT_ROOT') . '/log.txt';
Еще как оказалось почему-то в Total Commander не сразу появлялся созданный файл. Только при сбросе и вновь восстановленном соединении с ftp файл отображался. Так что может быть и первоначальный код работал исправно...

На будущее - лучше вместо getServer('DOCUMENT_ROOT') использовать CURRENT_WORKING_DIR
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/