liqpay / plugin-opencart

MIT License
35 stars 39 forks source link

Совместимость с 2.3.0.2 #10

Open serjiomati opened 7 years ago

serjiomati commented 7 years ago

Чи буде модуль для версії 2.3.0.2?

andrewdidovik commented 7 years ago

Спасибо за фидбек Да, ближайшее время

semaster commented 7 years ago

Тоже присоединяюсь. Обновите, пожалуйста, для последней версии.

Corsar2008 commented 7 years ago

А планируете ли вы как-то решить проблему с перекидыванием на страницу success при отмене оплаты на сайте liqpay? Жму оплатить заказ, перекидывает на Ликпей, жму Отмена оплаты, перекидывает на сайт, пишет, спасибо заказ оплачен, или если денег на карте не было, тоже самое.. Ну не серьезно как-то ((

andrewdidovik commented 7 years ago

Спасибо за отзывы <А планируете ли вы как-то решить проблему с перекидыванием на страницу success при отмене оплаты на сайте liqpay? Жму оплатить заказ, перекидывает на Ликпей, жму Отмена оплаты, перекидывает на сайт, пишет, спасибо заказ оплачен, или если денег на карте не было, тоже самое.. Ну не серьезно как-то ((> Обратите внимание, что когда жмете кнопку "назад", "отмена" и т.д. - используется result_url - вы его указываете в настройках чекаута. И там же есть настройка, с помощью которой вы можете себе отправить дополнительные data при редиректе. И можете сами анализировать результат транзакции, или действий пользователя на чекауте.

trialon77 commented 7 years ago

dpzz, вы серьезно полагаете, что сделать то, что вы описали сможет каждый пользователь Opencart? На одном из форумов предожили такую правку внести, просьба посмотреть код:

Замените в файле liqpay_checkout.php на это

class ControllerPaymentLiqPayCheckout extends Controller {
public function index() {
$data['button_confirm'] = $this->language->get('button_confirm');
$order_id = $this->session->data['order_id'];

$this->load->model('checkout/order');

$order_info = $this->model_checkout_order->getOrder($order_id);

$version = '3';
$description = 'Order #'.$order_id;
$result_url = $this->url->link('payment/liqpay_checkout/renderstatus', '', 'SSL');
$server_url = $this->url->link('payment/liqpay_checkout/callback', '', 'SSL');
$private_key = $this->config->get('liqpay_checkout_signature');
$public_key = $this->config->get('liqpay_checkout_merchant');
$action = 'pay';

$currency = $order_info['currency_code'];
if ($currency == 'RUR') { $currency = 'RUB'; }
$amount = $this->currency->format(
$order_info['total'],
$order_info['currency_code'],
$order_info['currency_value'],
false
);

$pay_way = $this->config->get('liqpay_checkout_pay_way');
$language = $this->config->get('liqpay_checkout_language');

$send_data = array('version' => $version,
'public_key' => $public_key,
'amount' => $amount,
'currency' => $currency,
'description' => $description,
'order_id' => $order_id,
'action' => $action,
'language' => $language,
'server_url' => $server_url,
'result_url' => $result_url);

$pay_way = $this->config->get('liqpay_checkout_pay_way');
if(isset($pay_way)){
$send_data['pay_way'] = $pay_way;
}

$liqpay_data = base64_encode(json_encode($send_data));
$liqpay_signature = base64_encode(sha1($private_key.$liqpay_data.$private_key, 1));

$data['data'] = $liqpay_data;
$data['signature'] = $liqpay_signature;
$data['action'] = $this->config->get('liqpay_checkout_api');

$this->language->load('payment/checkout_liqpay'); // грубо говоря это путь к файлу, как и маршрут, только для языка
$data['text_header'] = $this->language->get('text_header');
$data['text_instruction'] = $this->language->get('text_instruction');

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/liqpay_checkout.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/payment/liqpay_checkout.tpl', $data);
} else {
return $this->load->view('default/template/payment/liqpay_checkout.tpl', $data);
}
}

public function renderstatus() {
if ( $this->request->post ) {
$data = $this->request->post['data'];
$parsed_data = json_decode(base64_decode($data), true);

if($parsed_data['status'] == 'success')
$this->response->redirect($this->url->link('checkout/success', '', 'SSL'));
else
$this->response->redirect($this->url->link('checkout/failure', '', 'SSL'));
} else {
$this->response->redirect($this->url->link('checkout/failure', '', 'SSL'));
}
}

public function callback() {
$data = $this->request->post['data'];
$signature = base64_encode(sha1($this->config->get('liqpay_checkout_signature') . $data . $this->config->get('liqpay_checkout_signature'), true));

$parsed_data = json_decode(base64_decode($data), true);
$order_id = $parsed_data['order_id'];

if ($signature == $this->request->post['signature']) {
$this->load->model('checkout/order');
$status = $parsed_data['status'];
//$this->model_checkout_order->addOrderHistory($order_id, $this->config->get('config_order_status_id'));
if( $status == 'success')
$this->model_checkout_order->addOrderHistory($order_id, $this->config->get('liqpay_checkout_order_status_id'), 'Заказ оплачен, ожидайте отправки');
else if ( $status == 'failure' || $status == 'error')
$this->model_checkout_order->addOrderHistory($order_id, '10', 'Оплата не завершена ' . $parsed_data['err_description']);
//here you can update your order status
}
}
}
semaster commented 7 years ago

Моя версия расширения для работы с опенкарт 2.3 и используется liqpay api 3.0 https://github.com/semaster/opencart-liqpay

данный модуль перезаписывает файлы идущего в стандартной поставке модуля, также в настройках модуля добавлен режим приема оплат - тестовый или рабочий. Для того чтобы оплаченный заказ автоматически обозначался оплаченным нужно просто в настройках модуля выбрать какой статус присваивать после получения подтверждения от ликпей.

trialon77 commented 7 years ago

semaster, для Ocstore 2.1 ваша версия подходит? Не хватало в этом модуле тестового режима. и как с формированием заказа при нажатии кнопки Отмена на странице оплаты? Заказ оформляется или сбрасывается?

semaster commented 7 years ago

для Ocstore 2.1 не подойдет - насколько я поверхностно глянул - там другая структура размещения файлов. По поводу нажатия "отмена" на странице оплаты - добавил в настройках поле для задания статуса заказа в случае отмены оплаты.

Sergij4 commented 7 years ago

Здравствуйте,semaster спасибо за модуль, Но есть вопрос почему то, при удачной оплате, ставит статус выбранный для не удачной оплаты

bitrixlviv commented 7 years ago

Добрый день. Это решение можно использовать? Когда будет модуль для 2,3? semaster commented on 23 Nov 2016 • edited Моя версия расширения для работы с опенкарт 2.3 и используется liqpay api 3.0 https://github.com/semaster/opencart-liqpay

данный модуль перезаписывает файлы идущего в стандартной поставке модуля, также в настройках модуля добавлен режим приема оплат - тестовый или рабочий. Для того чтобы оплаченный заказ автоматически обозначался оплаченным нужно просто в настройках модуля выбрать какой статус присваивать после получения подтверждения от ликпей.

semaster commented 7 years ago

bitrixlviv, можно использовать. Sergij4, зайдите в настройки модуля "Модули/Расширения ->Оплата->Liqpay" нажмите редактировать и выберите нужные статусы для успешной оплаты и для отмены.

CROSP commented 7 years ago

Сделал Pull Request с поддержкой 2.3.2 + пофиксил несколько багов. Кто хочет может сейчас склонировать с моей репы. https://github.com/CROSP/plugin-opencart Папку payment рядом с extension (во всех каталогах) можно не копировать, это для версий 1.5.Х. Или же проще всего клонируйте с новой ветки 2.3.х https://github.com/CROSP/plugin-opencart/tree/2.3.x

Желательно это все упорядочить по тегам (верия = тег), чтобы не все в одной куче было. Если надо могу сделать

ghost commented 7 years ago

Где-то есть вменяемый модуль Liqpay для Opencart 2.1.0.2 где не нужно прыгать с бубном?

tolikdivak commented 6 years ago

Народ, у меня OcStore 2.3.0.2.3 установил сперва оригинальный модуль, когда понял что есть проблема с отменой платежа, начал ставить два других модуля из этой ветки но и в них проблема осталась. Перепробовал уже все способы и в настройках акаунта выставлял принудительный редирект на главную страницу сайта, все равно при отмене платежа меня перекидывает на checkout/success, типа успешный заказ и все такое, но при этом сам заказа в списке заказов не появляется.

Кто-то может, не бесплатно, исправить это и сделать чтобы при отмене платежа пользователя перекидывало обратно в корзину?

ViktorTassen commented 6 years ago

https://opencartforum.com/files/file/5648-liqpay-redirekt-na-checkoutfailure/ При отмене заказа идет редирект на checkout/failure, товары остаются в корзине.

tolikdivak commented 6 years ago

Спасибо

чт, 10 мая 2018 г., 10:50 ViktorTassen notifications@github.com:

https://opencartforum.com/files/file/5648-liqpay-redirekt-na-checkoutfailure/ При отмене заказа идет редирект на checkout/failure, товары остаются в корзине.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/liqpay/plugin-opencart/issues/10#issuecomment-387980161, or mute the thread https://github.com/notifications/unsubscribe-auth/AhJ90RS2w3KEFm21il6f9jR4LKKymmflks5tw_FdgaJpZM4KGDF1 .

borm commented 4 years ago

Что там по поводу модуля для 2.3.x, как я вижу есть бренча дев

andrewdidovik commented 4 years ago

Что там по поводу модуля для 2.3.x, как я вижу есть бренча дев Попробуйте этот релиз, возможно, он подойдет https://github.com/liqpay/plugin-opencart/tree/2.3.x Также сейчас мы работаем над тем, чтобы обновить модули для всех версий популярных CMS