Как отключить способы оплаты на основе IP-адреса клиента в woocommerce - PullRequest
0 голосов
/ 12 мая 2018

У меня есть магазин woocommerce в Индии, а также он работает с Европой и Америкой. Поэтому я хочу отключить способы оплаты на основе IP-адреса клиента. Я включил два варианта оплаты: Payumoney (для Индии) и Paypal (для остальных стран). Я использую фрагмент, который отключает выбранный способ оплаты в зависимости от страны выставления счета.

function payment_gateway_disable_country( $available_gateways ) {global $woocommerce;
if ( isset( $available_gateways['pumcp'] ) && $woocommerce->customer->get_country() <> 'IN' ) {
unset( $available_gateways['pumcp'] );
} else if ( isset( $available_gateways['paypal'] ) && $woocommerce->customer->get_country() == 'IN' ) {
unset( $available_gateways['paypal'] );
}
return $available_gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country' );

Теперь проблема с этим фрагментом заключается в том, что если кто-то заказывает из США и выбирает адрес доставки в Индию. Затем они должны выбрать PayUmoney в качестве способа оплаты. А теперь удобная комиссия PayUmoney для международного платежа составляет около 10%. и наоборот. Да, я знаю, что этот фрагмент работает с платежным адресом. Таким образом, клиенты получат свой платежный адрес на основе США и адрес доставки в Индию. Но иногда клиенты заполняют платежный адрес тем же адресом доставки. Тогда этот фрагмент вызывает проблему. Поэтому я подумал о том, чтобы переключать варианты оплаты на основе IP.
Спасибо заранее.

1 Ответ

0 голосов
/ 12 мая 2018

Ip-страна не решит вашу проблему ... вместо этого вы должны использовать страну доставки клиента вместо страны выставления счета. Также использование global $woocommerce; с $woocommerce->customer устарело и было заменено на WC()->customer.

Итак, ваш повторный код будет:

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country', 20, 1 );
function payment_gateway_disable_country( $available_gateways ) {
    if ( isset( $available_gateways['pumcp'] ) && WC()->customer->get_shipping_country() <> 'IN' ) {
        unset( $available_gateways['pumcp'] );
    } else if ( isset( $available_gateways['paypal'] ) && WC()->customer->get_country() == 'IN' ) {
        unset( $available_gateways['paypal'] );
    }
    return $available_gateways;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает. Это должно решить вашу проблему ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...