如何在 Woocommerce 中动态更改 PayPal 地址?

Posted

技术标签:

【中文标题】如何在 Woocommerce 中动态更改 PayPal 地址?【英文标题】:How to dynamically change the PayPal address in Woocommerce? 【发布时间】:2016-07-01 19:55:19 【问题描述】:

我正在尝试更改 Woocommerce 使用的 PayPal 地址,具体取决于他们所在的页面。我目前只有 5 件产品,所有 5 件产品都需要使用不同的 PayPal 地址。

我发现了这个可以更改 Paypal 地址的钩子,虽然不太清楚如何准确添加它(代码显然是 3 岁)。

$paypal_args = apply_filters( 'woocommerce_paypal_args', $paypal_args );
add_filter( 'woocommerce_paypal_args' , 'custom_override_paypal_email' );

function custom_override_paypal_email( $paypal_args ) 
    $paypal_args['business'] = 'paypalemail@domain.com';
    print_r( $paypal_args['business'] );
    return $paypal_args;

如何根据用户所在的页面/产品使用此挂钩更改 Paypal 地址?

【问题讨论】:

如果所有产品都在购物车中怎么办? @Reigel - 我直接引导用户结帐而不是购物车 但即使您指示他们结帐,他们仍然可以访问其他产品并将其添加到购物车... @Reigel - 非常正确。每次添加新产品时,我都需要清空购物车。 【参考方案1】:

我检查并发现woocommerce_paypal_args 有两个参数,设置和顺序。所以根据订单,我们可以检查它有什么产品并使用适当的电子邮件。

add_filter( 'woocommerce_paypal_args' , 'custom_override_paypal_email', 10, 2 );

function custom_override_paypal_email( $paypal_args, $order ) 
    foreach ( $order->get_items() as $item ) 
       switch( $item['product_id'] ) 
           case 561:
             $paypal_args['business'] = 'paypalemail1@domain.com';
             break;
           case 562:
             $paypal_args['business'] = 'paypalemail2@domain.com';
             break;
       
    

    return $paypal_args;

请注意,您必须确保购物车中只能有一件商品。如果购物车中有超过 1 个产品,这将使用 foreach 循环中最后找到的产品。以上代码仅供参考,请相应更改。

【讨论】:

看起来很不错。我可以把它放在我的 Wordpress functions.php 文件中吗? 刚刚用沙盒账户测试过,效果很好。将在 21 小时内奖励赏金。谢谢。 您是否知道将确认电子邮件发送到该特定电子邮件地址的挂钩? @Reigel 在switch( $item['prouct_id'] ) 不是switch( $item['product_id'] ) ? :) 这种方法使用安全吗?

以上是关于如何在 Woocommerce 中动态更改 PayPal 地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 woocommerce 中获取付款响应网址?

如何收听 Google Wallet / Android Pay Fragment 中的更改按钮?

Woocommerce 结帐页面上的额外贝宝费用

php WooCommerce:将Apple Pay按钮移至客户详细信息表单下方

php integracióndewoocommerce con pay membership pro #wordpress #woocommerce

WooCommerce 订阅 - PayPal 参考交易