如何在woocommerce中禁用基于客户IP的付款选项

时间:2018-05-12 12:11:51

标签: php wordpress woocommerce payment-gateway hook-woocommerce

我在印度有一家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切换付款方式 Thanx提前。

1 个答案:

答案 0 :(得分:0)

基于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文件中。经过测试和工作。这应该可以解决你的问题......