2017-04-10 64 views
1

在WooCommerce之前获取结帐页面顺序ID,我需要得到order ID权WooCoommerce,付款前的结账页面,创建订单时。支付过程

我看所有的会议,并试图找出在订货时则用在了order_awaiting_payment会话付费,但我才去付款需要它。
所以我想一个解决方案,使顺序加载结帐页面时(事实上使其准备金)和结帐时实际完成更新。

如何之前,为了获得在结帐页面顺序ID去在WooCommerce付款?

我认为有一些挂钩这一点,但我不能找到它。

回答

4

您可以使用woocommerce_checkout_order_processed行动钩勾住了自定义的功能。
由于woocommerce 3.0+版本,这里地处process_checkout()功能对应的核心代码。

// Since WooCommerce version 3.0+ 
do_action('woocommerce_checkout_order_processed', $order_id, $posted_data, $order); 

及以下WooCommerce 3.0版本:

// Since WooCommerce version 2.1+ (before version 3.0+) 
do_action('woocommerce_checkout_order_processed', $order_id, $this->posted); 

所以有2案件取决于你所使用的woocommerce版本:

由于WooCommerce 3.0+可以使用2您的挂钩功能中的其他参数,您将不需要创建订单对象的实例,因为您获得$order已经作为一个参数。
您可以还直接通过$posted_data参数来访问发布的数据。

add_action('woocommerce_checkout_order_processed', 'action_checkout_order_processed', 10, 3); 
function action_checkout_order_processed($order_id, $posted_data, $order) { 
    // Do something 
} 

由于WooCommerce 2.1+(WooCommerce 3之前。0),你只有$order_id作为参数,所以你可能会需要得到$order物体wc_get_order()功能实例:

add_action('woocommerce_checkout_order_processed', 'action_checkout_order_processed', 10, 1); 
function action_checkout_order_processed($order_id) { 
    // get an instance of the order object 
    $order = wc_get_order($order_id); 

    // Do something 
} 

的代码放在function.php文件您的活动孩子主题(或主题)或任何插件文件中。

0

如果你只是看看class-wc-checkout.php文件的行号935,你会看到有一个动作woocommerce_checkout_order_processed其通过$order_id作为参数。

所以这应该为你工作:

add_action('woocommerce_checkout_order_processed', 'wh_pre_paymentcall'); 

function wh_pre_paymentcall($order_id) { 

    //create an order instance 
    $order = wc_get_order($order_id); 
    //$payment_method = $order->payment_method_title; 
    //$status = $order->get_status(); 

    // write your custom logic over here. 
} 

代码放在functions.php文件的活跃儿童主题(或主题)的。或者也可以在任何插件php文件中使用。

相关问题:WooCommerce Get Order Product Details Before Payment in Plugin(也可以参考意见)

希望这有助于!

+0

感谢您的回复,但实际上我需要将order_id传递给结帐页面中的iframe,所以我需要在结帐页面加载时访问它。我认为这个钩子在付款之前就会采取行动,并且当我想要这个钩子时不能访问order_id –