Другой вариант платежной квитанции
В данной статье описывается подключение способа оплаты Платежной квитанцией. От уже существующего способа оплаты, данный вариант отличается лишь тем, что после того как пользовать выбрал данный способ оплаты и нажал кнопку «Далее», он перемещается на страницу с сообщением об успешном добавлении заказа, а не отображение самой квитанции. Также на данной странице можно перейти по ссылке, для просмотра квитанции на оплату.
Для выполнения данной задачи, в модуле Шаблоны данных, в разделе «Способ оплаты», создадим дочерний тип по отношению к типу «Платежная квитанция», допустим «Платежная квитанция v.2». Запомним id только что созданного типа. Перейдем в раздел «Справочники» модуля Шаблоны данных, откроем содержание справочника «Типы способов оплаты», вызвав контекстное меню. Добавим новый тип оплаты, допустим «Платежная квитанция v.2», откроем его на редактирование, установим «Идентификатор типа оплаты»: receiptnew, а «Тип данных»: id нового типа данных, который был ранее вами создан. Если у элемента справочника, присутствует поле "Тип данных (guid)", то необходимо указать в этом поле подобный guid: emarket-payment-835, в случае если type_id нового типа = 835. Также в базе данных, в таблице cms3_object_types, необходимо найти тип с id=835, и поставить для него такой же guid = emarket-payment-835.
В папке \classes\modules\emarket\classes\payment\systems\ создадим файл receiptnew.php со следующим содержанием:
<?php
class receiptnewPayment extends payment {
public function validate() {
return true;
}
public function process() {
$order = $this->order;
$order->order();
$order->payment_document_num = $order->id;
$controller = cmsController::getInstance();
$module = $controller->getModule("emarket");
if($module) {
$customer = umiObjectsCollection::getInstance()->getObject($order->getCustomerId());
$getcode= sha1("{$customer->id}:{$customer->email}:{$order->order_date}");
$getid = $order->id;
$url = $controller->pre_lang . "/emarket/purchase/result/successful/?code={$getcode}&id={$getid}";
$module->redirect($url);
}
}
public function poll() {
$buffer = outputBuffer::current();
$buffer->clear();
$buffer->contentType('text/plain');
$buffer->push('Sorry, but this payment system doesn\'t support server polling.' . getRequest('param0'));
$buffer->end();
}
};
?>
Далее в самом модуле Интернет магазин, во вкладке Оплаты, добавим наш новый тип оплаты.
Потом, в файле classes/modules/custom.php добавим кастомный макрос (после слов //TODO:...):
public function urlreceipt(){
if(array_key_exists('code', $_GET) && array_key_exists('id', $_GET)){
$id = htmlspecialchars($_GET['id']);
$code = htmlspecialchars($_GET['code']);
$url = "/emarket/receipt/{$id}/{$code}/";
return "Квитанцию на оплату вы можете получить, перейдя по <a href=\"{$url}\" target=\"_blank\">этой ссылке</a>.";
}
}
Ну а в шаблоне tpls/emarket/default.tpl, в блоке 'purchase_successful', добавим вызов нашего кастомного макроса:
%custom urlreceipt()%<br />
Вот пожалуй и все.