我在印度有一家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提前。
答案 0 :(得分:0)
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文件中。经过测试和工作。这应该可以解决你的问题......