@macstuff

Как отключить метод оплаты, если не присвоен определенный статус?

Привет! Необходимо было реализовать двухстадийную оплату. Метод "наличными" переназвал в "для подтверждения" и через js стал скрывать Яндекс кассу, но этот способ работает только на checkout, при оплате уже используется checkout/order-pay и там показывает все способы оплаты и пользователи часто путают и опять выбирают для подтверждения.
Как написать хук для отключения оплаты, если статус не "в ожидание оплаты" и для разрешения, если "в ожидание оплаты".
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
@macstuff Автор вопроса
Ниже найденый вариант на другом сайте. Есть один момент, используется лишний метод оплаты PayPal, возможно поможете его исключить. Способ рабочий и можно его использовать
// Show/hide payment gateways
add_filter( 'woocommerce_available_payment_gateways', 'conditionally_hide_payment_gateways', 100, 1 );
function conditionally_hide_payment_gateways( $available_gateways ) {
    // 1. On Order Pay page
    if( is_wc_endpoint_url( 'order-pay' ) ) {
        // Get an instance of the WC_Order Object
        $order = wc_get_order( get_query_var('order-pay') );

        // Loop through payment gateways 'pending', 'on-hold', 'processing'
        foreach( $available_gateways as $gateways_id => $gateways ){
            // Keep paypal only for "pending" order status
            if( $gateways_id !== 'paypal' && $order->has_status('pending') ) {
                unset($available_gateways['cheque']);
                unset($available_gateways['bacs']);
                unset($available_gateways['paypal']);
            }
        }
    }
    // 2. On Checkout page
    elseif( is_checkout() && ! is_wc_endpoint_url() ) {
        // Disable paypal
        if( isset($available_gateways['paypal']) ) {
            unset($available_gateways['modulbank']);
            unset($available_gateways['kassa']);
            unset($available_gateways['paypal']);
        }
    }
    return $available_gateways;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы