我有一个奇怪的问题,这种情况有时会发生,当用户通过PayPal支付课程时,订单状态从挂起变为处理,而不是完成。
在此图像中,IPIN通知已收到,但仍处于处理阶段,是什么导致了此问题。我试图复制这个问题,但它没有在我的末端复制,它有时会发生。
以下是产品信息:
产品是虚拟产品
库存被禁用
最佳答案
如果您只销售虚拟产品,则可以强制PayPal的“支付完成”功能的订单状态为“完成”,方法如下:
add_filter('woocommerce_payment_complete_order_status', 'paypal_payment_complete_order_status', 10, 2 );
function paypal_payment_complete_order_status( $status, $order_id, $order ){
if( $order->get_payment_method() === 'paypal' )
$status = 'completed';
return $status;
}
代码放在活动子主题(或活动主题)的function.php文件中。测试和工作。
此挂钩仅在成功付款时触发,最初有两个可能的订单状态值“处理”或“完成”(取决于是否需要“处理”)。所以这个答案代码只是强制订单状态为“完成”,目标是PayPal支付网关(用于虚拟产品)。This hook位于
WC_Order
payment_complete()
方法上。所有支付网关对成功的支付使用
payment_complete()
方法,贝宝对WC_Gateway_Paypal_Response
类使用它。关于php - 在Woocommerce中从Paypal成功付款后的订单状态处理问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53630694/