簡體   English   中英

WooCommerce下單成功掛鈎

[英]WooCommerce successful order hook

我正在嘗試在成功訂單上發送 email 所以直到現在我一直在使用woocommerce_thankyou鈎子,它看起來很完美。 但我發現,即使客戶嘗試向外部支付網關(信用卡支付)付款,即使銀行不接受付款,也會觸發它。

我可以使用哪個鈎子來涵蓋所有這些情況?

銀行轉賬、貨到付款、信用卡(僅在成功付款時)?

對於除銀行電匯、支票或貨到付款以外的所有支付網關的成功支付訂單,您可以使用位於WC_Order payment_complete()方法中的專用woocommerce_payment_complete掛鈎,而不是更通用的掛鈎woocommerce_thankyou ,例如:

add_action( 'woocommerce_payment_complete', 'action_payment_complete', 10, 2 );
function action_payment_complete( $order_id, $order ) {
    // Here add your code
}

請注意,您可以使用定義的$order_id$order function arguments。 而且這個鈎子只觸發一次,避免重復。


對於銀行電匯 (bacs)、支票 (check) 或貨到付款 (cod)付款方式,由於商店經理通過更改訂單狀態手動確認訂單已支付,您可以使用專用掛鈎woocommerce_order_status_changed ,如下所示。

add_action( 'woocommerce_order_status_changed', 'bacs_cheque_cod_payment_complete', 10, 4 );
function bacs_cheque_cod_payment_complete( $order_id, $old_status, $new_status, $order ) {
    // 1. For Bank wire and cheque payments
    if( in_array( $order->get_payment_method(), array('bacs', 'cheque') 
    && in_array( $new_status, array('processing', 'completed') 
    && ! $order->get_date_paid('edit') ) {
        // Do something
    } 

    // 2. For Cash on delivery payments
    if( 'cod' === $order->get_payment_method() && 'completed' === $new_status ) {
        // Do something
    } 
}

請注意,您可以使用定義的$order_id$order function arguments。 此外,此掛鈎將在訂單狀態更改時觸發一次,避免重復。


相關: 支付成功后,在Woocommerce中觸發了什么鈎子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM