如果在Woocommerce上的URL中手动更改了订单密钥,则显示错误

时间:2018-09-10 10:30:35

标签: php wordpress woocommerce key orders

我已经开发了一个网页,并集成了用于支付的 Cc Avenue网关,并且运行良好。

我的问题是,银行客户的成功付款被重定向到“谢谢”页面,该页面上将包含订单号,日期,客户详细信息等详细信息。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 :(得分:1)

以下功能将检查订单密钥的有效性。如果订单密钥不匹配,则会显示一个自定义错误通知(并根据需要重定向到商店页面)

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