我在印度有一家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 回答
基于IP的国家/地区无法解决您的问题...相反,您应该使用 the customer shipping country 而不是结算国家/地区 . 使用
global $woocommerce;
和$woocommerce->customer
也已过时,已被WC()->customer
取代 .所以你重新访问的代码将是:
代码位于活动子主题(或活动主题)的function.php文件中 . 经过测试和工作 . 这应该可以解决你的问题......