Вход Регистрация
*— обязательные для заполнения поля
Войти через социальные сети

Оплата заказа после подтверждения менеджером

Сегодня узнаем, как сделать на Битриксе оплату заказа после подтверждения менеджером или только после определенного статуса.

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

Данная возможность появилась в 17 версии 1С-Битрикс, но как всегда, есть проблемы, обойти их поможет одно из моих решений TS Умные статусы и письма заказов в котором это реализовано с версии 1.9.0.

1) Сначала нужно установить сам модуль и сделать базовую настройку по инструкции к модулю.

2) Далее настроим модуль Интернет-магазина на работу с оплатой в публичной части сайта без авторизации и прочих сложностей.

Переходим в настройки модуля:
Настройки - Настройки продукта - Настройки модулей - Интернет-магазин

Находим там прям на первой вкладке раздел настроек:
Настройки показа карточки заказа в публичной части

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


Разрешить просмотр заказа по ключу без авторизации
Это та самая функция, которая дает возможность показать клиенту страницу с платежной системой без авторизации и спокойно оплатить заказ, здесь даже думать не надо, нажимаем оплатить и все, можно прям так здесь и написать.

Под кодом имеется ввиду хэш, который отправляется в письме, в самой ссылке.
В моем случае выводит на странице платежную систему компонент bitrix:sale.order.payment
Готовый код страницы /personal/payment/index.php
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>
<?$APPLICATION->IncludeComponent("bitrix:sale.order.payment","");?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
Вообще, это дает разработчикам максимальную гибкость реализации оплаты, можно хоть свой компонент написать, вообще любую логику.

Это практически все, остается только в статусе заказа Ожидание оплаты отправлять клиенту ссылку на оплату.


3) Ссылку на оплату можно сделать двумя способами, либо прямую, либо через макрос.

а) В стандартном описании к статусу заказа добавим прямую ссылку, статусы в битриксе здесь:
Магазин - Настройки - Статусы

Здесь либо изменяем нужный статус, либо создаем новый, например: Ожидание оплаты
Пример описания с прямой ссылкой:
#ORDER_USER#, здравствуйте!<br>
Ваш заказ №#ORDER_ID# ожидает оплаты.<br><br>
Для оплаты заказа перейдите по ссылке:<br>
<a href="#SERVER_URL#/personal/payment/?ORDER_ID=#ID#&HASH=#HASH#">#SERVER_URL#/personal/payment/?ORDER_ID=#ID#&HASH=#HASH#</a>
Наглядно

Обратите внимание на сортировку, именно у этого статуса она должна быть либо больше, чем у предыдущих, либо на ровне с ними.
Например, статусы:
  • Принят - сортировка 10
  • В обработке - сортировка 50
  • Ожидание оплаты - сортировка 100

б) Здесь же  в стандартном описании к статусу заказа можно добавить макрос прямой ссылки, макросы создаются здесь:
Сервисы - TS Умные статусы и письма заказов - Доп. макросы

Назовем сам макрос, например: #PAYMENT_LINK#

В форме добавления макроса пишите вот так:
Название: PAYMENT_LINK
Значение: #SERVER_URL#/personal/payment/?ORDER_ID=#ID#&HASH=#HASH#

Наглядно


Теперь этот макрос надо добавить в описание к статусу заказа
#ORDER_USER#, здравствуйте!<br>
Ваш заказ №#ORDER_ID# ожидает оплаты.<br><br>
Для оплаты заказа перейдите по ссылке:<br>
<a href="#PAYMENT_LINK#">#PAYMENT_LINK#</a>
Наглядно


Все, ссылка готова, описание сохранили, теперь переходим в какой-нибудь заказ, меняем статус на "Ожидание оплаты" и видим, как заменятся данные в ссылке


Все это прилетит на почту клиенту в таком виде


Клиент переходит по ссылке, ему показывается платежная система из заказа.


И оплачивает заказ, тут без комментариев.


На моем сайте эта ссылка вообще в письме о новом заказе, не обязательно в статусе.



Если что-то пропустил, пишите в комментариях, постараюсь помочь.
Комментарии
Авторизуйтесь, чтобы оставлять комментарии
А
#7
Добрый день.
После недавних обновлений битрикс снова перестала работать ссылку на быструю оплату заказов. При переходе по ссылке, тупит потом открывает главную страницу. <br />
Вот пример, в чем может быть проблема?
http://уютный-свет.рф/personal/payment/?ORDER_ID=1585&HASH=9754c78c1b3757d11207d27afa13d1a1
#8
По ссылке 302 редирект срабатывает, вам надо у своего разработчика об этом спросить, модуль тут не причем

https://monosnap.com/file/1mggEREjVcs8IzgHakRDPD7jr02BeR.png
Д
#98
Сперва все получилось и я был рад) Но вот прошло какоето время и почему перестало работать при переходе по ссылки для оплаты - такой страницы нет.. http://trapezakms.ru/personal/payment/?ORDER_ID=104&HASH=987c5290c19efe41fda7119bd3be8a61 почему перенаправлять стало на это http://www.trapezakms.ru/bitrix/urlrewrite.php?ORDER_ID=104&HASH=987c5290c19efe41fda7119bd3be8a61
#99
Это редирект какой-то, вопрос больше к тому, кто делал страницу оплаты, скорее всего там что-то изменилось.
Д
Как это решить? Смотреть путь к странице оплаты?
Поиск редиректов на сайте равносилен поиску иголки в стоге сена.
Он может быть везде, и в php-коде, в каком-нибудь модуле, в .htaccess, на js, на этой странице /personal/payment/ с помощью функции LocalRedirect(), на веб-сервере в конфигах apache, nginx и т.п.
Д
RewriteRule ^/bitrix/(.*)$ /index.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteCond %{HTTP_HOST} ^trapezakms.ru
RewriteRule (.*) https://www.trapezakms.ru/$1 [R=301,L]
</IfModule>
Подскажите , тут может быть ошибка и в этом проблема?

Возможно, изменения вносились, попробуйте привести к такому стандартному виду.

Options -Indexes 
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
#php_value max_execution_time 180
</IfModule>

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

# Свои конфиги #
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://tuning-soft.ru/ [R=301,L]

# Конфиги для Битрикса не изменять #
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>

Сторонние правила попробуйте убрать и без них проверить, это:

RewriteRule ^/bitrix/(.*)$ /index.php [L,QSA]
и
RewriteCond %{HTTP_HOST} ^trapezakms.ru
RewriteRule (.*) https://www.trapezakms.ru/$1 [R=301,L]
Редиректы кстати тоже кэшируются браузерами, если вы вносите в конфиги изменения, тогда проверяйте в другом браузере, в котором не открывали страницу, либо отключайте/сбрасывайте кэш.
Д
Хорошо спасибо огромное , проверю
Д
Добрый день,

подскажите, как сделать чтобы платежная система показывалась в шаблоне сайта?
Сейчас вроде вот этот компонент выводит платежки
https://dev.1c-bitrix.ru/user_help/components/magazin/profiles/sale_personal_order_detail.php
А
Добрый день.

Перестал работать модуль, при попытке открыть страницу с платежной системой пишет это:

Запрос к платежному сервису был отправлен некорректно. Проверьте настройки

Непонятно с чьей стороны проблема с нашей или банка, можете помочь, клиенты жалуются.
На странице платежной системы модуль не подключается, только в форме заказа, скорее всего у вас проблема именно с платежной системой, это уже не по моей части, помочь не смогу.
Р
Добрый день!
Почему по ссылке когда перехожу написано "После подтверждения заказа менеджером" и все ничего больше нет. Кнопки оплатить тоже нет, как исправить?
Р
с этим вроде разобрался. Но не пойму почему не открывается стандартная страница сайта с кнопкой оплаты, а то тут открывается пустая страница без стилей сайта просто с 1 кнопкой. Как сделать чтобы поссылке открывалась именно страница с оплатой на самом сайте?

Посмотрите на странице с кнопкой хедер и футер вот такой? Если нет, то попробуйте заменить.

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Сверху хедер, снизу футер");
?>
Тут компонент оплаты
<br>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Р
Сделал так, но CSS не подключаются, как подключить подскажите?
Р
А я так понял header не подключается все равно поэтому и css нет, Футер подключился а хедер нет, что может быть не так?
У вас компонент, который выводит оплату, скорее всего сбрасывает буфер, после хедера подключается этот компонент, буфер (весь вывод) очищается, далее идет футер и уже без проблем подключается.
Какой компонент у вас выводит оплату на эту страницу?
Р
Вот код вывода
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Оплата заказа");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment",
"",
Array(
)
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>

Я пробовал изменять его на
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Сверху хедер, снизу футер");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment",
"",
Array(
)
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

в 1 случае пустая страница и кнопка.
во 2 случае кнопка потом вывод футера но без CSS

не пойму как в итоге сделать чтоб работало?
Старый компонент оплаты вроде сам сбрасывал буфер страницы, поэтому она становилась пустая, а в новом вроде этого нет, но точно уже не помню, пишу на память.
Если вот это
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>
<?$APPLICATION->IncludeComponent("bitrix:sale.order.payment","");?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
Попробуйте заменит на это
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>
<?$APPLICATION->IncludeComponent("bitrix:sale.order.payment","");?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Л
Обратите внимание на сортировку, именно у этого статуса она должна быть либо больше, чем у предыдущих, либо на ровне с ними.
Например, статусы:

Принят - сортировка 10
В обработке - сортировка 50
Ожидание оплаты - сортировка 100


А зачем это нужно?

Если, к примеру, будет такая сортировка:

Принят - сортировка 100
Ожидание оплаты - сортировка 5

То не выводится кнопка оплаты в публичной части, сейчас это может уже и исправили, раньше точно влияло, в общем, баг какой-то был, может и есть.

Р
В макросы нельзя чтоли вставлять #ORDER_PUBLIC_URL# и другие стандартные?
Р
#PUBLIC_LINK# если ставить то вот такое письмо приходит /personal/orders/201184 ?access=9e57ef08e4c06801ab98954bdecebb8a

пробел зачем то перед номерои заказа?access=9e57ef08e4c06801ab98954bdecebb8a
И сам заказ реально недоступен требует авторизоваться
Пробел посмотрите там, где текст письма формируется, это может быть в 3-х местах
- В описании к статусу заказа в списке статусов
- В форме редактирования заказа в поле описания к статусу заказа
- В доп. шаблонах и макросах этого модуля
Если все настроили верно, то вот она публичная ссылка в форме заказа появится
https://cloud.mail.ru/public/5QhA/AM3c6Pqyb
Макрос #ORDER_PUBLIC_URL# заполняется на основе настроек в модуле интернет-магазин.
https://cloud.mail.ru/public/5st6/HE13z6scu
Также в модуле можно сделать вообще любой свой макрос ссылки на оплату, на любую другую страницу с помощью доп. макросов в модуле и макроса #HASH#, в который подставится код заказа для публичной ссылки.
На скрине пример такого макроса #PAYMENT_LINK# я ему присвоил свою ссылку и хоть в шаблоне к статусу, хоть в описании к статусу могу его везде использовать.
https://cloud.mail.ru/public/Do7h/2994WmTow
Это видимо новый макрос, я не в курсе, постараюсь добавить сегодня/завтра, спасибо!
Р
А как сделать ссылку публичную чтоб без авторизации был доступен просмотр заказа?
Я такие ссылки формирую через #ORDER_PUBLIC_URL# и через #HASH# пробовал, но при переходе запрашивается авторизация.
Значит неправильно что-то настроили, в статье все написано, я лично все делал по статье несколько раз и все работает, смотрите где ошиблись, перечитывайте статью хоть раз на 10, пока не получится.
В моем модуле только ссылка формируется из модуля интернет-магазин, просто идентичная, ничем не отличается, и все.
Что у вас выводит платежки с авторизацией или без, это я вообще не в курсе, вы сами на сайте делаете или настраиваете этот функционал, этот вопрос уже ни ко мне, может у вас вообще не работает этот функционал, я тут ничем не помогу.
Если вот этим компонентом выводите оплату bitrix:sale.order.payment, я вижу у себя, что он слушает переменную HASH=50b7748612b28db487d115f220bb77ab, а не новую переменную access=50b7748612b28db487d115f220bb77ab
https://s.mail.ru/M9KB/jD3fAg2np
В недавней версии магазина они поменяли эту переменную, поэтому скорее всего у кого работает, у кого нет на этом компоненте, потому что другая переменная, вместо HASH у вас access скорее всего.
Под новую переменную access нужно использовать другой новый компонент bitrix:sale.personal.section
Либо компонент bitrix:sale.order.payment переделать под access
20 строка в компоненте по пути
/bitrix/components/bitrix/sale.order.payment/component.php
Попробуйте заменить вот это
$hash = isset($_REQUEST["HASH"]) ? $_REQUEST["HASH"] : null;
Вот на это
$hash = isset($_REQUEST["access"]) ? $_REQUEST["access"] : null;
Но если изменяете компонент, его нужно копировать в любой другое пространство, чтобы не обновился, для теста можно наживо, если на постоянку, то копировать.
В
Здравствуйте! Сделал все по инструкции. На почту приходит письмо с ссылкой на оплату, пользователь оплачивает, но в заказе все равно пишется "не оплачено", и, соответственно, не приходят письма, что оплата совершена. Можно это как-то исправить?
Оплату можно увидеть только в разделе "Оплаты"/"Оплата заказа".
В
Проблему решил.
А
Ребята, подскажите, удалось решить проблему с подключением CSS?
Чтобы оплата отображалась в шаблоне сайта.
ЗОЖ
Комментарии
Последние комментарии
Извините за беспокойство сама уже нашла в чем причина.
Здравствуйте! Подскажите, пожалуйста, как исправить ошибку при нажатии на кнопку &quot;оставить ...
Спасибо большое - уже решил вопрос. Открыл бекап дамп базы mysql в notepad++ и в именно той строке ...
Не знаю, смотрите фильтры, условия, тип цен, крон должен выполнять файл, бывают ситуации, когда крон...
Можно восстановить только БД из бэкапа и вытащить из нее любые данные, в файлах хранятся только испо...
Можно идиотский вопрос ? Сам дурак удалил несколько адресов из списка адресов модуля Email-маркетин...
Добрый день! Не могу сделать выгрузку фида для Google Merchant. Пишет 0 товаров при выгрузке: http:/...
Подписка
Выберите рассылку