多个PayPal帐户链接到一个Woocommerce安装

时间:2017-08-18 02:45:52

标签: php wordpress paypal woocommerce

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

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

我的问题:我在覆盖管理设置中输入的默认电子邮件时遇到问题,我似乎无法在数据库中找到此电子邮件。我假设有关此修改的文件位于: wp-content / plugins / woocommerce / includes / gateways / paypal 但更喜欢这样做wordpress方式与编辑核心文件,原因显而易见。在做了一些研究之后,我发现了下面显示的以下操作,但是这是为了继续结账按钮,我希望与进入Pay​​Pal按钮进行交互。我精通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   
}   

1 个答案:

答案 0 :(得分: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的args。

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;
}

总结一下,这只是一个例子。但是这两个钩子足以得到你需要的东西。