Woocommerce: пользовательская страница благодарности платежного шлюза

Я создаю настраиваемый плагин платежного шлюза Woocommerce (он в основном перенаправляет пользователя на страницу платежной службы, а затем страница платежной службы перенаправляет пользователя обратно на указанный URL-адрес), все работает, как ожидалось, но я не могу создать настраиваемая страница благодарности ОТ ПЛАГИНА.

Под словом «из плагина» я подразумеваю то, что если кто-то установит мой плагин Payment Gateway, он сможет увидеть настраиваемую страницу благодарности без каких-либо дополнительных операций, таких как добавление темы или страницы Woocommerce в WP.

Вот что я сейчас использую для обработки страницы благодарности по умолчанию:

URL-адрес перенаправления предоставляется: $this->get_return_url($order))

Страница благодарности связана с:

add_action('woocommerce_thankyou_'.$this->id, array( $this, 'return_handler' ) );

И вот моя функция, которая должна обрабатывать сообщения страницы благодарности:

public function return_handler() {
  $order_id = get_query_var('order-received');
  global $woocommerce;
  $order = new WC_Order( $order_id );
  //NEXT I JUST CHECK THE ORDER AND SHOW MESSAGES DEPENDING ON THE RESULT
}

РЕДАКТИРОВАТЬ: также, если есть другой способ вернуть пользователя к URL-адресу, который вызовет одну из моих функций плагинов, это может быть допустимым вариантом.


person Jhuliano Moreno    schedule 19.11.2014    source источник


Ответы (1)


Я думаю, что вам нужно настроить таргетинг на woocommerce_payment_successful_result из класса WC_Checkout.

function so_27024470_paypal_redirect( $return, $order_id ){
    $order = new WC_Order( $order_id );
    if( $order->payment_method == 'your-gateway-id' ){
        $return['redirect'] = 'http://your-redirect.com';
    }
    return $return;
}
add_action( 'woocommerce_payment_successful_result, 'so_27024470_paypal_redirect', 10, 2 );

Я не тестировал это, поэтому используйте на свой страх и риск.

person helgatheviking    schedule 20.11.2014
comment
Я не смог найти много ссылок об этом фильтре / хуке, каких-либо идей о том, как его запускать (URL?). - person Jhuliano Moreno; 20.11.2014
comment
Поскольку он находится в методе process_checkout() класса WC_Checkout, я предполагаю, что он срабатывает, когда вы находитесь на странице оформления заказа. Он должен срабатывать, когда заказ успешно оплачен. - person helgatheviking; 20.11.2014
comment
Спасибо за помощь :), но, похоже, это не помогает в том, чего я пытаюсь достичь. Я перенаправляю пользователя на другую страницу (например, как PayPal Express), а затем эта страница перенаправляет пользователя обратно ко мне. У меня проблемы с отображением настраиваемого сообщения / страницы из коробки в этом URL-адресе перенаправления и не запускать функцию после утверждения :( - person Jhuliano Moreno; 21.11.2014
comment
Извините, я неправильно понял ваш вопрос. Это перенаправляет вас после завершения оплаты, а не на другой сайт, а затем обратно. - person helgatheviking; 21.11.2014