Я использую WC_Payment_Gateway для настройки своего платежного шлюза, который перенаправляет страницу оформления заказа на страницу банка для обработки кредитной карты.
После оплаты кредитной картой страница банка перенаправляет пользователя на страницу обратного вызова, которую я установил. Я провожу некоторую проверку статуса платежа, а затем перенаправляю пользователя на thankyou. php с помощью javascript.
<script>
function myFunction() {
window.location.href = "https://sib-skincare.com/checkout/order-received";
};
</script>
Затем отображается только простое успешное сообщение, подобное этому
After I check the thankyou.php page, I notice one thing. The page firstly check if ( $order ) exits then it shows more order detail information otherwise it will only show "Thank you. Your order has been received."
My question is when the $order variable is set? If I don't insert some code in the thankyou.php page to get order_id from session and instance $order object. The object will always be none therefore order detail are not shown.
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>