OpenCart и 2checkout.com | OpenCart

Прикрутил к магазину на OpenCart (1.5.3.1) модуль платежа через 2checkout.com. Поймал баг – магазин отдает сумму в дефолтной валюте, и если у нас к примеру, дефолтная валюта – доллар а цену мы выбрали в рублях – то при оформлении заказа получаем на странице оплаты цифру рублевой цены но уже в долларах. Например: товар стоит $3, в рублях это примерно 90руб. Оформляем через 2checkout.com и видим $90.

Решение отсюда:

http://forum.opencart.com/viewtopic.php?f=113&t=70678&p=314591&#p314591

Дефолтной валютой ставим доллар, и в файле /catalog/controller/payment/twocheckout.php меняем:

$this->data['total'] = $this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false);

на

$this->data['total'] = number_format($order_info['total'], 2, '.', '');

Вторая история с опернкарт и 2CO – если покупатель не нажмет кнопку Finish your order – заказ не отобразится в админке опенкарта. Для этого есть фикс от 2CO. В админке 2checkout.com меняем тип редиректа после оформления заказа:

SITE MANAGEMENT – Direct Return – Header Redirect (Your URL)

Урл вставляем стандартный.

http://site.com/index.php?route=payment/twocheckout/callback

В файле catalog/controller/payment/twocheckout.php меняем функцию public function callback() (в конце файла все до последней фигурной скобки):

public function callback() {

      $this->load->model('checkout/order');
      
      $order_info = $this->model_checkout_order->getOrder($this->request->get['cart_order_id']);

      if (!$this->config->get('twocheckout_test')) {
         $order_number = $this->request->get['order_number'];
      } else {
         $order_number = '1';
      }
      
      if (strtoupper(md5($this->config->get('twocheckout_secret') . $this->config->get('twocheckout_account') . $order_number . $this->request->get['total'])) == $this->request->get['key']) {
         $this->model_checkout_order->confirm($this->request->get['cart_order_id'], $this->config->get('twocheckout_order_status_id'));
   
         $this->redirect(HTTP_SERVER . 'index.php?route=checkout/success');   
      } else {
         echo 'The response from 2checkout.com can\'t be parsed. Contact site administrator, please!';
      }
}

После того как покупатель ввел свои данные произойдет автоматический редирект на ваш сайт а заказ будет отображен в админке.

  1. Марат:

    The response from 2checkout.com can’t be parsed. Contact site administrator, please!

    вот такую ошибку начинает выдавать.