如何修改WooCommerce PayPal PLUS插件订单取消网址?

时间:2019-06-29 20:34:47

标签: php wordpress woocommerce paypal

我的商店目前有个大问题。几天前,我改用PayPal PLUS来为我的客户提供信用卡付款以及所有这些东西。

这是插件:https://de.wordpress.org/plugins/woo-paypalplus/

现在我下订单但取消付款时,PayPal会重定向回商店。在商店(WooCommerce),我无法通过挂钩定义取消订单的网址:

add_filter( 'woocommerce_get_cancel_order_url', 'cancel_order_url', PHP_INT_MAX, 1 );
add_filter( 'woocommerce_get_cancel_order_url_raw', 'cancel_order_url', PHP_INT_MAX, 1 );
function cancel_order_url( $url ) {

    // Default to home url
    $return = get_permalink( wc_get_page_id( 'shop' ) );

    // Extract order id and use order success page as return url
    $search = preg_match( '/order_id=(\d+)/', $url, $matches );

    if ( $search && isset( $matches[1] ) ) {
        $order_id = absint( $matches[1] );
        $order    = wc_get_order( $order_id );
        $return   = apply_filters( 'woocommerce_attempt_order_cancellation_url', add_query_arg( array( 'retry' => true ), $order->get_checkout_order_received_url(), $order ) );
    }

    return $return;
}

此过滤器允许我为每个订单设置动态网址。在测试了新的支付网关之后,我感到困惑,因为我回到了在钩子上设置的错误取消页面。

因此,我检查了PayPal PLUS插件设置,发现其中存在一个下拉列表,可以在其中选择一些URL或输入静态URL:

enter image description here

检查PayPal PLUS插件的代码后,我可以说他们没有使用此钩子。取而代之的是,他们使用了这种功能:

/**
 * @inheritdoc
 */
const OPTION_CANCEL_URL_NAME = 'cancel_url';
public function cancelUrl()
{
    $option = $this->get_option(Storable::OPTION_CANCEL_URL_NAME, '');
    switch ($option) {
        case 'cart':
            $url = wc_get_cart_url();
            break;
        case 'checkout':
            $url = wc_get_checkout_url();
            break;
        case 'account':
            $url = wc_get_account_endpoint_url('dashboard');
            break;
        case 'custom':
            $url = esc_url($this->cancelCustomUrl());
            break;
        case 'shop':
        default:
            $url = get_permalink(wc_get_page_id('shop'));
            break;
    }
    return $url;
}

这是插件中的接口Storable的一部分。因此,我的问题是,现在是否有人对这个插件有一定的经验,并且知道我是否可以以某种方式重新编写其功能,以使我的代码再次正常工作?

0 个答案:

没有答案