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

[1C Битрикс] Оплата заказа после подтверждения менеджером

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

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

Данная возможность появилась в 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;
Но если изменяете компонент, его нужно копировать в любой другое пространство, чтобы не обновился, для теста можно наживо, если на постоянку, то копировать.
Получать ответы на почту
Здравствуйте! Сделал все по инструкции. На почту приходит письмо с ссылкой на оплату, пользователь оплачивает, но в заказе все равно пишется "не оплачено", и, соответственно, не приходят письма, что оплата совершена. Можно это как-то исправить?
Оплату можно увидеть только в разделе "Оплаты"/"Оплата заказа".
Получать ответы на почту
Проблему решил.
Получать ответы на почту
ЗОЖ
Комментарии
Последние комментарии
Я с февраля с Яндексом веду телефонную борьбу. Магазин поменял адрес в пределах города, поменял на г...
Конвертация валют пока еще не работает, модуль практически весь переписан, это остается еще сделать,...
Здравствуйте! Подскажите, в модуле задана какая-то функция конвертации валюты? Т.е. цена у одного т...
Здравствуйте! Сделал все по инструкции. На почту приходит письмо с ссылкой на оплату, пользователь о...
Пожалуйста! Добавил к статье UPD 11.06.2018 в самом конце, обратите на это внимание.
Пожалуйста! Добавил к статье UPD 11.06.2018 в самом конце, обратите на это внимание.
Подписка
Выберите рассылку