不要保存在 WooCommerce 中显示通知的 Web 服务失败响应的订单

Don't save order on webservice failure response displaying a notice in WooCommerce

我需要将订单详细信息发送到公司内部数据库。如果对数据库的调用 return 成功响应,我希望能够仅保存订单。如果没有,我想停止订单并在结帐屏幕上显示一条消息。

我正在尝试连接到 woocommerce_checkout_create_order,如果响应为假,则 return 为假并停止订购过程:

add_action( 'woocommerce_checkout_create_order', 'process_new_order_details',  10, 2  );
  function process_new_order_details( $order ) {
     ......

     if($json_response->success == 1) {

       // We got a success message back from internal DB
       return $order;

     } else {

       // Could not save in internal DB
       return false;

  }

但是无论网络服务响应如何,它总是将订单保存到数据库中。有什么想法吗?

当 Web 服务响应未 "success" 显示自定义错误通知时,如何避免保存订单?

您将使用以下内容:

add_action( 'woocommerce_checkout_create_order', 'process_new_order_details',  10, 2  );
function process_new_order_details( $order, $data ) {

    # ...... / ......

    if($json_response->success == 1) {

        return $order;

    } else { // Throw an error notice 

        $error_text = __("My custom error notice", "wocommerce" );

        throw new Exception( $error_text );
    }
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。