Покажите ошибку, если ключ заказа изменен вручную в URL на Woocommerce, спасибо - PullRequest
0 голосов
/ 10 сентября 2018

Я разработал веб-страницу и интегрировал Cc Avenue gateway для оплаты, и он работает нормально.

Моя проблема в том, что после успешного платежа от банка клиент перенаправляется на страницу с благодарностью, которая будет содержать такие данные, как номер заказа, дата, данные клиента и т. Д. URL выглядит примерно так: https://mysite/checkout/order-received/785/?key=wc_order_5b909f1966e92

Если я вручную изменю key=wc_order_5b909f1966e92 на key=wc_order_5b909f1966e81, на странице «спасибо» должно появиться сообщение об ошибке, например «неверный заказ». Вместо этого он показывает «Спасибо. Ваш заказ был получен». без каких-либо деталей заказа на странице.

Перед сменой ключа:

https://imgur.com/a/c68Q8og

После смены ключа:

enter image description here

1 Ответ

0 голосов
/ 10 сентября 2018

Следующая функция проверит правильность ключа заказа. Если ключ заказа не совпадает, он будет отображать пользовательское уведомление об ошибке (и при необходимости перенаправить на страницу магазина) :

add_action( 'template_redirect', 'check_thankyou_order_key' );
function check_thankyou_order_key() {
    if( is_wc_endpoint_url('order-received') && isset($_GET['key']) ) {
        global $wp;

        $order_id  = absint( $wp->query_vars['order-received'] );
        $order     = wc_get_order( $order_id );

        if( $order->get_order_key() != wc_clean($_GET['key']) ){
            // Display a custom error notice
            wc_add_notice( __('Oups! The order key is invalid…', 'woocommerce'), 'error');

            // Optionally redirect to shop page (uncomment code below)
            // wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );
            // exit();
        }
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here

С дополнительным перенаправлением на страницу магазина:

enter image description here

...