我遇到一个奇怪的问题,有时会发生这种情况,当用户通过贝宝(paypal)支付课程费用时,订单状态从待处理变为处理中,而不是完成。
在此图像中收到了IPIN通知,但仍在处理阶段,可能导致此问题的原因。我试图复制此问题,但最终没有复制,有时会发生。
这是产品信息:
答案 0 :(得分:0)
如果您只销售虚拟产品,则可以通过以下方式将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文件中。经过测试和工作。
此挂钩仅在成功付款后触发,并且最初具有2个可能的订单状态值“处理中”或“完成”(取决于是否需要“处理”)。因此,此答案代码仅将针对Paypal支付网关(对于虚拟产品)的订单状态强制为“已完成”。 This hook位于
WC_Order
payment_complete()
方法上。
所有付款网关在成功付款时都使用payment_complete()
方法,而贝宝在WC_Gateway_Paypal_Response
类中使用它。