• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Отмена заказа при неоплате

alyoha

Новичок
Привет.
Установил интеркассу и через тестовую отмену платежа у меня отменился сам заказ.
Помогите, как можно изменить это.
Что хотелось бы:
1. После неудачной оплаты переадресовать клиента на выбор способа оплаты.
2. Отправлять такие заказы на email, например с комментарием оплата не удалась.

Вот что нашел по коду:

includes/class-wc-form-handler.php

/**
* Place a previous order again.
*
* @deprecated 3.5.0 Logic moved to cart session handling.
*/
public static function order_again() {
wc_deprecated_function( 'WC_Form_Handler::eek:rder_again', '3.5', 'This method should not be called manually.' );
}

/**
* Cancel a pending order.
*/
public static function cancel_order() {
if (
isset( $_GET['cancel_order'] ) &&
isset( $_GET['order'] ) &&
isset( $_GET['order_id'] ) &&
( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'woocommerce-cancel_order' ) ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
) {
wc_nocache_headers();

$order_key = wp_unslash( $_GET['order'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$order_id = absint( $_GET['order_id'] );
$order = wc_get_order( $order_id );
$user_can_cancel = current_user_can( 'cancel_order', $order_id );
$order_can_cancel = $order->has_status( apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) );
$redirect = isset( $_GET['redirect'] ) ? wp_unslash( $_GET['redirect'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

if ( $user_can_cancel && $order_can_cancel && $order->get_id() === $order_id && hash_equals( $order->get_order_key(), $order_key ) ) {

// Cancel the order + restore stock.
WC()->session->set( 'order_awaiting_payment', false );
$order->update_status( 'cancelled', __( 'Order cancelled by customer.', 'woocommerce' ) );

wc_add_notice( apply_filters( 'woocommerce_order_cancelled_notice', __( 'Your order was cancelled.', 'woocommerce' ) ), apply_filters( 'woocommerce_order_cancelled_notice_type', 'notice' ) );

do_action( 'woocommerce_cancelled_order', $order->get_id() );

} elseif ( $user_can_cancel && ! $order_can_cancel ) {
wc_add_notice( __( 'Your order can no longer be cancelled. Please contact us if you need assistance.', 'woocommerce' ), 'error' );
} else {
wc_add_notice( __( 'Invalid order.', 'woocommerce' ), 'error' );
}

if ( $redirect ) {
wp_safe_redirect( $redirect );
exit;
}
}
}
 

marr

Специалист
Местный
Что хотелось бы:
1. После неудачной оплаты переадресовать клиента на выбор способа оплаты.
2. Отправлять такие заказы на email, например с комментарием оплата не удалась.

Можете попробовать хуками менять статус для неудачных заказов на "в ожидании оплаты" и делать рассылку со ссылкой на оплату.

Зы. Вот это улыбнуло)
1603813989012.png
 
Последнее редактирование:

alyoha

Новичок
Можете попробовать хуками менять статус для неудачных заказав на "в ожидании оплаты" и делать рассылку со ссылкой на оплату.

Зы. Вот это улыбнуло)
Посмотреть вложение 5414
Не знаю как их писать от слова совсем. Может где то есть описание всего этого или видео. Или может напишите пример на моем пример. Ну и тавтология:)
 

marr

Специалист
Местный
Не знаю как их писать от слова совсем. Может где то есть описание всего этого или видео
К сожалению не подскажу, есть ли такие уроки. Хуки есть в документации
Или обращайтесь к специалистам.
 
Сверху Снизу