Я хочу отображать полосу в зависимости от зоны доставки.
Зона доставки 1 состоит из почтового индекса 3000.
Зона доставки 2 состоит из почтового индекса 4000.
пример:
Должен отображаться почтовый индекс 3000. Stripe.
Почтовый индекс 4000 или любые другие почтовые индексы должны скрывать Stripe.
В настоящее время я использую вебхук woocommerce_available_pay_gateways для отображения.
Код: Выделить всё
add_filter('woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method');
Код: Выделить всё
function payment_gateways_based_on_chosen_shipping_method($available_gateways)
{
$shouldReturnAll = true;
if( is_checkout() && ! is_wc_endpoint_url() && WC()->cart ) {
$shouldReturnAll = false;
}
if($shouldReturnAll){
return $available_gateways;
}
$chosen_shipping_methods = (array) WC()->session->get('chosen_shipping_methods');
$insideSelectiveDelivery = in_array('flat_rate:1', $chosen_shipping_methods); // This should display Stripe
$insideAustraliaDelivery = in_array('flat_rate:6', $chosen_shipping_methods); // This should hide Stripe
$outsideAustraliaDelivery = !$insideSelectiveDelivery && !$insideAustraliaDelivery;
if($outsideAustraliaDelivery && !$isLocalPickup){
return [];
}
......
if($insideSelectiveDelivery){
unset($available_gateways['cod']);
} else {
unset($available_gateways['stripe']);
}
return $available_gateways;
}
Это также работает, если почтовый индекс равен 3000 -> меняется на 3001 (скрывает его) -> меняется на 3000 (показывает).
Проблема возникает, если пользователь вводит почтовый индекс, отличный от 3000 (например: 3001) и снова меняется на 3000.
В это время Stripe не отображается.
Я также пробовал использовать
Код: Выделить всё
$available_gateways['stripe']->settings['enabled'] = 'no';
$available_gateways['stripe']->enabled = 'no';
Код: Выделить всё
$available_gateways['stripe']->settings['enabled'] = 'yes';
$available_gateways['stripe']->enabled = 'yes';
Отображается следующая ошибка:
Нет доступных способов оплаты. Пожалуйста, свяжитесь с нами для помощи в размещении заказа.
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-postcode
Мобильная версия