我为woocommerce写了一个支付网关,我在付款成功后更改了订单状态。如果状态更改为处理i减少订单库存。一切顺利。
顺便提一下,在插件设置中,管理员可以更改成功付款的状态...处理或完成(针对实体或虚拟产品)
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;
}
}
在将订单状态更改为处理成功付款后,我将状态手册更改为已完成(backoffice woocommerce->订单),系统会再次减少订单库存。
我必须在成功付款后减少库存,以防止同一产品上的其他订单出现问题。如何修复此订单减少问题?
我找到了Woocommerce set_status。也许这有帮助... bool $ manual_update这是手动订单状态的变化吗?所以系统知道库存已经减少了???
答案 0 :(得分:0)
这与在woocommerce中被视为付费订单状态有关。您可以自定义付款订单状态列表。每次订单进入任何付款订单状态时,上述功能都会触发。
现在,您的第一直觉是截断付费状态列表。在少数情况下这可能是明智的,但在这种特殊情况下,本能是错误的。
您需要做的是检查当前的订单状态。如果状态不是付费状态,则只有这样才能触发减少库存功能。这假设订单不会在付费和未付款状态之间反复跳转。