【问题标题】:Multiple PayPal accounts linked to ONE installation of Woocommerce多个 PayPal 帐户链接到 ONE 的 Woocommerce 安装
【发布时间】:2018-01-26 14:44:27
【问题描述】:

我的问题:客户有 12 个地点,每个地点是不同的公司,因此每个公司都有不同的 PayPal 帐户。默认情况下,woocommerce 仅支持输入一封电子邮件来处理付款。目标是使用一个 wordpress / woocommerce 安装,然后将用户引导到与他们在结帐时选择的位置相关联的 PayPal 帐户。

我的理论/尝试:最初我想通过设置一个变体来实现此功能,以便用户可以选择一个位置,然后将参数传递给 URL。该参数稍后将在 PHP 中用于覆盖默认电子邮件。

我的问题:我无法覆盖在管理员设置中输入的默认电子邮件,我似乎无法在数据库中找到此电子邮件。我假设与此修改有关的文件位于:wp-content/plugins/woocommerce/includes/gateways/paypal 但出于显而易见的原因,我更喜欢使用 wordpress 方式而不是编辑核心文件。在做了一些研究之后,我发现了下面显示的以下操作,但这是用于继续结帐按钮,我希望与继续到 PayPal 按钮进行交互。我精通 PHP,但在 WordPress 开发方面不是最好的。我认为这是一个受欢迎的问题,因为大多数特许经营权都会处理这种情况,但我对有关此主题的信息量感到不快。如果有人能指出我征服这项任务的正确方向,将不胜感激!

remove_action('woocommerce_proceed_to_checkout','woocommerce_button_proceed_to_checkout', 20);

add_action('woocommerce_proceed_to_checkout', 'change_url_to_checkout', 20);

function change_url_to_checkout(){
        $extra_url = 'put_your_extra_page_url_here';
        ?>
        <a href="<?php echo $extra_url; ?>" class="checkout-button button alt wc-forward"><?php _e( 'Proceed to Checkout', 'woocommerce' ); ?></a>
        <?php   
}   

【问题讨论】:

    标签: php wordpress paypal woocommerce


    【解决方案1】:

    我可以看到这里要写两个函数。

     1. 在创建订单时更改订单数据。这是我们保存所需电子邮件的地方。

    add_action( 'woocommerce_checkout_update_order_meta', 'woocommerce_checkout_update_order_meta' );
    function woocommerce_checkout_update_order_meta( $order_id ) {
        $email = 'paypal@location1.com';
        // do something here as to use the right email.
        // you have $order_id.
        // can be used as:
        // $order = wc_get_order( $order_id );
        // $order->get_billing_address_1() to get the address to check order address.
        // or use $_POST['location'] if ever you posted some data.
        update_post_meta( $order_id, '_alternative_paypal_email', $email );
    }
    

     2. 然后使用 woocommerce_paypal_args 更改传递给 paypal 的参数。

    add_filter( 'woocommerce_paypal_args', 'woocommerce_paypal_args', 10, 2 );
    function woocommerce_paypal_args( $paypal_args, $order ) {
        $email = get_post_meta( $order->get_id(), '_alternative_paypal_email', true );
        if ( !empty( $email ) ) {
            $paypal_args['business'] = $email;
        }
        return $paypal_args;
    }
    

    总而言之,这只是一个示例。但是这两个钩子足以满足您的需求。

    【讨论】:

    • 你在哪里使用'_alternative_paypal_email',你创建了这个字段吗?还是订单信息中存在?
    • 这个解决方案对您有用吗?我正在考虑做同样的事情,但我想知道 PayPal 是否允许使用一组 API 凭据将付款发送到未在 paypal 中链接的不同 paypal(电子邮件)帐户?
    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2013-10-27
    • 2015-12-11
    • 2016-01-18
    相关资源
    最近更新 更多