Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

sasha181

Користувачі
  
  • Публікації

    137
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем sasha181

  1. Хороший модуль. Спасибо большой за проделанную работу.

    Возникло только 2 вопроса:

    1. почему не сделали добавление заказа в адмику магазина? Можно просто хотя бы пустые значения добавить в не заполненные поля. Это поможет не забыть случайно про заказ. Или этому есть свои причины?

    2 как-то много мусора в bootstrap.css ? Просто 100 килобайт css для отрисовки одного окошка как-то слишком много. Для медленных клиентов это реально ощутимо. Например для тех, кто заходит со смарта в магазин. Может реализуете это компактнее в следующих версиях? Думаю, это не только мне нужно.

  2. В OcStore 0.2.2 просто катастрофическая ошибка в контроллере приёма оплаты через qiwi

    в файле

    catalog/controller/payment/qiwi.php

    в строке 143

    нужно вместо

    if( $param->status = 60 ) {
    сделать

    if( $param->status == 60 ) {

    иначе при любом ответе от qiwi товар проставляется как оплаченный.

    В новой версии модуля не проверял, может и там ошибка есть.

    также сегодня когда испраил это, добавил расширенные комментарии при обработке ответов с сервера qiwi

    в итоге вот мой исправленный контроллер (может кому пригодится)

    ВНИМАНИЕ !!! Контроллер из версии OcStore 0.2.2.

    <?php
    class ControllerPaymentQiwi extends Controller {
    protected function index() {
    	 $this->data['button_confirm'] = $this->language->get('button_confirm');
      $this->data['button_back'] = $this->language->get('button_back');
    
      $this->data['action'] = 'https://w.qiwi.ru/setInetBill_utf.do';
    
      $this->load->model('checkout/order');
    
      $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
    
    
      // TETS
      $this->load->language('payment/qiwi');
      $this->data['sub_text_info'] = $this->language->get('sub_text_info');
      $this->data['sub_text_info_phone'] = $this->language->get('sub_text_info_phone');
    
      
      // Переменные
      $this->data['from'] = $this->config->get('qiwi_shop_id');
      $this->data['txn_id'] = $this->session->data['order_id'];
      $this->data['com'] = html_entity_decode($this->config->get('config_store'), ENT_QUOTES, 'UTF-8');
      $this->data['summ'] = $this->currency->format($order_info['total'], $order_info['currency'], $order_info['value'], FALSE);
      $this->data['check_agt'] = false;
      $this->data['lifetime'] = (int)$this->config->get('qiwi_lifetime');
    
    	
    
      $this->data['return'] = HTTP_SERVER . 'index.php?route=checkout/success';
    
    
      if ($this->request->get['route'] != 'checkout/guest_step_3') {
       $this->data['cancel_return'] = HTTP_SERVER . 'index.php?route=checkout/payment';
      } else {
       $this->data['cancel_return'] = HTTP_SERVER . 'index.php?route=checkout/guest_step_2';
      }
      
      if ($this->request->get['route'] != 'checkout/guest_step_3') {
       $this->data['back'] = HTTP_SERVER . 'index.php?route=checkout/payment';
      } else {
       $this->data['back'] = HTTP_SERVER . 'index.php?route=checkout/guest_step_2';
      }
    
      $this->id = 'payment';
      if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/qiwi.tpl')) {
       $this->template = $this->config->get('config_template') . '/template/payment/qiwi.tpl';
      } else {
       $this->template = 'default/template/payment/qiwi.tpl';
      }
    
      $this->render();
    }
    
    public function confirm() {
    
      $this->load->model('checkout/order');
    
      $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
      if(!$order_info) return;
    
      $order_id = $this->session->data['order_id'];
    
      if( $order_info['order_status_id'] == 0) {
       $this->model_checkout_order->confirm($order_id, $this->config->get('qiwi_order_status_progress_id'), 'QIWI');
       return;
      }
      
      if( $order_info['order_status_id'] != $this->config->get('qiwi_order_status_progress_id')) {
       $this->model_checkout_order->update($order_id, $this->config->get('qiwi_order_status_progress_id'),'QIWI',TRUE);
      }
    
    	}
    
    public function fail() {
    
      $this->redirect(HTTP_SERVER . 'index.php?route=checkout/payment');
    
      return TRUE;
    }
    
    public function success() {
      
      $this->redirect(HTTP_SERVER . 'index.php?route=checkout/success');
    
      return TRUE;
    }
    
    public function callback() {
    
       $s = new SoapServer(DIR_CONFIG . 'ishopclientws.wsdl');
       $s->setClass('qiwiSoap');
       $s->handle();
       exit;
    }
    
    }
    class qiwiSoap extends model {
    
    public function __construct() {
      global $registry;
      $this->registry = $registry;
    }
    public function updateBill($param) {
    
    /*
      $k = var_export($param, true);
      $this->log->write('PHP Fatal Error:  ' . $k . ' in qiwi');
    */
    
      // Проверка на ID магазина
      if($param->login != $this->config->get('qiwi_shop_id')) {
       $param->updateBillResult = 150;
       return $param;
      }
    
    
      $order_id = (int)$param->txn;
      $hash = strtoupper( md5( $order_id . strtoupper( md5($this->config->get('qiwi_password')))));
      // Проверка на пароль
      if($param->password != $hash) {
       $param->updateBillResult = 150;
       return $param;
      }
    
      // Проверка на номер заказа
      $this->load->model('checkout/order');
      $order_info = $this->model_checkout_order->getOrder($order_id);
      if ( ! $order_info) {
       $param->updateBillResult = 210;
       return $param;  
      }
      
      $param->updateBillResult = 0;
    
      // Изменяем статус заказа
      $comment = 'QIWI';
      $comments[50] = 'счёт выставлен';
      $comments[52] = 'счёт проводится';
      $comments[60] = 'счёт оплачен';
      $comments[150] = 'счёт отменен пользователем или ошибка на терминале';
      $comments[151] = 'счёт отменен (ошибка авторизации: недостаточно средств на балансе, отклонен абонентом оплате с лицевого счета оператора сотовой связи и т.п.)';
      $comments[160] = 'счёт отменен';
      $comments[161] = 'счёт отменен (истекло время)';
    
      if(isset($comments[$param->status])) $comment .= ': '.$comments[$param->status];
    
      // Стутс проведения счета.
      if( $param->status == 60 ) {
    
       if( $order_info['order_status_id'] == 0) {
    	$this->model_checkout_order->confirm($order_id, $this->config->get('qiwi_order_status_id'), $comment);
    	return $param;
       }
      
       if( $order_info['order_status_id'] != $this->config->get('qiwi_order_status_id')) {
    	$this->model_checkout_order->update($order_id, $this->config->get('qiwi_order_status_id'), $comment, TRUE);  
       }
      } elseif( $param->status >= 150) {
    
       if( $order_info['order_status_id'] == 0) {
    	$this->model_checkout_order->confirm($order_id, $this->config->get('qiwi_order_status_cancel_id'), $comment);
    	return $param;
       }
      
       if( $order_info['order_status_id'] != $this->config->get('qiwi_order_status_cancel_id')) {
    	$this->model_checkout_order->update($order_id, $this->config->get('qiwi_order_status_cancel_id'), $comment, TRUE);  
       }
      } else {
      
       if( $order_info['order_status_id'] == 0) {
    	$this->model_checkout_order->confirm($order_id, $this->config->get('qiwi_order_status_progress_id'), $comment);
    	return $param;
       }
      
       if( $order_info['order_status_id'] != $this->config->get('qiwi_order_status_progress_id')) {
    	$this->model_checkout_order->update($order_id, $this->config->get('qiwi_order_status_progress_id'), $comment, TRUE);  
       }
    
      }
    	  
    	  
      return $param;
    }
    }
    ?>
    
    • +1 1
  3. Подскажите пожалуйста, где найти модуль для реализации баланса пользователя. Чтобы можно было его пополнять автоматически и оплачивать с него покупки. Просто раньше помню натыкался где-то на него. А сейчас не могу найти.


×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.