После успешной оплаты через платежный шлюз Razorpay мне нужно перенаправить на мою специально созданную страницу благодарности вместо URL-адреса перенаправления по умолчанию для плагина платежного шлюза Razorpay.
Моя проблема проиллюстрирована: записанное на экране видео
Вот что я пробовал в файле function.php:
/* Redirect WooCommerce to a custom page after checkout */
add_action( 'woocommerce_thankyou', 're_redirect_woo_checkout');
function re_redirect_woo_checkout( $order_id ){
$order = wc_get_order( $order_id );
$url = 'custom thankyou page url here';
if ( ! $order->has_status( 'failed' ) ) {
wp_safe_redirect( $url );
exit;
}
}
Он работает с продуктом с нулевой оплатой, которому не требуется шлюз razorpay для всплывающего окна для оплаты, он автоматически перенаправляется мгновенно при нажатии кнопки «Перейти к оформлению заказа». Но при нажатии кнопки «Перейти к оформлению платежа выше нулевой стоимости» всплывающее окно шлюза razorpay требуется для оплаты через другую платежную систему. После успешной оплаты через платежный шлюз razorpay оно не перенаправляется на выбранную мной конкретную страницу (пользовательскую страницу благодарности).
🤔 А знаете ли вы, что...
PHP является интерпретируемым языком программирования.
add_action( 'template_redirect', 'wc_thank_you_redirect' );
function wc_thank_you_redirect(){
if ( isset( $_GET['key'] ) && is_wc_endpoint_url( 'order-received' ) ) { //change order-received to your endpoint if you will change it in the future
$order_id = wc_get_order_id_by_order_key( $_GET['key'] );
if ( ! empty( $order_id ) ) {
$order = wc_get_order( $order_id );
$order_status = $order->get_status();
if ('failed' == $order_status ) { //failed order status
wp_redirect( 'your custom failed page url here' ); //change url here
exit;
} else {
wp_redirect( 'your custom thank you page url here' ); //change url here for other statuses redirect
exit;
}
}
}
}
//code end for redirect after order received