Автор Тема: Проблема с отображением заказов в админке  (Прочитано 1122 раз)

20 Апрель 2016, 15:39:29
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, всем! У меня следующая проблема:
 установил на сайт способ оплаты через 2Checkout, произвел пробную покупку, платёж прошел, но в админке сайта нет информации о заказе вообще никакой
 подскажите как решить данную проблему, заранее СПАСИБО! 
20 Апрель 2016, 15:59:03
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле смотрите, он должен регистировать заказ.
Возможно что модуль сделан так, что заказы нужно регистировать в ручную.
21 Апрель 2016, 11:04:37
Ответ #2
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не могли бы вы уточнить в каком модуле и где посмотреть? Спасибо!
21 Апрель 2016, 11:12:32
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В модуле должен быть контроллер validation.php (название файла может быть другое) и в нем код создания заказа
$this->module->validateOrder...Если такой код есть, значит заказ должен быть создан при завершении оплаты.
Если нет метода validateOrder, значит модуль не создает заказы.
22 Апрель 2016, 12:29:57
Ответ #4
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Прошу прощения за назойливость! Но не мог бы кто -то более подробно подсказать: я не могу понять в каком модуле это все искать, у меня панель заказав находится в Dashboard(Пульт). Dashboard - это тоже подключаемый модуль? Если да , то где его искать! Заранее всем огромное спасибо!
22 Апрель 2016, 13:07:07
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Это смотреть нужно в папке модуля в коде. В админке нельзя что-то делать с кодом модуля.
22 Апрель 2016, 14:31:20
Ответ #6
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, но это я прекрасно понимаю. А как называется папка с модулем Dashboard(Пульт),вот в чём весь вопрос?
22 Апрель 2016, 14:34:23
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для первой страницы админки есть спец. хуки. Любой модулт можно вывести на этой страницы. Dashboard это не модуль, это страница.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
23 Апрель 2016, 14:40:45
Ответ #8
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уважаемые господа, а может хоть кто нибудь конкретно ответить на мой вопрос?  А то одни пишут надо в модуле исправлять , другие, что Dashboard - это не модуль. Какая-то каша несвязная. Нельзя ли написать что? где? и как?
23 Апрель 2016, 15:10:34
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Prestashop Creating a Dashboard Module
Dashboard - это главная страница админики. На ней могут быть много модулей.
Чтобы модуль выводил информацию на Dashboard, нужно установить его в хуки - dashboardZone..., dashboardData.

Вам писали про то, что проверять нужно платежный модуль 2Checkout. Код модуля в файлах, которые находятся в папке /modules/2checkout/...
23 Апрель 2016, 21:18:31
Ответ #10
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ребят, подскажите что дальше. Вот код контролёра validation.php:
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
include(dirname(__FILE__).'/twocheckout.php');

if (!defined('_PS_VERSION_'))
    exit;

$twocheckout = new Twocheckout();
if ($twocheckout->active && isset($_POST['token']))
    $twocheckout->processPayment($_POST['token']);
else
    die('You must submit a valid token to use the 2Checkout Payment API.');
23 Апрель 2016, 21:21:36
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В методе processPayment что за код?
Там есть validateOrder?
23 Апрель 2016, 22:29:48
Ответ #12
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
function processPayment($token)
    {
        include(dirname(__FILE__).'/lib/Twocheckout/TwocheckoutApi.php');

        $cart = $this->context->cart;
        $user = $this->context->customer;
        $delivery = new Address(intval($cart->id_address_delivery));
        $invoice = new Address(intval($cart->id_address_invoice));
        $customer = new Customer(intval($cart->id_customer));
        $currencies = Currency::getCurrencies();
        $authorized_currencies = array_flip(explode(',', $this->currencies));
        $currencies_used = array();
        foreach ($currencies as $key => $currency) {
            if (isset($authorized_currencies[$currency['id_currency']])) {
                $currencies_used[] = $currencies[$key];
            }
        }
        foreach ($currencies_used as $currency) {
            if ($currency['id_currency'] == $cart->id_currency) {
                $order_currency = $currency['iso_code'];
            }
        }

        try {

            $params = array(
                "sellerId" => Configuration::get('TWOCHECKOUT_SID'),
                "merchantOrderId" => $cart->id,
                "token"      => $token,
                "currency"   => $order_currency,
                "total"      => number_format($cart->getOrderTotal(true, 3), 2, '.', ''),
                "billingAddr" => array(
                    "name" => $invoice->firstname . ' ' . $invoice->lastname,
                    "addrLine1" => $invoice->address1,
                    "addrLine2" => $invoice->address2,
                    "city" => $invoice->city,
                    "state" => ($invoice->country == "United States" || $invoice->country == "Canada") ? State::getNameById($invoice->id_state) : 'XX',
                    "zipCode" => $invoice->postcode,
                    "country" => $invoice->country,
                    "email" => $customer->email,
                    "phoneNumber" => $invoice->phone
                )
            );

            if ($delivery) {
                $shippingAddr = array(
                    "name" => $delivery->firstname . ' ' . $delivery->lastname,
                    "addrLine1" => $delivery->address1,
                    "addrLine2" => $delivery->address2,
                    "city" => $delivery->city,
                    "state" => (Validate::isLoadedObject($delivery) AND $delivery->id_state) ? new State(intval($delivery->id_state)) : 'XX',
                    "zipCode" => $delivery->postcode,
                    "country" => $delivery->country
                );
                array_merge($shippingAddr, $params);
            }

            if (Configuration::get('TWOCHECKOUT_SANDBOX')) {
                TwocheckoutApi::setCredentials(Configuration::get('TWOCHECKOUT_SID'), Configuration::get('TWOCHECKOUT_PRIVATE'), 'sandbox');
            } else {
                TwocheckoutApi::setCredentials(Configuration::get('TWOCHECKOUT_SID'), Configuration::get('TWOCHECKOUT_PRIVATE'));
            }
            $charge = Twocheckout_Charge::auth($params);

        } catch (Twocheckout_Error $e) {
            $message = 'Payment Authorization Failed';
            Tools::redirect('index.php?controller=order&step=3&twocheckouterror='.$message);
        }

        if (isset($charge['response']['responseCode'])) {
            $order_status = (int)Configuration::get('TWOCHECKOUT_ORDER_STATUS');
            $message = $charge['response']['responseMsg'];
            $this->validateOrder((int)$this->context->cart->id, _PS_OS_PAYMENT_, $charge['response']['total'], $this->displayName, $message, array(), null, false, $this->context->customer->secure_key);
            Tools::redirect('index.php?controller=order-confirmation?key=' . $user->secure_key . '&id_cart=' . (int)
                $cart->id . '&id_module=' . (int) $this->module->id . '&id_order=' . (int) $this->module->currentOrder);
        } else {
            $message = 'Payment Authorization Failed';
            Tools::redirect('index.php?controller=order&step=3&twocheckouterror='.$message);
        }
    }
24 Апрель 2016, 11:01:29
Ответ #13
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Вы включите номальный режим в модуле, а не sandbox и тогда заказ будет регистироваться.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
24 Апрель 2016, 12:10:10
Ответ #14
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответы, но пока не разобрался. Ситуация следующая: в установленном у меня модуле(2Checkout PayPal Direct v0.1) возможности выбора работы с Sandbox - нет(вот скин):


                             на сайте этот способ оплаты выглядит вот так:





    НО есть еще один модуль (2Checkout Payment API) в котором есть возможность выбора работы с Sandbox (вот его скин):



на сайте это выглядит следующим образом:



         Разница между ними в том, что если выбираешь первый, то переходишь на страницу оплаты в 2Checkout и оплачиваешь заказ, но на сайте это никак не отображается.
А если выбираешь второй способ, вводишь данные и нажимаешь Submit Payment, то по-сути вообще ничего не происходит, кроме вот этой надписи:



 
         которая через несколько секунд пропадает. Помогите разобраться. Заранее огромное спасибо!