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

Rau*_*pta 2 wordpress woocommerce hook-woocommerce

我想从那里客户可以直接支付他们的发票的URL,也应该有工作wc-cancelledwc-transaction-declined(定制订单状态).

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

我的问题
但问题是,每当他们更新doc文件和插件时,我也必须更新我的代码; 但如果我得到Pay Now URL,那么WooCommerce和Gateway Plugin将会处理它.

有更好的解决方案吗?

Rau*_*pta 6

我在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.
Run Code Online (Sandbox Code Playgroud)

但这个网址只适用于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);
}
Run Code Online (Sandbox Code Playgroud)

^^我在活动主题的functions.php文件中添加了这个.


参考:

  • 这是非常有用的......漂亮的镜头:) (2认同)