Битрикс — изменение типа оплаты

12.07.2018  06:25

Задача: сделать возможность на сайте оплатить заказ по номеру и e-mail (этой связки вполне достаточно чтобы идентифицировать пользователя). В скрипте проверяется наличие заказа по номеру и сверяется введённый e-mail, если всё совпадает, то программно через API 1С-Битрикс меняем тип оплаты на нужный (в моём случае это была подключенная Яндекс.Касса с id платёжной системы = 11).

JavaScript:
$(window).ready(function(){
$('#order_check_frm').submit(function(e){
e.preventDefault();
            $.ajax({
                url: '/personal/order/payment/check.php',
                type: 'get',
                data: {
					ID: $("#order_check_frm input[name=ID]").val(),
					email: $("#order_check_frm input[name=email]").val(),
                }
            }).done(function (data) {
                if (data.status == 'error') {
                    alert('Ошибка');
                    return;
                }
				else {
				alert('Успешно');//тут можно сразу перекидывать пользователя на страницу оплаты
				}
			});
return false;
});
});


HTML-код формы:

Номер заказа:

Ваш email:



PHP-обработчик данных из формы:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (!empty($_REQUEST['ID']) && !empty($_REQUEST['email'])) {
$ORDER_ID = intval($_REQUEST['ID']);
if (($arOrder = CSaleOrder::GetByID($ORDER_ID)))
{
$UserID = CUser::GetById($arOrder["USER_ID"])->Fetch();
if ($_REQUEST['email'] == $UserID["EMAIL"]) {//если мыло в заказе совпадает с введённым, то всё верно
if ($arOrder)
{
   $arFields = array(
      "PAY_SYSTEM_ID" => '11'//обновление типа платёжной системы на "оплата картой" (например)
   );
   CSaleOrder::Update($ORDER_ID, $arFields);
}
//в этом месте пользователя можно авторизовать и перекинуть на страницу оплаты
}else {
echo 'Неверный код или email.';
}
}else {
echo "Заказ с кодом ".$ORDER_ID." не найден";
}
}
else {
echo 'Введите, пожалуйста, номер заказа и email указанный вами при оформлении.';
}


Затем пользователя авторизуем и перекидываем на станицу успешно оформленного заказа /personal/order/make/?ORDER_ID=123
Дальше в зависимости от настроек платёжной системы пользователь либо автоматом будет перекинут на платёжный шлюз для оплаты картой, либо увидит страницу с уведомлением и кнопкой оплаты и ещё раз подумает платить или нет.


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 43  jQuery 19  PHP 55  web-программирование 79  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)