2017-02-08 2 views
2

Я не знаю, возможно ли это, но нам нужно будет добавить несколько разных способов оплаты для Барселоны.Включение Способ оплаты на основе местоположения клиентов

Итак, наша идея заключается в том, что если клиент живет в районе Барселоны (Каталония), он увидит способ оплаты кредитной картой и банковский перевод, отличный от остальной Испании.

Возможно ли это с WooCommerce?

Спасибо.

ответ

3

Если вы хотите включить этот вид функции в WooCommerce, клиенты должны быть зарегистрироваться и войти на первом, так как это единственный способ получить они города место, прежде чем оформлять заказ.

Также вам нужно будет изменить некоторые настройки в WooCommerce, разрешив пользователям только регистрировать пользователей.

Тогда вам нужно будет добавить некоторые обязательные поля в процессе регистрации как город, почтовый индекс и страну.

Как только это будет сделано, будет легко включить/отключить платежные шлюзы на основе этих зарегистрированных полей клиента.

1) Для настройки регистрационных полей:
How to add custom fields in user registration on the “My Account” page

2) для платежных шлюзов/методы, основанные на этой информации клиента, Вы можете использовать пользовательский крючковатую функцию в woocommerce_available_payment_gateways фильтра крючка:

add_filter('woocommerce_available_payment_gateways', 'custom_payment_gateways_process'); 
function custom_payment_gateways_process($available_gateways) { 

    if (is_admin() || !is_user_logged_in()) 
     return $available_gateways; 

    $current_user_id = get_current_user_id(); 
    $user_meta = get_user_meta($current_user_id); 

    // User City, Postcode, State and Country code 
    $user_city = $user_meta['billing_city']; 
    $user_postcode = $user_meta['shipping_postcode']; 
    $user_State = $user_meta['shipping_state']; 
    $user_country = $user_meta['shipping_country']; 

    Disable Cash on delivery ('cod') method example for customer out of spain: 
    if (isset($available_gateways['cod']) && $user_country != 'ES') { 
     unset($available_gateways['cod']); 
    } 

    // You can set many conditions based on the user data 

    return $available_gateways; 
} 

Этот код является всего лишь примером, и вам необходимо будет установить правильные условия для целевых способов/шлюзов оплаты ...

Код находится в файле functions.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

+0

Есть a; отсутствует в '$ current_user_id = get_current_user_id()' и строка, которая должна быть комментарием «Отключить наложенным платежом ...». Но я не могу отредактировать сообщение, так как это подпадает под минимум 6 символов. – rlcabral

+0

@rlcabral Спасибо ... Я только что обновил свою ошибку. :) – LoicTheAztec