我实现 WC_Payment_Gateway 来自定义我的支付网关,将结帐页面重定向到银行页面以进行信用卡流程。
信用卡付款后,银行页面将用户重定向到我设置的回调页面。我做了一些付款状态检查,然后使用 javascript 将用户重定向到thankyou.php。
<script> function myFunction() { window.location.href = "https://sib-skincare.com/checkout/order-received"; }; </script>
然后它只显示一条简单的成功消息,如下所示
在检查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>
PIPIONE