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

Recommended Posts

Доброго дня.

Не уверен приветствуется ли такое на этом ресурсе, но попробую.

Делаю магазин. Нужен модуль оплаты.

Поскольку имею базовые знания php и хотелось бы их углубить, прощу помощи разобраться с методикой создания модуля оплаты.

 

Описание сервиса оплаты ipay Беларусь.

Сервис умеет оплачивать:

 

1. СМС-оплата для абонентов МТС и life:) - сформировать и отобразить клиенту текст СМС,
который он должен отправить на номер 553 для оплаты своего заказа. Например, "Отправьте на номер 553 СМС с текстом: 444 999999"

2. Оплата через сайт системы iPay для абонентов МТС - переадресация клиентов на сайт iPay по ссылке для оплаты
с баланса МТС;

3. Оплата через сайт системы iPay для абонентов мобильной сети life:) - переадресация клиентов на сайт iPay по ссылке для оплаты
с баланса life:).

 

4.Оплатить через систему "Расчет" (ЕРИП). Оплата заказа в инфокиосках, банкоматах, интернет и
SMS-банкингах в банках участниках системы "Расчет".

 

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

 

По поводу этого 4-го пункта. Клиент формирует корзину, выбирает доставку, метод оплаты и попадает на страницу, где ему я сообщаю инструкции, номер заказа и идентификатор получателя платежа. Например:

 

Номер выставленного Вам счета в системе "Расчет": 999999
Запишите номер счета - он понадобится Вам для оплаты.
Сформированный счет Вы можете оплатить:
- в любой кассе или банкомате ближайшего банка;
- через платежные терминалы, инфокиоски;
- через системы интернет-банкинга и СМС-банкинга;
- через платежные системы iPay, WebMoney, Easypay.

Найдите в перечне услуг системы "Расчет" следующую услугу
(указать точное расположение в дереве услуг ЕРИП):
+ Платежи по Беларуси (ЕРИП)
+ Интернет-магазины/сервисы
+ H
> мой_магазин.by
и введите номер выставленного Вам счета.

 

То есть нет единого места-сайта откуда может поступить платеж.

 

Я взял за основу модуль платежа донор liqpay. Изменил название файлов модуля в админке и каталоге на ipay.php

Заменил внутри в файлах соответственно "liqpay" на "ipay". Заменил в переводе на ipay.

 

1. Мне нужно по кнопке "подтвердить заказ", отправить клиента на свою страничку с инструкцией

Для этого в файле \catalog\controller\payment\ipay.php

я должен передать ссылку на инструкцию

$this->data['action'] = 'ссылка';

Как лучше создать такую страничку с инструкцией и как будет выглядить ссылка на неё?

 

 

Надіслати
Поділитися на інших сайтах


1. Мне нужно по кнопке "подтвердить заказ", отправить клиента на свою страничку с инструкцией

Для этого в файле \catalog\controller\payment\ipay.php

я должен передать ссылку на инструкцию

$this->data['action'] = 'ссылка';

Как лучше создать такую страничку с инструкцией и как будет выглядить ссылка на неё?

Создал в  админке новую статью с инструкцией об оплате (information_id=13). 

Ссылка на статью: $this->data['action'] = 'index.php?route=information/information&information_id=13';

 

номер заказа можно получить так: $this->session->data['order_id']. Правильно?

Можно ли отобразить в этой статье номер заказа? Как это лучше сделать? 

Надіслати
Поділитися на інших сайтах


К сожалению не нашел способа добавить значение переменной "номер заказа" в статью.

Но нашел урок по созданию собственных страниц в Opencart: http://s-engineer.ru/dobavlyaem-novuyu-stranicu-sxemu-v-opencart/

Клонировал home. В controller создал папку oplata. Новую страницу назвал erip. Создал файлы erip.php и erip.tpl. Все что надо поменял, как в уроке.
В erip.tpl вывел в html инструкцию по оплате.
В нужном месте вставил код заказа.
<p>
Номер выставленного Вам счета в системе "Расчет":  
<h3><?php
//$this->load->model('checkout/order');

$order_info = $this->session->data['order_id']; 

echo $order_info;
?>
</h3>
</p>
В файле модуля оплаты ipay.php ссылка на страницу с инструкцией об оплате выглядит так:
$this->data['action'] = $this->url->link('oplata/erip', '', 'SSL');

Следующий этап, обработка заказа.
После отображения страницы с инструкцией, корзина должна быть очищена, заказ помещен в обработку. Однако корзина не очищается. В каком месте модуля оплаты смотреть?

Надіслати
Поділитися на інших сайтах


что-то получилось.

ЕРИП не имеет единой точки входа. Клиент сам решает как ему лучше воспользоваться этим сервисом оплаты (банкомат, SMS или интернет банкинг  и т.д)

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

 

Все переделано с начала.

В качестве донора взят модуль webpay. Файлы скопированы, переименованы. Внутри исправлены названия переменных функций ссылок и т.д на erip___.

Добавлена новая статья (eripinfo.php в папке payment и eripinfo.tpl в теме default)  по уроку http://s-engineer.ru/dobavlyaem-novuyu-stranicu-sxemu-v-opencart/

Ссылка $this->data['action'] = $this->url->link('payment/eripinfo', '', 'SSL'); в файле controller/payment/erip.php открывает страницу с информацией об оплате, сообщает клиенту номер заказа.

 

Скрипт в файле  eripinfo.tpl добовляет на эту страницу кнопку и при нажатии "закрывает заказ". 

<div class="buttons">
<div class="right">
<input type="button" value="<?php echo $button_confirm; ?>" id="button-confirm" class="button" />
</div>
</div>
<script type="text/javascript"><!--
$('#button-confirm').bind('click', function() {
$.ajax({
type: 'get',
url: 'index.php?route=payment/erip/confirm',
success: function() {
location = '<?php echo $continue; ?>';
}
});
});
//--></script>

 

В файле eripinfo.php определяем переменные:

$this->data['button_confirm'] = $this->language->get('button_confirm');
$this->data['continue'] = $this->url->link('checkout/success');

 

Дальше нужно принять данные от системы ЕРИП.

Ковыряем функцию public function callback() в файле erip.php. Правильно?

Надіслати
Поділитися на інших сайтах


Елки. Тяжело то как без опыта :).

 

Неделю разбирался с алгоритмом изменения статуса заказа.

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

Клиент отправляется на сайт платежной системы.

В базе данных магазина появляется заказ со статусом 0. Этот заказ не виден ни в админке ни в истории заказов у клиента, только в базе данных.

Корзина остается полной. 

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

Если от сайта оплаты приходит ответ о том что проплата прошла успешно, статус заказа изменяется на нужный (обычно выбирается в админке).

 

Более сложные системы оплаты (ЕРИП в том числе), требуют прохождения нескольких этапов с приемом и отправкой сообщений на сервер системы оплаты. На каждом этапе по хорошему, нужно было бы менять статус заказа. С этим и разбираюсь.

К тому же ipay просит реализацию как минимум 2-х модулей оплаты (с переходом на их сайт и с переходом на инструкцию  по оплате ЕРИП на своем сайте). Модули будут похожие, но не одинаковые.  

 

Пока есть надежда что что-то получится. :)

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

К тому же ipay просит реализацию как минимум 2-х модулей оплаты (с переходом на их сайт и с переходом на инструкцию  по оплате ЕРИП на своем сайте). Модули будут похожие, но не одинаковые.  

Делал ЕРИП через ХуткиГрош, причем выбор был сделан в его пользу по простой причине - у второго косая форма запроса услуги  :-D и никак не мог им запрос отправить. У ХГ нет перехода на их сайт, только API. Т.е. отправляется сообщение ХГ, а он уже формирует счет в ЕРИП.

Надіслати
Поділитися на інших сайтах


  • 3 months later...
  • 8 months later...
  • 9 months later...
Гість
Ця тема закрита для публікації повідомлень.
×
×
  • Створити...

Important Information

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