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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在Woocommerce上的URL中手动更改订单键,则显示错误相关的知识,希望对你有一定的参考价值。

我已经开发了一个网页和集成的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

答案

以下功能将检查订单密钥的有效性。如果订单键不匹配,它将显示自定义错误通知(如果需要,可选择重定向到商店页面):

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

以上是关于如果在Woocommerce上的URL中手动更改订单键,则显示错误的主要内容,如果未能解决你的问题,请参考以下文章

如何更改订单列并将它们组合在一个pandas数据框中?

将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别

php [WooCommerce Core]将主链接更改为其他URL

php [WooCommerce Core]将主链接更改为其他URL

php [WooCommerce Core]将主链接更改为其他URL

Woocommerce 商店页面和档案中的附加按钮