WooCommerce使用自定义网关API付款后清空购物车

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

我正在开发针对woocommerce的商家安全Unipay(MSU)的自定义API,并且需要在成功付款后更改数量。

这是过程:

  1. 顾客在购物袋中收集物品
  2. 当点击“全部付款”时,它会被重定向到需要填写信用卡信息的MSU
  3. 付款后,MSU将他送回PHP发送电子邮件和打印付款的网站。

一切运作良好,但无法找到钩子在哪里以及如何标记所有产品从购物卡支付和更改数量。

我怎样才能做到这一点?

谢谢

php wordpress woocommerce hook-woocommerce orders
2个回答
5
投票

通常在付款过程之后,客户被重定向到“谢谢”页面(或“收到订单”,客户可以查看他的付款订单)...通常情况下,购物车在某处清空(我不记得到底在哪里)。

因此,如果没有清空,你需要做例如(2个不同的钩子选项):

add_action( 'woocommerce_checkout_order_processed', 'order_received_empty_cart_action', 10, 1 );
// or 
// add_action( 'woocommerce_thankyou', 'order_received_empty_cart_action', 10, 1 );
function order_received_empty_cart_action( $order_id ){
    WC()->cart->empty_cart();
}

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

你必须测试一下,看看它是否方便......


1
投票

使用此代码,将跳过付款。 (VersiónWC3.5.7)。

我包括class-wc-checkout.php行983 - 989的代码:

   do_action( 'woocommerce_checkout_order_processed', $order_id, $posted_data, $order );

   if ( WC()->cart->needs_payment() ) {
       $this->process_order_payment( $order_id, $posted_data['payment_method'] );
   } else {
       $this->process_order_without_payment( $order_id );
   }

如果我们清理购物车,它需要其他路线:

 $this->process_order_without_payment( $order_id );
© www.soinside.com 2019 - 2024. All rights reserved.