Woocommerce-重定向到订单接收页面,但未显示订单详细信息

时间:2020-06-21 16:06:15

标签: php woocommerce

我实现WC_Payment_Gateway来定制我的付款网关,该网关将结帐页面重定向到银行页面以进行信用卡处理。

支付信用卡后,银行页面会将用户重定向到我设置的回叫页面。我进行了一些付款状态检查,然后使用javascript将用户重定向到thankyou.php。

 <script>
     function myFunction() {
         window.location.href = "https://sib-skincare.com/checkout/order-received";
     };
 </script>

然后它仅显示一条简单的成功消息,如下所示 enter image description here

我检查了thankyou.php页面后,发现一件事。该页面首先检查($ order)是否退出,然后显示更多订单详细信息,否则只会显示“谢谢。您的订单已收到。”

我的问题是何时设置$ order变量?如果我没有在thankyou.php页面中插入一些代码以从会话和实例$ order对象获取order_id。该对象将始终为空,因此不会显示订单明细。

https://github.com/woocommerce/woocommerce/blob/master/templates/checkout/thankyou.php

defined( 'ABSPATH' ) || exit;
?>

<div class="woocommerce-order">

<?php
if ( $order ) :
    do_action( 'woocommerce_before_thankyou', $order->get_id() );
    ......
    .......

<?php else : ?>

    <p class="woocommerce-notice woocommerce-notice--success woocommerce-thankyou-order-received"><?php echo apply_filters( 'woocommerce_thankyou_order_received_text', esc_html__( 'Thank you. Your order has been received.', 'woocommerce' ), null ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>

<?php endif; ?>

</div>

1 个答案:

答案 0 :(得分:1)

您可以确保在URL中传递这样的订单ID和安全密钥:

https:// site-url / checkout / order-received / 2878 /?key = wc_order_u9DmQCpfdEhcW

订单ID可以从您正在执行的过程中获取,如果您没有获取密钥,则可以从postmeta表中获取。

如果您像这样通过它,那么您将看到一个正常的感谢页面,其中包含订单的所有详细信息。

根据您当前的网址,网址中没有顺序标识,因此向您显示了一个通用的感谢页面。