如果选择了特定的付款选项(woocommerce / php),则覆盖付款接收方

Posted

技术标签:

【中文标题】如果选择了特定的付款选项(woocommerce / php),则覆盖付款接收方【英文标题】:Overwrite payment receiver if specific payment option selected ( woocommerce / php ) 【发布时间】:2015-04-01 13:49:27 【问题描述】:

我真的很头疼这个问题,只是不知道它是如何完成的。

我需要检查客户选择了哪种付款方式。

这里的问题,我不知道在哪里“挂钩”它,所以只要选择另一个选项,它就会自行更新。 说:如果客户选择“Paypal”而不是预先选择的“银行转账”选项,它就会更新。

使用以下代码,我可以打印出所选的付款方式,bacs(银行转账),但它是标准的(在页面加载时预先选择),如果我选择 paypal 或其他付款方式,它不会改变。

add_filter( 'woocommerce_available_payment_gateways', 'filter_gateways', 1);
function filter_gateways( $gateways )
  global $woocommerce;

 $chosen_gateway = $woocommerce->session->chosen_payment_method;
 if ( $chosen_gateway == 'bacs' ) 
  echo $chosen_gateway;
 


  return $gateways;


但是,我想我只是不明白其中的钩子或某事。如果我点击“paypal”而不是“bacs”,此代码将不会得到更新。 它在页面加载时显示“bacs”并且不会改变。

我知道原因,它是在“woocommerce_available_payment_gateways”触发的,因为我设法禁用了购物车中特定产品的付款方式。

但我找不到“after_selected_pa​​yment_method”的钩子

如果我的文字不够清楚,我很抱歉,只是为了告诉你我想用完成的代码实现什么:

首先它应该检查所选的付款方式(Paypal、Bacs、..) 在此之后,它比较数据库中字符串条目(名称)的数量。 它比选择在数据库中出现频率更高的用户的(在此示例中)贝宝地址。如果相等,则使其随机化。如果差别很大,比如说 4 到 20 条,那么有 20 条的用户被选中的机会就更高。

如果选择了paypal,它会在结帐时覆盖paypal地址,如果选择了Bank-Transfer,它会覆盖银行数据等等。

我希望你明白我的意思。 如果有人可以帮助我,我将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

嗯,我做到了。一切都按预期工作!就写这么多,没人浪费时间回答,明天我会发布解决方案,只是想完成今天的工作。

【讨论】:

很高兴您找到了解决方案。您介意与社区分享吗?

以上是关于如果选择了特定的付款选项(woocommerce / php),则覆盖付款接收方的主要内容,如果未能解决你的问题,请参考以下文章

根据 Woocommerce 中选择的付款方式禁用运输方式

根据 Woocommerce 订单状态禁用特定付款方式

在 Woocommerce 中为特定支付网关添加自定义费用

Woocommerce 交付和付款选项 - 我的 php 代码有啥问题?

Woocommerce,当用户在结帐时选择一个选项时添加费用

如何从 Woocommerce 的“我的帐户”中删除“Paypal 付款”选项卡