Jump to content
IvanDevelop

Tinkoff модуль оплаты вывод кнопки

Recommended Posts

Здравствуйте!

При установке модуля возникла проблема, модуль встал, но на странице заказа кнопки нет. Стал копаться и по аналогии с методом robokassa в файле:

\system\storage\modification\catalog\controller\account\order.php

Добавил код

if ($order_info['payment_code'] && $order_info['payment_code']=='tinkoff') {
    $this->load->model('extension/payment/'.$order_info['payment_code']);
    if (isset($this->session->data['order_id'])) {
        $tmp_order_id=$this->session->data['order_id'];
    }
    $this->session->data['order_id']=$order_info['order_id'];
    
    $data['payment_view']=$this->load->controller($this->{'model_extension_payment_'
    .$order_info['payment_code']});
    
    if (isset($tmp_order_id)) {
        $this->session->data['order_id']=$tmp_order_id;
    }
    else {
        unset($this->session->data['order_id']);
    }
}

И получаем ошибку: Unknown: Object of class Proxy could not be converted to string in /system/storage/modification/system/engine/loader.php on line 11

В инструкции по модулю нет ни чего про то что надо модифицироать контроллеры.

Или модуль интегрируется как то иначе?

 

В контроллере \system\storage\modification\catalog\controller\checkout\checkout_simple.php он отрабатывает без проблем. Получается как то надо отрендерить view и присвоить в

$data['payment_view']

в \system\storage\modification\catalog\controller\account\order.php которая и выводит кнопку оплаты.

Edited by IvanDevelop

Share this post


Link to post
Share on other sites
10 минут назад, IvanDevelop сказал:

но на странице заказа кнопки нет

на странице заказа, а вы зачем-то правите контроллер заказа в аккаунте
 

смотрите файлы + лог ошибок + лог ответов сервера на предмет 500 ответа
catalog/controller/extension/payment/tinkoff.php
catalog/view/theme/default/template/extension/payment/tinkoff.tpl

Edited by thentru

Share this post


Link to post
Share on other sites
25 минут назад, thentru сказал:

на странице заказа, а вы зачем-то правите контроллер заказа в аккаунте
 

смотрите файлы
catalog/controller/extension/payment/tinkoff.php
catalog/view/theme/default/template/extension/payment/tinkoff.tpl 

Там всё логично по коду, как то отрендерить view надо в контроллере по аналогии с методом robokassa. Как мне кажется...

Попробовал насильно форму тз документации tinfoff влепить:

$form = <<<FORM
<style>.tinkoffPayRow{display:block;margin:1%;width:160px;}</style>
<script src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff_v2.js"></script>
<form name="TinkoffPayForm" onsubmit="pay(this); return false;">
	<input class="tinkoffPayRow" type="hidden" name="terminalkey" value="1526809637201DEMO">
	<input class="tinkoffPayRow" type="hidden" name="frame" value="true">
	<input class="tinkoffPayRow" type="hidden" name="language" value="ru">
    <input class="tinkoffPayRow" type="text" placeholder="Сумма заказа" name="amount" required>
    <input class="tinkoffPayRow" type="text" placeholder="Номер заказа" name="order">
    <input class="tinkoffPayRow" type="text" placeholder="Описание заказа" name="description">
    <input class="tinkoffPayRow" type="text" placeholder="ФИО плательщика" name="name">
    <input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email">
    <input class="tinkoffPayRow" type="text" placeholder="Контактный телефон" name="phone">
    <input class="tinkoffPayRow btn btn-success" type="submit" value="Оплатить">
</form>
FORM;
$data['payment_view'] = $form;

Кнопка появляется, оплата работает, но ни как не связана с базой.

 

Шаблон tinkoff_checkout.tpl, тут и есть вывод нужной формы.

Edited by IvanDevelop
Дополнил

Share this post


Link to post
Share on other sites

Допилил \system\storage\modification\catalog\controller\account\order.php

перед строкой

$this->response->setOutput($this->load->view('account/order_info', $data));

Следующее:

if ($order_info['payment_code'] && $order_info['payment_code']=='tinkoff') {
    $this->load->model('extension/payment/'.$order_info['payment_code']);
    if (isset($this->session->data['order_id'])) {
        $tmp_order_id=$this->session->data['order_id'];
    }
    $this->session->data['order_id']=$order_info['order_id'];
    $params = [
        'terminalkey' => $this->config->get('tinkoff_terminal_key'),
        'secret' => $this->config->get('tinkoff_secret_key'),
        'currency' => $order_info['currency_code'],
        'language' => $this->config->get('tinkoff_payment_language'),
        'frame' => 'true',
        'amount' => $order_info['total'],
        'order' => $order_info['order_id'],
        'description' => $order_info['comment'],
        'email' => $order_info['email'],
        'phone' => $order_info['telephone']
    ];
    $view = [
        'payment' => [
            'params' => $params
        ]
    ];
    $data['payment_view'] = $this->load->view($this->config->get('config_template') . '/extension/payment/tinkoff_checkout_custom.tpl', $view);

    if (isset($tmp_order_id)) {
        $this->session->data['order_id']=$tmp_order_id;
    }
    else {
        unset($this->session->data['order_id']);
    }
}

И создал view своё:

<style>.tinkoffPayRow{display:block;margin:1%;width:160px;}</style>
<script src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff_v2.js"></script>
<form name="TinkoffPayForm" onsubmit="pay(this); return false;">
    <?php foreach($payment['params'] as $name => $value): ?>
    <input type="hidden" name="<?php echo $name; ?>" value="<?php echo $value; ?>">
    <?php endforeach; ?>
    <input class="tinkoffPayRow btn btn-success" type="submit" value="Оплатить">
</form>

Пока всё в норме, осталось прикрутить страницы ответов со сменой статуса и т.п.

После продолжу пост.

Share this post


Link to post
Share on other sites
Posted (edited)

А что куда добавлять? Подскажите пожалуйста

Edited by igorvolg

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.