Клиенты часто пишут неправильную почту, из за этого приходится исправлять почту и отправлять билеты им повторно. Вместо этого хотелось бы, чтобы после успешной оплаты пользователя перенаправляло, не просто на страницу "Успешной оплаты", а обратно на страницу заказа.
Не совсем понимаю как это сделать.
Понимаю что платёжная система отправляет номер заказа после успешной оплаты, раз создаётся строка в таблице evpl_payments.
Но как и где прописать редирект с evpl_get_hash_url($evpl_order->order_hash) не совсем понимаю.
Прошу помощи с этим, думаю другим владельцам данного плагина тоже будет интересно.
Добрый день.
В папке events-and-places/payment-gateways/ лежат файлы отвечающие за взаимодействие с платежной системой, откройте файл к которому у вас настроено подключение и замените
wp_redirect(get_permalink($evpl_options['page_successfully_pay'])); exit;
на это
$order = evpl_get_order( parent::get_pay((object)$data)->order_id ); wp_redirect(get_permalink(evpl_get_hash_url($order->order_hash))); exit;
Заменил, всё равно перекидывает на страницу успешной оплаты.
Вся функция:
function success(){ global $evpl_options; $data = array( 'payment_id' => $_REQUEST["clientid"] ); if(parent::get_pay((object)$data)){ $order = evpl_get_order( parent::get_pay((object)$data)->order_id ); wp_redirect(get_permalink(evpl_get_hash_url($order->order_hash))); exit; } else { wp_die(__('Запись о платеже не найдена в базе данных')); } }
В class-payments нашёл функцию:
function get_success($connect){ global $evpl_options,$evpl_payments; if(!$connect) $connect = $evpl_options['connect_sale']; if(isset($evpl_payments[$connect])){ $obj = new $evpl_payments[$connect]->class; $method = 'success'; $obj->$method(); }else{ return false; } if($this->get_pay()){ wp_redirect(get_permalink($evpl_options['page_successfully_pay'])); exit; } else { wp_die(__('Данные платежа не найдены в базе данных.')); } }
Это не одно и тоже?
Андрей CS сказал(а)
попробуйте распечатать что внутри $data
Пробовал, но не совсем понял где именно она потом выводится.
Поступил ответ от тех поддержки платёжной системы:
Вы можете использовать в форме оплаты параметр user_result_callback (
Вы не можете просматривать опубликованные ссылки:~:text=user_result_callback )для перенаправления клиента, если используете интеграцию методом HTML-форма. В этом случае будут переданы query параметры payment_id, clientid и result (значения success или failed).
когда пользователь возвращается на сайт, то он должен пройти через метод success из сообщения выше
там можно распечатать и вывести на страницу принятые параметры, например так
print_r($_REQUEST);exit;
после перехода должен будет вывестись массив принятых данных, там будет видно что вообще приходит