当有人在WooCommerce结账页面输入邮政编码或邮政编码时,我如何更新价格?

时间:2020-04-18 作者:Husnain Ahmed

所以,我正在使用我的自定义插件,在该插件中,我需要在woocommerce结账页面上获取邮政编码或邮政编码,并添加我的额外价格和付款。我尝试使用AJAX,它获取邮政编码并将我的价格添加到其中并更新价格。

/**
Here my AJAX Call
**/
global $woocommerce;
//$additional_amount is coming dynamically via an external API
$additional_amount = 5.00; // can vary depending upon zip code
number_format((float)$additional_amount, 2, \'.\', \'\');
$woocommerce->cart->set_total($woocommerce->cart->total + $additional_amount);
然后我将此总数发送给我的AJAX回调,如下所示:

$arr[\'amount\'] = $woocommerce->cart->get_total();
echo json_encode($arr);exit();
它向我显示更新的价格,但当我使用stripe或任何其他支付网关进行支付时,它会向我收取旧价格。

我也这样试过

$fee = 5.00;
$woocommerce->cart->add_fee( \'Handling\', $fee, true, \'standard\' );
但它也不起作用。是否有一种方法可以使用AJAX或任何其他方式将我的额外价格添加到结帐金额中。我正在使用Wordpress 5.4和Woocommerce 4.0.1版

1 个回复
SO网友:Husnain Ahmed

由于我试图向我的费用中添加一些额外金额,因此无法更新费用金额。我尝试的代码是使用AJAX调用的:

$woocommerce->cart->set_total($woocommerce->cart->total + $additional_amount);
但真正的问题是我的付款方式,而不是购物车的价格。所以,我使用一个过滤器解决了这个问题,该过滤器发生在费用金额即将发送到数据库和支付网关之前。对我有效的代码是:

function additional_amount($order){
    $total_additional_amount = $amount1 + $amount 2;
    $total_additional_amount = round($total_additional_amount, 2);
    $order->set_total( $total_amount);
}
add_filter( \'woocommerce_checkout_create_order\', \'additional_amount\', 10, 1 );
使用此过滤器,我可以更新实际费用金额。我希望这会对某人有所帮助。

相关推荐

在主机的PHP升级后开始收到警告消息

我使用的儿童主题是2122(客户总是对的)。我最近开始在仪表板顶部和仪表板的Jetpack面板上看到以下警告机器人:“警告:在第81行的/home/leytongr/public\\u html/wp-content/plugins/theme-logo-plugin/themelogo.PHP中使用未定义的常量register\\u设置-假定“register\\u设置”(这将在PHP的未来版本中引发错误)。”这是从第80行开始的代码,您将看到我在这里提出查询的原因:function tl_init()