Jump to content
lenadzhamalieva

SyntaxError: JSON Parse error: Unrecognized token '<' OK

Recommended Posts

помогите разобраться, при оформлении заказа появляется вот такое ругательство:

SyntaxError: JSON Parse error: Unrecognized token '<' OK Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105{"redirect":"http://ххх/index.php?route=checkout/success"}

код:

 

<?php
class ControllerExtensionModuleNotificationTelegram extends Controller {
        
    public function sendOrderAlert(&$route, &$data, &$output) {

        $order_id = $data[0];
        $this->load->model('checkout/order');
        $order_info = $this->model_checkout_order->getOrder($order_id);

        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');

        if (isset($setting['module_notificationTelegram_order_alert'])) {
            
            $this->load->model('account/order');
            if (count($this->model_account_order->getOrderHistories($order_id)) <= 1) {
                $message = $this->replaceMessage($setting['module_notificationTelegram_meassage'],$order_info);
//                  $message .= $this->buldArray($order_info);

                $this->sendMessagetoTelegam($message);

                if (strpos(strtolower($setting['module_notificationTelegram_meassage']), '{products}') !== false) {
                    $order_products = $this->model_checkout_order->getOrderProducts($order_id);
                    $products = $this->bulidProducts($order_products);
                    $this->sendMessagetoTelegam($products);

                }
            }
            
        }
        
    }
    
    public function sendAccountAlert(&$route, &$data, &$output) {
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        if (isset($setting['module_notificationTelegram_customer_alert'])) {

            $message = $this->replaceMessage($setting['module_notificationTelegram_new_account_meassage'],$data[0]);
            $this->sendMessagetoTelegam( $message);
            
        }
    }
    
    public function sendReturnProductAlert(&$data,&$output) {
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        if (isset($setting['module_notificationTelegram_return_alert'])) {
            
            $message = "Return request \n ";
            $this->sendMessagetoTelegam( $message);
        }
    }
    
    
    //Send  message To notificationTelegram
    public function sendMessagetoTelegam($msg) {
        
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        
        //print_r($setting);
        $botToken = $setting['module_notificationTelegram_boot_token'];
        $website = "https://api.telegram.org/bot" . $botToken;
        $chatIds = $setting['module_notificationTelegram_chat_ids'];  //Receiver Chat Id
        
        if (is_array($chatIds)) {
            foreach ($chatIds as $val) {
                $this->initMessage($botToken, $val, $msg);
            }
        } else {
            $this->initMessage($botToken, $chatIds, $msg);
        }
    }
    private function initMessage($botToken, $chatID, $msg) {
        
        $website = "https://api.telegram.org/bot" . $botToken;
        
        $params = [
            'chat_id' => $chatID,
            'text' => $msg,
        ];
        $ch = curl_init($website . '/sendMessage');
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $result = curl_exec($ch);
        curl_close($ch);            
    }
    
    public function buldArray($arr) {
        if (is_array($arr)) {
            $dataAttributes = array_map(function ($value, $key) {
                return @"$key ---> $value  \n";
            }, array_values($arr), array_keys($arr));
            
            return $dataAttributes = implode(' ', $dataAttributes);
        }
    }
    
    public function replaceMessage($string,$arr) {
        return   $str = preg_replace_callback('/{(\w+)}/', function($match) use($arr) {
            return $arr[$match[1]];
        }, $string );
        
    }
    
    protected function  bulidProducts($products){

        $pr = array();

        foreach ($products as $product){
            $pr[] = "Name : $product[name]  \n    Price: $product[price] \n qty : $product[quantity] ";
        }

        return implode("------- \n",$pr);
        
    }
        
}

Share this post


Link to post
Share on other sites

обращайтесь к автору

 

не выставляйте код модулей 

Share this post


Link to post
Share on other sites
Спойлер

 

52 минуты назад, lenadzhamalieva сказал:

помогите разобраться, при оформлении заказа появляется вот такое ругательство:

SyntaxError: JSON Parse error: Unrecognized token '<' OK Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105Notice: Undefined index: products in /var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php on line 105{"redirect":"http://ххх/index.php?route=checkout/success"}

код:

 

<?php
class ControllerExtensionModuleNotificationTelegram extends Controller {
        
    public function sendOrderAlert(&$route, &$data, &$output) {

        $order_id = $data[0];
        $this->load->model('checkout/order');
        $order_info = $this->model_checkout_order->getOrder($order_id);

        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');

        if (isset($setting['module_notificationTelegram_order_alert'])) {
            
            $this->load->model('account/order');
            if (count($this->model_account_order->getOrderHistories($order_id)) <= 1) {
                $message = $this->replaceMessage($setting['module_notificationTelegram_meassage'],$order_info);
//                  $message .= $this->buldArray($order_info);

                $this->sendMessagetoTelegam($message);

                if (strpos(strtolower($setting['module_notificationTelegram_meassage']), '{products}') !== false) {
                    $order_products = $this->model_checkout_order->getOrderProducts($order_id);
                    $products = $this->bulidProducts($order_products);
                    $this->sendMessagetoTelegam($products);

                }
            }
            
        }
        
    }
    
    public function sendAccountAlert(&$route, &$data, &$output) {
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        if (isset($setting['module_notificationTelegram_customer_alert'])) {

            $message = $this->replaceMessage($setting['module_notificationTelegram_new_account_meassage'],$data[0]);
            $this->sendMessagetoTelegam( $message);
            
        }
    }
    
    public function sendReturnProductAlert(&$data,&$output) {
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        if (isset($setting['module_notificationTelegram_return_alert'])) {
            
            $message = "Return request \n ";
            $this->sendMessagetoTelegam( $message);
        }
    }
    
    
    //Send  message To notificationTelegram
    public function sendMessagetoTelegam($msg) {
        
        $this->load->model('setting/setting');
        $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
        
        //print_r($setting);
        $botToken = $setting['module_notificationTelegram_boot_token'];
        $website = "https://api.telegram.org/bot" . $botToken;
        $chatIds = $setting['module_notificationTelegram_chat_ids'];  //Receiver Chat Id
        
        if (is_array($chatIds)) {
            foreach ($chatIds as $val) {
                $this->initMessage($botToken, $val, $msg);
            }
        } else {
            $this->initMessage($botToken, $chatIds, $msg);
        }
    }
    private function initMessage($botToken, $chatID, $msg) {
        
        $website = "https://api.telegram.org/bot" . $botToken;
        
        $params = [
            'chat_id' => $chatID,
            'text' => $msg,
        ];
        $ch = curl_init($website . '/sendMessage');
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $result = curl_exec($ch);
        curl_close($ch);            
    }
    
    public function buldArray($arr) {
        if (is_array($arr)) {
            $dataAttributes = array_map(function ($value, $key) {
                return @"$key ---> $value  \n";
            }, array_values($arr), array_keys($arr));
            
            return $dataAttributes = implode(' ', $dataAttributes);
        }
    }
    
    public function replaceMessage($string,$arr) {
        return   $str = preg_replace_callback('/{(\w+)}/', function($match) use($arr) {
            return $arr[$match[1]];
        }, $string );
        
    }
    
    protected function  bulidProducts($products){

        $pr = array();

        foreach ($products as $product){
            $pr[] = "Name : $product[name]  \n    Price: $product[price] \n qty : $product[quantity] ";
        }

        return implode("------- \n",$pr);
        
    }
        
}

 

 

 

Спасибо за код.

Share this post


Link to post
Share on other sites
2 часа назад, Otvet сказал:

не выставляйте код модулей 

 

1 час назад, buslikdrev сказал:

Спасибо за код.

 

ну модуль то фришный.

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=34325

 

2 часа назад, lenadzhamalieva сказал:

помогите разобраться, при оформлении заказа появляется вот такое ругательство:

 

Если нужен нормальный рабочий модуль для уведомлений в телеграм, прощу.

 

Share this post


Link to post
Share on other sites
5 часов назад, lenadzhamalieva сказал:

Undefined index: products

Ищи в 105 строке, где получаешь products

Share this post


Link to post
Share on other sites
8 часов назад, esculapra сказал:

Ищи в 105 строке, где получаешь products

если бы я понимала что именно не так.. подскажите, будте добры

Share this post


Link to post
Share on other sites
14 часов назад, lenadzhamalieva сказал:

/var/www/u0522611/data/www/ххх/catalog/controller/extension/module/notificationTelegram.php

У меня не стоит такой модуль. по приведенному коду

protected function  bulidProducts($products){ //в функцию передается массив товаров

этот массив передается отсюда

                    $order_products = $this->model_checkout_order->getOrderProducts($order_id);
                    $products = $this->bulidProducts($order_products);

нужно проверить, приходит ли массив ($order_products) из модели mode/checkout/order.php

 

Share this post


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

У меня не стоит такой модуль. по приведенному коду

protected function  bulidProducts($products){ //в функцию передается массив товаров

этот массив передается отсюда

                    $order_products = $this->model_checkout_order->getOrderProducts($order_id);
                    $products = $this->bulidProducts($order_products);

нужно проверить, приходит ли массив ($order_products) из модели mode/checkout/order.php

 

спасибо, сейчас попробую разобраться

Share this post


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

спасибо, сейчас попробую разобраться

я не изменяла model/checkout/order.php там все по умолчанию, ничего не могу понять

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.