После успешной оплаты через платежный шлюз 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 оно не перенаправляется на выбранную мной конкретную страницу (пользовательскую страницу благодарности).
при успешной оплате продукта с нулевой стоимостью, а также продукта с нулевой стоимостью, в обоих случаях я вижу его перенаправление на страницу полученного заказа, но через несколько секунд в продукте с затратами на обработку и завершение платежа уходит несколько секунд, как только он подтвердит, что он завершен, а затем он автоматически получает перенаправляется на страницу панели управления и не получает перенаправления в продукте с нулевой стоимостью. поэтому я не могу контролировать перенаправление URL-адреса после страницы получения заказа.
Я нашел какое-то решение, которое я нашел, перенаправляя кнопку включения/отключения перенаправления в плагине Tutor lms, поэтому, если я включу эту опцию, она будет работать правильно, перенаправляясь на страницу панели управления зарегистрированного курса, если отключить ее, она ничего не делает, только показывает страницу полученного заказа после завершения оплаты. но я не могу понять, как эта функция у них это получается, какой код они написали.drive.google.com/file/d/1hAOMQlpNymSWROeQ07pKD6dE-LtwXZGS/…
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
я пытался реализовать код вашего ответа, но не получилось: drive.google.com/file/d/1Bgyv-FWbZrQA4ibimt8JIGBZrLqSg2Ju/…