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

我实现 WC_Payment_Gateway 来自定义我的支付网关,将结帐页面重定向到银行页面以进行信用卡流程。

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

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

然后它只显示一条简单的成功消息,如下所示

http://img1.mukewang.com/6496b4990001084b25521289.jpg

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


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


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>


守候你守候我
浏览 221回答 1
1回答

PIPIONE

您可以确保在 url 中传递订单 ID 和安全密钥,如下所示:https://site-url/checkout/order-received/2878/?key=wc_order_u9DmQCpfdEhcW您可以从正在执行的过程中获取订单 ID,如果您没有获取密钥,则可以从 postmeta 表中获取它。如果您像这样通过它,那么您将看到一个正常的感谢页面,其中包含订单的所有详细信息。根据您当前的网址,网址中没有订单标识,因此它会向您显示一个通用的感谢页面。
打开App,查看更多内容
随时随地看视频慕课网APP