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

时间:2017-03-15 19:48:52

标签: php wordpress woocommerce hook-woocommerce orders

我正在使用针对商业智能商品的商家安全支付宝(MSU)的自定义API,并且需要在成功付款后更改数量。

以下是流程:

  1. 客户在购物袋中收集物品
  2. 点击"全部支付"它被重定向到需要填写信用卡信息的MSU
  3. 付款后,MSU将他送回PHP发送电子邮件和打印付款信息的网站。
  4. 一切运作良好,但无法找到从购物卡支付和更改数量标记所有产品的地点和方式。

    我该怎么做?

    由于

2 个答案:

答案 0 :(得分: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 :(得分:1)

使用此代码,付款将被跳过。 (VersiónWC 3.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 );
   }

如果我们清洁购物车,它将采用else路线:

 $this->process_order_without_payment( $order_id );