moovix

1C-Битрикс: Оплата товаров после проверки менеджером

Moovix » Блог » 1C-Битрикс: Оплата товаров после проверки менеджером
В процессе работы над одним из сайтов понадобилось реализовать функционал отложенной оплаты. То есть нужно было сделать так чтобы покупатель, оформив заказ, мог произвести оплату только после того как менеджер проверит наличие на складе и подтвердит заказ. Среди стандартного функционала Битрикс я такой возможности не нашел, гугление привело на форумы с вопросами без внятных ответов. Пришлось городить свой велосипед.

В процессе работы над одним из сайтов понадобилось реализовать функционал отложенной оплаты. То есть нужно было сделать так чтобы покупатель, оформив заказ, мог произвести оплату только после того как менеджер проверит наличие на складе и подтвердит заказ. Среди стандартного функционала Битрикс я такой возможности не нашел, гугление привело на форумы с вопросами без внятных ответов. Пришлось городить свой велосипед.

Битрикс дает возможность использовать сколько угодно и каких угодно статусов заказа. Единственным ограничением является тот факт что заказ формируется со статусом с кодом «N» и закрывается со статусом с кодом «F». Первым делом изменим параметры статуса с кодом «N». Дадим ему название «Новый. Ожидает подтверждения». Далее добавим статус с кодом, например, «A» и названием «Подтвержден. Ожидает оплаты.» Оставшиеся статусы «Выполнен» и «Оплачен» не трогаем.

В стандартном сценарии после того как покупатель оформляет заказ ему отображается страница сообщающая об успешном формировании заказа и предлагающая внести оплату выбранным способом. Эту страницу мы и будем кастомизировать. Создаем свой шаблон компонента sale.order.ajax, после этого он будет доступен в директории /bitrix/templates/you_template/components/bitrix/sale.order.ajax/.default/ Нас интересует confirm.php. Приводим его к следующему виду:

				
					<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
    <? if (!empty($arResult["ORDER"])) { ?>
        // заказ существует идем дальше
        <? if ($arResult["ORDER"]["STATUS_ID"] == "N") { ?>
            // сообщаем пользователю о том что его заказ сформирован
        <? } elseif (!empty($arResult["PAY_SYSTEM"]) && $arResult["ORDER"]["STATUS_ID"] == "A") { ?>
            // предлагаем оплатить заказ (Я взял эту часть из стандартного шаблона)
            <div class="content pay">
                <a href="<?= $arParams["PATH_TO_PAYMENT"] . "?ORDER_ID=" . urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])); ?>" target="_blank" class="paysystem">
                    <?= CFile::ShowImage($arResult["PAY_SYSTEM"]["LOGOTIP"], 100, 100, "border=0", "", false); ?>
                    <span><?= $arResult["PAY_SYSTEM"]["NAME"] ?></span>
                </a>
                <div class="info">
                    <? if (strlen($arResult["PAY_SYSTEM"]["ACTION_FILE"]) > 0) { ?>
                        <? if ($arResult["PAY_SYSTEM"]["NEW_WINDOW"] == "Y") { ?>
                            <script language="JavaScript">
                                window.open('<?= $arParams["PATH_TO_PAYMENT"] ?>?ORDER_ID=<?= urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])) ?>');
                            </script>
                            <?= GetMessage("SOA_TEMPL_PAY_LINK", array("#LINK#" => $arParams["PATH_TO_PAYMENT"] . "?ORDER_ID=" . urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])))) ?>
                            <? if (CSalePdf::isPdfAvailable()) { ?>
                                <?= GetMessage("SOA_TEMPL_PAY_PDF", array("#LINK#" => $arParams["PATH_TO_PAYMENT"] . "?ORDER_ID=" . urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])) . "&pdf=1&DOWNLOAD=Y")) ?>
                            <? } ?>
                        <? } else { ?>
                            <? if (strlen($arResult["PAY_SYSTEM"]["PATH_TO_ACTION"]) > 0) {
                                include($arResult["PAY_SYSTEM"]["PATH_TO_ACTION"]);
                            } ?>
                        <? } ?>
                    <? } ?>
                </div>
            </div>
        <? } else { ?>
            // на тот случай если по той или иной причине не выбрана платежная система (ну мало ли:))
        <? } ?>
    <? } else { ?>
        // Сообщаем что такого заказа не существует
    <? } ?>
				
			
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Moovix » Блог » 1C-Битрикс: Оплата товаров после проверки менеджером

Есть вопрос? мы онлайн

Есть проект? Заполните бриф.

top