我为woocommerce编写了一个付款网关,我在付款后更改订单状态。如果状态更改为处理,则减少订单库存。一切顺利。
顺便说一下,插件设置中的管理员可以更改成功付款的状态...处理或完成(用于物理或虚拟产品(
function setOrderPaid($OrderID, $status){
$order = new WC_Order($OrderID);
if(!$order){
return false;
}else{
$order->update_status($status);
if($status=="processing") $order->reduce_order_stock();
WC()->cart->empty_cart();
return true;
}
}
成功付款后,将订单状态更改为处理后,我去将状态手册更改为已完成(退缩WooCommerce->订单(,并且系统再次减少了订单库存。
我必须在成功付款后减少股票,以防止同一产品上其他订单的问题。如何解决此订单减少问题?
我找到了这个woocommerce set_status。也许这会有所帮助... bool $ manual_update这是手动订单状态更改吗?因此,系统知道库存已经减少了???
这与WooCommerce中所谓的付费订单状态有关。您可以自定义付费订单状态列表。每当订单输入任何付费订单状态时,上述功能将触发。
现在,您的第一个本能是截断付费状态列表。在少数情况下,这可能是建议的,但是在这种特殊情况下,本能是错误的。
您需要做的是检查当前订单状态。如果状态不是付费状态,则只需触发减少库存功能。这是假设该订单不会反复在付费和无薪状态之间跳跃。