如何在 WooCommerce 中获取具有自定义订单状态的立即付款 URL?

问题描述 投票:0回答:2

我想获取客户可以直接支付发票费用的 URL,并且它应该与

wc-cancelled
wc-transaction-declined
自定义订单状态)一起使用。

我的解决方案
我现在正在做的是使用自定义获取参数创建一个自定义页面,并将整个付款流程作为网关提供商网站中的文档进行处理。

我的问题
但问题是每当他们更新他们的文档文件和插件时我也必须更新我的代码;但如果我收到 Pay Now URL,那么 WooCommerce 和网关插件将处理它。

有更好的解决办法吗?

php wordpress woocommerce hook-woocommerce
2个回答
18
投票

我在 WooCommerce

templates/emails/customer-invoice.php
文件中找到了解决方案。 我正在寻找的功能是
get_checkout_payment_url()

使用方法

$order = wc_get_order($order_id);
$pay_now_url = esc_url( $order->get_checkout_payment_url() );
echo $pay_now_url; //http://example.com/checkout/order-pay/{order_id}?pay_for_order=true&key={order_key}
//http://example.com will be site_url and protocol will depending upon SSL checkout WooCommerce setting.

但此网址仅适用于

pending
failed
订单状态;所以我用了过滤器
woocommerce_valid_order_statuses_for_payment

if (!function_exists('filter_woocommerce_valid_order_statuses_for_payment')) {
    //http://woocommerce.wp-a2z.org/oik_api/wc_abstract_orderneeds_payment/
    //http://hookr.io/filters/woocommerce_valid_order_statuses_for_payment/
    // define the woocommerce_valid_order_statuses_for_payment callback 
    function filter_woocommerce_valid_order_statuses_for_payment( $array, $instance ) {
        $my_order_status = array('cancelled', 'transaction-declined');
        return array_merge($array, $my_order_status);
    }
    // add the filter 
    add_filter('woocommerce_valid_order_statuses_for_payment', 'filter_woocommerce_valid_order_statuses_for_payment', 10, 2);
}

^^ 我将此添加到我的活动主题的

functions.php
文件中。


参考:


0
投票

您可以使用以下代码获取 url,但它仅适用于 wc-pending 状态订单,在 order_id 或 post_id 的帮助下

$order = wc_get_order($order_id);
echo $pay_now_url = $order->get_checkout_payment_url();
© www.soinside.com 2019 - 2024. All rights reserved.